allegro二次开发语法大全

allegro二次开发语法大全
allegro二次开发语法大全

allegro skill简介

1. AXL-SKILL

专用于allegro的skill被称为AXL-SKILL,只有使用这些专用的函数才可以直接访问allegro的database。结合skill

语法和这些专用函数可以编写出实现各种功能的命令。专用于allegro的skill都是以axl开头,比如axlClearSelSet()。

2. 运行AXL-SKILL

在allegro中输入skill就得到了AXL-SKILL的运行环境,在这样的环境中可以直接调用AXL-SKILL命令/函数,另外

输入set telskill可以得到一个尺寸大小可调的skill开发窗口。(万一没有弹出窗口,尝试在allegro菜单里面,

选择setup->user prference->skill->telskill----OK)

3. AXL-SKILL Database

allegro中的每个对象object(比如IC元件,net)都有一个对应的dbid(database identifiers),AXL-SKILL操作allegro

的也正是这些dbid。 dbid对象:在不同的级别上的dbid是不一样的,比如在Design以及包含的database对象有Property Dictionary,Lines,Text,Polygons,Shapes,Property Definitions,DRCs,Vias that are Padstack object types,Symbols that are Symdef object types,Components,Nets;而在Symbol级别上则是PPins that are Padstack object types,Vias that are Padstack object types,Lines,Arcs,Text,Polygons,Shapes。

allegro skill database对象类型1. database对象描述

1.1 对象类型 Figure objects: Arcs,Branches ,Design Files,Drcs,Lines,Paths ,Polygons ,Ppins,Shapes ,Symbols ,Tees,Vias,Pads,Padstacks,Symdefs; Logical objects:Components ,Functions,Function Pins,Nets; Property dictionary objects; Parameter objects:Design,Display,Layer Group,Layer,Textblock Group,Textblock。 1.2 基本操作尽管有如此之

多的类型,但是在allegro中的操作其实就是找到合适的database元素,然后对其操作就好了。只要保证被访问的元

素的dbid有效,就可以对其进行处理。

2. Figure类型

Figure在allegro PCB Editer里面一般被成为几何形状,一个Figure类型的元素通常具有如下的属性。

常见的Figure属性

属性名类型描述 bBox bbox Figure’s bounding box branch dbid For etch, the figure’s branch parent layer t_layer Layer

of figure, nil if object is multi-layer parent dbid Nonconnective owner

net dbid Net object if figure is associated with a net

注意: 对于所有空(dummy)网络的Figure, 它们的net属性都是"", 而不是nil。

Figure有很多的类型,每个类型都有很多个属性,具体的信息请参考algroskill.pdf文档的第二章,这里只列出其中的

Line。Line的属性列表(除Figure类型常见的属性以外的部分)

属性名类型描述 isEtch t/nil t = a CLINE; nil = a LINE lineType s_type symbol: horizontal, vertical, odd objType string Type

of object, in this case "line" parent dbid Path, polygon, or shape

startEnd l_point Start and end points width float Width of line

3. Logical类型

Logical类型其实就是和电气有关的属性,比如网络连接(net),电子器件{component)等。 Logical类型通常都具

有objType, prop, and readOnly3种属性。如果你选择了一个component,那么它的objType就是component,如

果选择的是pin,则objType属性值就是pin......

一个简单的例子Bus(总线),其它的Logical类型请参考Cadence的algroskill.pdf文件

属性名类型描述

groupMembers l_dbid List of xnets of the bus

name string Name of the bus objType string “group” type string “BUS”

4. Property Dictionary类型

在allegro的应用中会根据工作的需要自己定制(创建)属性——用户定义的属性(user defined properties)。Allegro

支持用户创建具备如下特性的属性

NETS,COMPONENTS,FUNCTIONS PINS,VIAS,SHAPES,SYMBOLS,CLINES,LINES,DRCS,FIGURES,DESIGNS,COMPDEFS,PINDEFS,FUNCDEFS。如果你创建了一个只包含SYMBOLS类型的属性,

那么你创建的这个属性只能被赋给Allegro中的Symbol对象,而不可以赋给一个net或其它非Symbol的对象。

5. Parameter类型

Parameter的简单理解就是Allegro中个各个设置参数,举个简单的例子,系统(Design)级别的参数列表。 Design Parameter属性

属性名可设置否? 类型描述accuracy no integer Number of decimal places of accuracy bBox no bbox The design’s bounding box height no float Height in user units objType no string Type of object, in this case "paramDesign" units no

string Type of user units (mils, inch, micron,millimeter and centimeter) width no float Width in user units xy no point

Lower left corner of design 注意:可设置否表示的是能否通过函数axlParamSet来设置。下一章将主要讲对Allegro Parameter的操作,对参数的读取,修改与更新等等。

allegro skill Database操作相关函数5.1 Database Read函数

和以前一样,这里只介绍部分的函数,其它的函数请参考algroskill.pdf文件。 axlDBGetDesign() => dbid,当

前design的dbid,基本上来说整个design的所有信息都可以通过这个dbid得到。比如design有多少个 component,

每个component的dbid;比如design有多少drc,每个drc又分别是什么等等。

axlDBGetAttachedText(o_dbid) => text dbid,得到o_dbid对象所具有的(被attached的)text的dbid列表。该函数

常用于在一个包含很多text的symbol对象上查找特定text的应用中。比如我们通常会把一个design放在适当尺寸的

sheet中,对应于design的各个层,sheet也会有对于的页码来表示,比如sheet的第1页是Top层,那么int1层可

能就是第2页,如果你想写个程序来实现页码的自动更新,就会用到这个函数来找到需要被修改的字符 (text),然后

用后面将要说到的Database Create相应函数来修改选中的字符。

axlDBGetPad(o_dbid t_layer t_type) => pad dbid,获得pin,via,padstack相应层的特定pad。比如axlDBGetPad(dpin “Etch/Top" ”anti“)=>dpin对象在Top层的anti-pad的dbid。通过这个dbid又可以进一步得到pad的一些相关属

性。

axlDBGetPropDictEntry(t_name) => propdefinition,得到user defined properties里面设置的各个属性的信息,

比如属性类型,应用的对象。

axlDBGetProperties(o_dbid [lt_type]) => l_results,得到o_dbid所具有的properties列表,allegro默认的或者

是user defined。

axlDBIsFixed(o_dbid) => t/nil,判断一个对象是不是被fixed了。通常在用户程序想修改一些design的对象的时候,

必须先确定该对象是不是被fixed了,fixed 对象是不可以被修改的。(用户必须先给fixed的对象un-fixed,然后才

能进行修改)

axlDBGetShapes(t_layer) => shape dbid,一种获取指定层所有shape的快捷方式。(通常的获取对象的方式都是先要

设置FindFilter,然后addselect,再getselset,3步才可以。)

5.2 Database Create

首先allegro本身不支持的操作使用下面将要给出的AXL-Skill函数也是无法实现的。比如allegro不支持将一个cline

画到非Etch 层去,那么用axlDBCreatePath()也无法在非Etch层Create一个cline的。对于非法操作,函数的返回

值都是nil。

要想让你create的对象立即显示出来有2种方法,运行axlDisplayFlush()命令来刷新allegro的显示状态,或者运行一个allegro本身的命令,否则的话你create的对象是不会被显示出来的。

5.2.1 Path部分的函数

Path指的是各种形状的Line。Path总会有个起点有个终点,axlPathStart函数用于确定起点,而终点则是Path里面的最后一点。 axlPathStart(l_points [f_width]) => r_path,产生一个path对象并确定起点

axlPathArc(Radius/Angle/Center) => 这里的三个函数都是用来生成曲线的 axlPathLine() => 向一个path末尾添加一个点 axlPathGetWidth(r_path) => 得到一个path的宽度,如果一个path中的各个segment的宽度都不一样,可以使用axlPathSegGetWidth()函数。 axlPathSegGetEndPoint(r_pathSeg) => 得到path的最后一个点,相关的函数还有axlPathGetLastPathSeg()用来得到path的最后一个segment。 axlDBCreatePath()和axlDBCreateLine(),将不可见的path或point列表转变成可见的实际存在的 Line,Create在不同的layer,将产生不同的对象,比如在Etch layer将产生Cline对象,在Silkscreen layer就是些简单的Line。

5.2.2 Shape部分函数

Shape是几何图形,所以Create Shape通常需要先提供一个boundry(Shape的边界/区域),而这通常有2种方式,其一是使用上面讲到的Path函数来Create一个闭合的区域,其二是用Polygon函数来为Shape提供一个Polygon。

5.2.2.1 Polygon相关函数 Polygon是多边形的意思,其实和Shape一样(根据Polygon生成的Shape,所以当然是一样的),只是Polygon是不可见的,而 Shape是可见的。Polygon的操作函数之所以不并入Shape我想可能是因为每次对Shape形状的改变allegro都会update整个 design的shape,顺便还要update DRC(Shape和On-Line Drc没有disable的情况下),这都是些很耗时的操作。Polygon的任何操作都不会影响到design,直到当它最后呈现为Shape 时。

axlPolyFromDB(),获得指定对象的Polygon,这是一个非常好用的函数,比如有个形状很怪异的Pad,而你必须根据这个Pad画出个 Shape,这个时候你就可以直接用这个命令直接得到那个Pad的Polygon,然后就可以生产Shape了,很简单。

axlPolyOperation(),Polygon的一些操作,比如多个Polygon以某个规则(AND OR ANDNOT)组合到一起,形成一个/多个新Polygon。

axlPolyExpand(),将Polygon扩展/压缩一定的尺寸

示例: 实现allegro的merge shape的命令 a. 选择需要被merge的Shape b. 使用axlPolyFromDB函数得到每一个Shape的Polygon c. 使用axlPolyOperation函数的"AND"规则,将多个Polygon形成一个 d. 删除选中的所有Shape e. 使用下面将要提到的axlDBCreateShape命令生成新的Shape

5.2.2.2 Shape相关函数 axlDBCreateOpenShape,这个函数是用来Create一个Open状态的Shape的,Open的意思是可以在Create的Shape上再添加Void。

axlDBCreateCloseShape,这个函数是前一个函数的补充,Open状态的shape使用了这个函数就被Close了,Close意思是Shape不可以再添加Void了。

axlDBCreateShape, 这个函数直接Create一个Close的Shape。

5.2.3 和Path无关的函数

axlDBCreateExternalDRC,create一个用户自定义的DRC,通常是在用户自定义的检查中

axlDBCreatePadStack,Create一个新的Padstack,比如你想要用一种新的Via,但是Library中还没,就可以使用该命令Create一个Padstack,然后用axlDBCreateVia命令生成一个

axlDBCreateText,比如前面提到的自动修改字符的操作,这个命令就可以生成指定的字符。

5.2.4 Property函数

axlDBCreatePropDictEntry,在user defined property列表中创建一个新的property类型 axlDBAddProp,将指定的property赋予特定的对象,比如将Fixed Property赋予一个Component,这个和allegro本身的Fixed命令是一样的。

5.3 Database Group

Group比较简单,相关的函数也不是很多。 axlDBCreateGroup,create一个新的Group对象 axlNetClassCreate,

create一个NetClass对象 axlRegionCreate,create一个Region对象

NetClass和Region是16.0以后新的属性

5.4 Database Attachment

这里说到的Attachment是attach到design的database中的。 axlCreateAttachment(t_attachmentId t_passwd

x_revision s_dataFormat t_data ) => Create一个名字/ID是t_attachmentId的attachment,t_password设定密码,

x_revision确定版本,s_dataFormat将决定t_data的数据类型。 axlGetAllAttachmentNames() => 得到design

Database中所有attachment的dbid列表。 axlGetAttachment(t_attachmentId [s_dataFormat]) => 获得指定

attachment的value。

5.5 Database Transaction

这里又有一组比较好用的函数 axlDBTransactionStart() => n_Mark,得到一个mark值可以为其余Mark,Oops,

Rollback,以及Commit命令所用。 axlDBTransactionMark(n_Mark) => 使用n_Mark来标记该命令运行前design

的状态,方便后面的Oops和Rollback操作。 axlDBTransactionOops(n_Mark) => 取消最近一次的

axlDBTransactionMark以来的操作,使得design返回Mark前的状态。和allegro中的Oops命令是相似的。

axlDBTransactionRollback(n_Mark) => 是database Transaction的一次Undo操作,相当于allegro中的Cancel操

作。 axlDBTransactionCommit(n_Mark) => 确定一次transaction的完成,之后n_Mark将不再有效,也即不能再

执行Oops/Rollback操作了。另2个关联的函数: axlTransformObject(),早已经在之前的章节介绍了。

axlDBCloak(g_func [g_mode]),将一些可能会引起shape update或者drc update之类的比较耗时的函数/命令嵌入在

这个命令中运行会比较省时。

另外:举个简单的例子说明为什么这个命令好用。假设你要编写一个实现Symbol横向或者纵向对齐的命令,最简单的

想法就是让用户选择需要移动的Symbol,然后记录下各个Symbol的coordinate,rotation,mirror,name,type等

等参数,对应于Opps或者Cancel操作就是利用之前备份的那一大堆数据来恢复现场。这里涉及一大堆的数据管理,

而且当用户同时选择了n个symbol然后又去掉了部分选择,以及在done掉命令之前有做过几次Opps和几次

transaction,这个数据的管理会很让人伤脑筋。然而通过这里介绍的几个命令,就很简单了,只要在transaction之前

Mark一下(记录现场),Opps,Cancel之类的操作只是简单的恢复到Mark点就好了,不用管Mark以后用户是怎么个

操作的,是不是很简单?

5.6 Database Miscellaneous

举几个很适用的函数,其它的请自行参考学习了。 axlAirGap(),功能如同allegro中的Measure结果中的Airgap。

axlDBGetLength(),功能如同allegro的Show Element命令选择一个Cline显示长度一样。 axlGeoPointInShape(),

这个命令能检验一个Point是不是在特定的Shape里面。 axlChangeNet(),改变指定对象的net name,不过因为一

些功能方面的限制,其实适用性不强。

allegro skill Parameter操作函数正如在allegro skill database对象类型中提到的,一个PCB Editer设计中会有很多的

Parameter,比如在design级别就有设计的精度,设计的版面尺寸,单位等等。在AXL-Skill中有一系列相应的函数可

以直接读取以及修改这些Parameter值。 2. 1 获取Parameter值的通用函数

2.1.1 获取Parameter值的函数 axlGetParam 函数定义:axlGetParam ( t_parm_name ) =>

o_paramDbid/nil 参数t_parm_name要求:被查询的parameter的名字。这个名字

必须符合如下规则: paramTextBlock:<#> where # is 1-16 (Example:

axlGetParam("paramTextBlock:1"); 默认的block只到16,对于大于16的block,如果系统里面有设定就可以同样得

到,比如说有block 30,就可以这样得到axlGetParam("paramTextBlock:30") ) paramDesign paramDisplay paramLayerGroup: where name is legal Allegro class name paramLayerGroup:/paramLayer: artworkList of film names

artwork: param:107955700(返回一个param类型的dbid, 该dbid包含了design的parameter 信息) axlGetParam("paramLayerGroup:ETCH") => param:107955760(返回的dbid包含系统的ETCH相关信息,比如有几个ETCH层) axlGetParam("paramLayerGroup:ETCH")->?? => (objType "paramLayerGroup" name "ETCH" visible nil nChildren 4 groupMembers ("TOP" "INT1" "INT2" "BOTTOM") color -1)(说明:axlGetParam("paramLayerGroup:ETCH")将得到一个dbid,而->??操作将得到该dbid的所有直接相关属性,objType说明该dbid的对象类型是paramLayerGroup,nChildren=>4表面当前的design有4 个Etch层,groupMembers对应了具体的4个Etch层名字)

axlGetParam("paramLayerGroup:ETCH")->groupMembers => ("TOP" "INT1" "INT2" "BOTTOM")

2.1.2 设置Parameter值的函数 axlSetParam 函数定义:axlSetParam ( o_paramDbid ) =>

o_paramDbid/nil 参数o_paramDbi要求:axlGetParam函数的返回值返回值o_paramDbid:返回值类型和axlGetParam返回的一样使用方法:Originalparam = axlGetParam( "paramDesign"),做一些其它的操作可能涉及到多个系统参数的改变,然后通过axlSetParam(Originalparam)命令来使系统所有的参数设置恢复之前保留的值。(参考后面提到的类型相似的axlVisibleGet和axlVisibleSet函数)

2.2 Color操作函数(部分)

2.2.1 Allegro中的Color Allegro支持2种访问Color的方式,预定义的color和allegro database color。预定义的color有'black,‘'white,'red,'green,'yellow,'blue,'multivalue - use dfor fields where value not the same,'button - current color of button faces (grey)。 database color是以[1-24]之间的整数表示的,0被保留为背景颜色。在2.1.1的示例中,就有看到color值为-1的情况,这表示被查询的元素当前是不可见的。 2.2.2 常用Color相关函数获取Color调色板,

axlColorGet(x_number/'background/'count/'all), 如axlColorGet('all)=>得到系统的颜色设置结构列表。对应设置Color调色板函数,axlColorSet();系统颜色设定的保存与重载函数,axlColorSave(file)与axlColorLoad(file);用户定制颜色来设置系统中的元素,axlCustomColorObject([lo_dbid]

[g_custom_color]),相应的清除命令为axlClearObjectCustomColor([lo_dbid]);其它更多的color 相关函数请参考algroskill文档

2.3 Database Layer相关操作函数

这里给出一些方便操作Layer的函数: axlGetXSection(),这是获取design的crosssection(层叠结构)的函数;axlLayerGet(t_layer),这是获得指定层t_layer的dbid的函数; axlIsLayer(t_layer),判断指定的层t_layer 存不存在; axlIsVisibleLayer(t_layer),判断指定层t_layer是不是显示状态(visible);

axlVisibleLayer(t_layer g_makeVis),设置指定层t_layer的状态是显示还是不显示;

axlVisibleDesign(g_makeVis),设置design的状态是显示还是不显示; axlVisibleGet(),该函数的返回值是命令运行当前design的所有颜色显示状态; axlVisibleSet(l_vislist),该函数使用axlVisibleGet()函数的返回结果,重置design的显示状态。更多相关函数请参考algroskill.pdf文档

2.3 Database Layer相关操作函数

这里给出一些方便操作Layer的函数: axlGetXSection(),这是获取design的crosssection(层叠结构)的函数;axlLayerGet(t_layer),这是获得指定层t_layer的dbid的函数; axlIsLayer(t_layer),判断指定的层t_layer 存不存在; axlIsVisibleLayer(t_layer),判断指定层t_layer是不是显示状态(visible);

axlVisibleLayer(t_layer g_makeVis),设置指定层t_layer的状态是显示还是不显示;

axlVisibleDesign(g_makeVis),设置design的状态是显示还是不显示; axlVisibleGet(),该函数的返回值是命令运行当前design的所有颜色显示状态; axlVisibleSet(l_vislist),该函数使用axlVisibleGet()函数的返回结果,重置design的显示状态。更多相关函数请参考algroskill.pdf文档

allegro skill Design相关函数a. 用来得到当前design的名字和类型的一些函数axlCurrentDesign() ;得到当前文件的名字axlDesignType(); design的类型,比如Layout axlSaveEnable(); 设置File-Save menuitem是否可用axlSaveDesign(); 保存design axlDBControl(); 这是个很有用的函数,可以设置很多的系统环境,比如设置On-Line DRC enable还是disable,axlDBControl(‘drcEnable t/nil) axlIgnoreFixed(); 如果想操作Fixed的symbol一般是不可以的,但是可以通过这个命令来操作axlKillDesign(); axlOpenDesign(); axlGetActiveLayer();

b. 用来注册一些skill的函数为allegro中的命令,以及设置各种工作模式axlCmdRegister(); register Skill函数为allegro 的命令axlEndSkillMode(); 结束skill状态axlFlushDisplay(); 刷新屏幕axlOKToProceed(); 检测当前是不是有另外的交互式操作命令在运行axlUIPopupDefine();辅助用户定义右键弹出menu

c. Logic操作函数

操作系统的一些Logic类型的信息,比如DiffPair,MatchGroup,pinpair等等 axlDiffPair(); 生成,修改,删除Diffpair axlMatchGroupAdd(); 添加成员到某个MatchGroup axlPinPair(); PinPair操作

另:

axlWriteDeviceFile(); 输出Device信息到相应的文件 axlDbidName(); 得到dbid对应的名字axlDBCreateConceptComponent();

d. Constraint Manager操作函数

所有的Constraint Manager相关的函数都会是以axlCNS开头,如: axlCnsAddVia(); axlCNSCreate(); axlCNSGetPhysical(); axlCNSGetSpacing();

e. Math函数

axlDistance(); 得到2点之间的距离 axlGeoEqual(); 在当前design精度下,比较2个浮点数是否相等axlIsPointInsideBox(); 检查点是不是在Box里面 axl_ol_ol2(); 检查两个线是否相交

allegro skill选择和获取函数对Allegro中的对象进行操作,比如移动、删除,都需要先选择和获取该对象的dbid。选择操作包含一些选择设置比如是只选择Symbol还是Symbol和Via都可以选等等,然后通过axlSelect相关函数来选择具体的对象,然后是axlGetSelSet函数来得到那些被选择的dbid。AXL-Skill函数支持多种选择的方式,比如单选择一个对象,或者是框选多个对象,又或者说是使用Temp Group的方式来选择多个对象,不过通常对象只有在当前可见(Visible)的情况下才可以被选择上(除非设置了invisible选项)。选择设置和被选择了对象的有效性会一直持续到用户使用其它的系统命令,比如allegro的Add Cline命令,因为allegro的命令将会改变一些系统的dbid,所以的Skill之前获取的bdid都会变成无效的(removed)。通常的选择和获取操作如下,

设置Find Filter来控制将要被选则的对象类型;选择对象的三种模式:单选,多选或通过名字来选择;从被选择的对象中添加和移除对象

3.1 Find Filter设置函数

函数定义axlSetFindFilter(?enabled lt_enabled ?onButtons lt_filterOn) 功能:该函数最直观的理解是,它可以设置allegro的Find Filter。参数:lt_enabled,该参数将决定哪些Find Filter中的元素可以被选择;

lt_filterOn,该参数将决定可以被选择的元素中,哪些已经被选中了。参数支持的类型如下:"PINS","VIAS","CLINES","CLINESEGS","LINES","LINESEGS","DRCS","TEXT","SHAPES","SHAPESEGS","BOUNDARY_SHAPES","VOIDS" ,"VOIDSEGS","SYMBOLS","FIGURES","COMPONENTS","FUNCTIONS","NETS","INVISIBLE","NAMEFORM","ALLTYPES","ALL",

"DYNTHEMALS","GROUPS","GROUPMEMBERS"

用法示例:axlSetFindFilter( ?enabled list( "vias" "pins" "nets") ?onButtons list( "vias" "pins")) => 设置Find Filter中的vias,pins,nets为可以被选择的,而其它的选项将被设置成不可操作的,默认选择了vias和pins。

3.2 点选函数

axlSingleSelectPoint() => 运行该命令之后,allegro将提示你点选一个design中的对象。 axlAddSelectPoint() axlSubSelectPoint()

3.3 框选函数

axlSingleSelectBox() => 在allegro中框选 axlAddSelectBox() axlSubSelectBox()

3.4 通用选择函数

axlSelect() => 支持多种选择方式于一身,单选,框选,Temp Group

3.5 其它选择函数

axlAddSelectAll() =>不需要用户交互的选择方式,只根据Find Filter的条件 axlSubSelectAll()

axlSingleSelectName() axlAddSelectName() axlSubSelectName() axlSingleSelectObject() axlAddSelectObject() axlSubSelectObject()

3.6 获取和清除函数

axlGetSelSet() => 获取之前的选择函数选择的dbid axlGetSelSetCount() axlClearSelSet() => 清除之

前选择函数选择的dbid(注:当一个对象被选择了以后,将会被自动的以Temp Highlight的方式高亮,而该函数运行以

后将会清除这个对象的选择状态,同时该对象也不再高亮)

3.7 示例:选择一个Symbol,并将其移动到另一个相对位置

axlClearSelSet() ; 清除之前可能存在的被选择函数选择的元素,避免引入不合适的dbid,这是个好习惯

axlSetFindFilter(?enabled '("noall" "symbols" ) ?onButtons '("noall" "symbols" )); 设置Find Filter的Symbols

选项处于选中状态 axlSingleSelectPoint(); 请通过点击选择的方式,选择一个Symbol对象 dSym =

axlGetSelSet(); => (dbid),将得到被选择的dbid列表,尽管这个列表只有一个元素 axlClearSelSet(); 清理掉

你自己做过的选择,避免给别的程序带来错误,同样是个好习惯 dSym = car(dSym); => dbid,的到Symbol的

dbid ;dSym->?? ;=> 将得到这个Symbol的相关属性 ix = 100; iy = 200;

axlTransformObject(dSym, ?move ix:iy); =>将该Symbol右移100mil,上移200mil ; axlTransformObject() 函

数的作用是将一个或多个symbol由一个地方移动、翻转、旋转到另一个新的位置。 ; axlTransformObject( ; lo_dbid/o_dbid ; ?move l_deltaPoint ; ?mirror

t/nil ; ?angle f_angle ; ?origin

l_rotatePoint ; ?allOrNone t/nil )

skill交互函数axlUI系列集锦Interface指和用户交互,allegro给出一些Message提醒用户进行相关的操作,比如说

Pick a Point就是让用户用鼠标选择一个点;又比如说allegro弹出一个Confirm对话框,需要用户选择Yes/No的情况。

在allegro的skill窗口输入_lfn("axlUI")一般会查到如下的函数:axlUICmdPopupSet axlUIColorDialog axlUIConfirm

axlUIControl axlUIDataBrowse axlUIEditFile axlUIGetUserData axlUIMenuDump axlUIMenuLoad axlUIMultipleChoice axlUIPopupDefine axlUIPopupSet axlUIPrompt axlUIViewFileCreate axlUIViewFileReuse axlUIViewFileScrollTo

axlUIWBeep axlUIWBlock axlUIWClose axlUIWDisableQuit axlUIWExpose axlUIWExposeByName axlUIWPerm

axlUIWPrint axlUIWRedraw axlUIWSetHelpTag axlUIWSetParent axlUIWShow axlUIWTimerAdd

axlUIWTimerRemove axlUIWUpdate axlUIYesNo axlUIYesNoCancel 这里介绍一下其中几个很常用的函数的用法

axlUIConfirm => axlUIConfirm("are you sure to delete all highlight shapes?") axlUIYesNoCancel =>

axlUIYesNoCancel("are you sure to delete all highlight shapes?" "Delete Shape Command") axlUIYesNo =>

axlUIYesNo("are you sure to delete all highlight shapes?" "Delete Shape Command") axlUIMultipleChoice =>

axlUIMultipleChoice("Pick a layer" '("top" "bottom" ) "View Layer") axlUIPrompt =>axlUIPrompt( "Enter Your Name"

"user name" )

前3个差不多,但是axlUIConfirm只是个提醒,返回值总是t,另外两个返回值是数字0=>Yes, 1=>No, 2=>Cancel。axlUIMultipleChoice的返回值也是数字,0对于这个函数中间那个列表的第一个参数,顺序下来。axlUIPrompt这个函数提供了用户输入信息的功能,返回值为字符串,如果你想要数字,需要自行转换,atoi/atof之类。axlUIPrompt示例

最后还有一个axlUIWBeep(),就是一个beep提示音axlUIWDisableQuit => axlUIWDisableQuit(userDefinedForm) ;屏蔽掉form右上角的那个close叉叉axlUIWClose => axlUIWClose(userDefinedForm); 关闭掉form axlUIWShow => axlUIWShow(userDefinedForm option); option 'show =>显示并激活userDefinedForm; 'showna 显示但不激活; 'hide

窗口隐藏; nil 显示支持的操作axlUIWPrint => axlUIWPrint(userDefinedForm "this is a pretty form"); 输出字符到form 的最下面窗口axlUIWPerm => axlUIWPerm(userDefinedForm t); allegro打开新的板子会默认关闭掉当前打开的所以

的form窗口,用这个命令可以屏蔽这个功能axlUIWBlock => axlUIWBlock(userDefinedForm);强制用户操作了当前的form才可以继续其它的工作axlUIWRedraw axlUIWUpdate => axlUIWUpdate(nil)这个和axlUIWRedraw(nil)更适合刷新主屏幕axlUIWExpose axlUIWExposeByName=>这2个都是将选择的窗口显示到最前端

axlUIDataBrowse axlUIColorDialog 这2个函数调用allegro系列的form,挺有用的。参考algroskill.pdf中的例子:axlUIDataBrowse('NET '(RETRIEVE_NAME) "hi" t) rgb = axlColorGet(1) rgb = axlUIColorDialog(nil rgb) when( rgb axlColorSet(1 rgb) ) 这里的1可以是其它的数字,16.0以上可以到192。

axlUIMenuDump=>axlUIMenuDump("CurrentMenu") 输出当前allegro的menu信息到当前工作目录的CurrentMenu.men文件axlUIMenuLoad=>axlUIMenuLoad("menu.men") load menu.men的信息到allegro中建立新的目录很实用的2个功能

鼠标右键的popup menu:axlUIPopupDefine axlUIPopupSet procedure( aa println("I- you select A")) procedure( bb println("I- you select B")) pop=axlUIPopupDefine( nil '(

("A" aa) ("B" bb) ) ) axlUIPopupSet( pop ) 运行了上面的程序以后在allegro中单击鼠标右键就会看到一个popup,就像我们常见的Done,Cancel,Opps那个popup,只是这里的是A和B。axlUIPopupSet( nil ) 这个命令来将刚刚的设置清除axlUIViewFileCreate axlUIViewFileReuse axlUIViewFileScrollTo 只读方式打开文件,没怎么用过,也觉得没有啥用处。还剩下几个除了Time可能有些作用,其它的没有没有什么感觉。axlUIWTimerAdd axlUIWTimerRemove axlUIControl do not use axlUIEditFile axlUIGetUserData axlUIWSetHelpTag axlUIWSetParent

allegro skill 交互式编辑函数这里介绍一些基本的编辑命令,比如axlDeleteObject用来删除可被删除的系统对象(各种dbid),axlShowObject用来显示被选择对象的信息,和allegro中的Show Element命令显示的结果差不多。常用函数示例:

axlChangeWidth(); => 和Allegro中的Change命令类似,该命令用来改变Cline/Line的宽度 axlDBDeleteProp(); => 该命令可以删除选择对象的指定属性,使用该命令相当于Allegro中Edit Property命令。axlDBDeletePropDictEntry(); =>该命令相当于Allegro中的User Defined Property命令 axlLastPick(); => 获得用户鼠标最近一次点击的坐标 axlShapeChangeDynamicType(); =>改变选择Shape的动静态属性axlTransformObject(); =>移动对象

另外:

axlEnterPoint() ; 提示用户输入一个点的坐标 axlEnterString() ; 提示用户输入一个字符串axlCancelEnterFun(); 取消一个提示Enter操作的函数的作用

还有一些比如

axlHighlightObject(); highlight对象 axlMiniStatusLoad(); 这个函数可以让用户定义的form显示在Options Tab上。

allegro skill File操作allegro有些专用的函数可以操作文件,allegro本身支持skill的那些文件操作函数,比如infile,outfile函数,而如下的函数都只是更多的文件操作函数:axlDMOpenFile(); axlDMOpenLog(); axlDMClose();

axlOSFileCopy(); axlOSFileMove(); axlOSSlash(); axlTempDirectory(); allegro skill Shell操作相关函数这里的函数可以用来读取Allegro PCB Editor的环境参数,比如Alias,FuncKey以及一些系统的参数(.psmpath)。比如:axlGetAlias() axlGetFuncKey() axlGetVariable() axlSetAlias() axlSetFunckey() axlUnsetVariable()

另外:axlShell(),这个命令很有用,它支持在skill环境中运行allegro的命令,比如allegro的status命令,在skill状态下是不可以直接运行的,需要通过axlShell("status")来运行。

另:设置和获得windows/UNIX系统下的环境变量setShellEnvVar() getShellEnvVar()

allegro skill Form操作allegro有很多的form,比如artwork,比如status,还有些在Options Tab上显示的如change 命令的form...... 能自己创建一些form会很有意思,也很有用。a. form的基本元素示例:下面是一个简单的form,包含2个Text,2个可以输入数据的Field,1个复选框checkbox,2个按钮Button。FILE_TYPE=FORM_DEFN VERSION=2 FORM FIXED PORT 30 12 HEADER "Hello You!" TILE

TEXT "Your Name:" TLOC 4 1 ENDTEXT

FIELD user_name FLOC 16 1 STRFILLIN 8 15 ENDFIELD

TEXT "Your age:" TLOC 4 3 ENDTEXT

FIELD user_age FLOC 16 3 REALFILLIN 4 6 DECIMAL 4 ENDFIELD

FIELD MarriedCheck FLOC 4 6 CHECKLIST "Married?" ENDFIELD

FIELD RunCheck FLOC 4 9 MENUBUTTON "Result" 8 3 ENDFIELD

FIELD CloseForm FLOC 16 9 MENUBUTTON "Close" 8 3 ENDFIELD

ENDTILE ENDFORM

a. form的基本元素form的define信息一般保存在一个.form的文件中,文件的开头一般都是

FILE_TYPE=FORM_DEFN VERSION=2。正式的form信息从FORM关键字开始,以ENDFORM结束。最常用的form 元素有FIELD,TEXT,BUTTON。其它常用的还有Checkbox,Radiobox,Group。在Form中定义一个item,一般是Text和Field,Field包含除Text以外的所有类型,先确定是Text还是Field,然后是相对位置Location,然后是具体的类型,最后结束这个Item的定义,比如:TEXT "Your age:" ;Text,且显示的是Your age

TLOC 4 3 ; 位置为Form的(4 3) ENDTEXT ; 结束这个Text的定义

b. 创建一个简单的Form 当你创建了一个Form文件,接下来要把它在Allegro中显示出来。假设我们把刚刚提到的那个Form保存到C:/temp名叫user.form的文件中,用下面的axlFormCreate函数来在Allegro中创建并用axlFormDisplay函数显示出来。user_Form = axlFormCreate((gensym) “c:/temp/user.form" '(e inner) 'user_callback t ) axlFormDisplay(user_Form) 这里的user_callback是个函数,是对应现在创建的user_Form对应的用户操作的响应,比如用户点击了一个按钮,就会有些相应的操作。还有些函数可以用来设置Form中一些Field,设置默认值,比如axlFormSetField(user_Form "user_age" 24);以及获取Form中Field的值,比如axlFormGetField(user_Form "user_age" );=>24

b. 创建一个简单的Form之call back函数Form显示出来对应的是种前台操作,而响应用户相应的操作则可以称之为后台操作。创建一个Form的时候都会有个call back函数assign给它。call back函数里面包含了对应各个Field的操作命令。比如:procedure( user_callback( user_Form )

case( user_Form->curField ;curField 将得到当前用户操作的Field名字

( "user_name" axlMsgPut( sprintf( nil "current user name %s" user_Form->

curValue ) ) ; curValue 将得到当前Field的值 ); ( "user_age" axlMsgPut( sprintf( nil "current user age %d" user_Form->

curValue ) ) ) ( "MarriedCheck" ; do

something ) ( "RunCheck" sMsg = axlFormGetField( user_Form

"user_name" ) axlUIConfirm(sprintf(nil "Hello %s, Good Day!" sMsg)) ) ( "CloseForm" axlFormClose( user_Form ) ) )

)

c. 创建一个Grid Form Grid比较适合制作表格形式的Form,比如假设我们想做个Form来显示当前工作文件夹下面的

所有文件,用Grid就会比较合适,定义一个三列的表格,第一列显示第几个文件,第二列显示文件名,第三列显示文

件大小,而这用一般的Form形式来实现会比较麻烦。比如把下面这段Grid信息加入到一般的form定义文件中,就会

支持Grid的相关操作:"GRID crsGrid" "FLOC 2 1" "FSIZE 42 27" "OPTIONS HLINES VLINES USERSIZE"

"GHEAD TOP" "HEADSIZE 3" "OPTIONS 3D MULTI" "ENDGHEAD"

"GHEAD SIDE" "OPTIONS 3D NUMBER" "HEADSIZE 5" "ENDGHEAD"

"ENDGRID" 如下的代码则会帮助你设置这个Grid空间,比如这里设置了3列,每列各代表一些意思。tGridCol =

make_formGridCol() tGridCol->fieldType = 'LONG tGridCol->colWidth = 2 tGridCol->align = 'center

tGridCol->headText = "Count" tGridCol->scriptLabel = nil axlFormGridInsertCol( user_form "crsGrid" tGridCol )

tGridCol->fieldType = 'TEXT tGridCol->colWidth = 8 tGridCol->headText = "File Name" tGridCol->align = 'left

tGridCol->scriptLabel = nil axlFormGridInsertCol( user_form "crsGrid" tGridCol )

tGridCol->fieldType = 'LONG tGridCol->colWidth = 2 tGridCol->align = 'center tGridCol->fieldLength = 4 tGridCol->min

= 1 tGridCol->max = 10 tGridCol->headText = "Size" axlFormGridInsertCol( user_form "crsGrid" tGridCol ) 相应的

form操作函数也包含了Grid关键字,如axlFormGridUpdate,axlFormGridOptions...

allegro skill ipc ipc是Interprocess Communication的缩写,ipc使得skill对创建其它非skill进程和与之通信成为可能。

比如如果一个skill工具要求比较复杂的界面,而这个界面用skill来完成会很麻烦,这样就可以试着用其它的语言(java)

写出要求的界面并生成可执行文件(jar),用ipc相关的函数来调用这个可执行文件,并传递相关的参数,用户在该界面

上做的任何操作也会有相应的函数读回并执行。ipc的功能极大的方便了用户做开发。

父进程通过ipc和子进程通信1. 如何通信父进程通过子进程的stdin将信息传递给子进程,从子进程的stdout和stderr

读取返回信息。e.g. 一个简单的perl程序#! /usr/bin/perl -w print $ARGV[0]; getinfo; sub getinfo {

return $ARGV[1];

} 如果用ipcBeginProcess调用这个简单程序,这个程序运行以后,ipcReadProcess读到的返回值将会是print输出的

值。

2. 同步,异步读取子进程返回信息同步读取会屏蔽当前操作直到读取完成,异步读取会等到数据和父进程中处理函数都

准备好的时候发生,不会屏蔽别的程序运行。 3. 数据缓存一般的标准输入输出通道有4096byte的缓存区,通常子进

程在将数据写入输出通道后推荐刷新该端口使得父进程可以顺利读到这些输出。 4. 子进程的属性子进程通常有如下的

只读属性, 和其它的skill对象一样可以通过"->"来读取。command Name of the command host Name of the host

machine running the process processPid Process id of the child process on host exitStatus Exit status of the child

process priority Priority given to the child process type Begin, Skill, or Batch process state Active, Dead, or Stopped

5. 几个主要的ipc函数5.1 ipcBeginProcess 5.2 ipcSkillProcess 5.3 ipcWaitForProcess 5.4 ipcReadProcess 5.5 ipcWriteProcess 5.6 ipcIsActiveProcess 5.7 ipcIsAliveProcess 5.1 ipcBeginProcess 该函数用来调用别的程序并返回

子进程,函数定义如下:ipcBeginProcess(

t_command [ t_hostName ] [ tsu_dataHandler ] [ tsu_errHandler ] [ tsu_postFunc ]

[ t_logFile ] )

=> o_childId 参数解释,

t_command=> 要执行的程序/命令,比如linux里面的命令date; t_hostName=>被调用的命令执行的环境,null

也就是“”表示在本地执行; tsu_dataHandler/errHandle/postFunc=>这3个参数用来处理子进程的输出,如果设置了相应的处理函数就是异步读取方式,这种方式会自动读取子进程的返回值,如果没有设置则是同步读取方式,这种方式下就必须显式的用命令 (ipcReadProcess,ipcIsActiveProcess...)来读取子进程的输出值或者状态;

t_logfile=>用来记录所有的子程序的输出信息。

示例:

同步读取 cid = ipcBeginProcess("date") => ipc:0 ;子进程0 ipcReadProcess(cid) =>"Tue Aug 1 14:23:07 PDT 1995\n" ; 显式的读取子进程的输出值

异步读取 handler = (lambda (cid data) printf("\n Date:%s\n" data))=>funobj:0x2848e8 ;定义输入数据处理函

数 cid = ipcBeginProcess("date" "" handler)=>ipc:0 ;handler会自动处理子进程的输出数值 Date: Tue Aug 1 14:29:17 PDT 1995

5.2 ipcSkillProcess 这个函数类似于ipcBeginProcess, 只是增加了对子进程可以在父进程中执行skill命令的能力,以

及设置了2个专门的通道方便子进程输出skill命令到父进程执行并读取执行的结果。函数定义:ipcSkillProcess(

t_command [ t_hostName ] [ tsu_dataHandler ] [ tsu_errHandler ] [ tsu_postFunc ] [ t_logFile ] [ x_cmdDesc ] [ x_resDesc ] )

=> o_childId 参数解释:

x_cmdDesc=> skill命令输出通道,默认为3 x_resDesc=> skill运行结果接受通道,默认为4

示例请参考ipc文档P44.

5.3 ipcWaitForProcess 父进程调用子进程的时候,可能由于系统的延时子进程不能即刻就执行,考虑到这样的一个延

时用ipcWaitForProcess就可以挂起父进程直到子进程运行起来。函数定义:ipcWaitForProcess(

o_childId [ x_timeOut ] )

=> t 参数说明:

o_childId=> 子进程的ID x_timeOut=>等待的时间

5.4 ipcReadProcess 5.5 ipcWriteProcess 这2个是对子进程的读取和写入函数,具体内容参考ipc手册。5.6 ipcIsActiveProcess 5.7 ipcIsAliveProcess 检查一个子进程是不是还有效,类似于查看子进程的state属性

dicusss:和VB通信,2种情况,一种是调用VB编写成的可执行程序,这种很简单,就是ipc调用该程序加上适当

的参数,就好了。另一种是和VB编写的程序交互,这样就需要既输出数据给VB的程序,也要从VB那边读相应的返

回结果。主要涉及ipcBeginProcess和ipcSkillProcess这2个函数

PDMS-PML基础

PML基础王元 AVEVA中国2005.11.19

如何学习PML编程 T需要具备的基本知识 –熟悉Pdms的基本操作 –了解Pdms的运行机制,模块之间的关系 –Pdms属性的操作 –Pdms命令的操作 –Pml语法(本教程) –通过Pdms菜单查找示范程序 课程将包括... T PML介绍 –PML概念 –PML功能 –PML构成 T PML程序语言 –变量的定义及用法 –循环Do、判断If、跳转Golabel –错误处理 –文件处理 –函数Functions、方法Method –对话框Forms和菜单Menu

课程结束后... T您会具有以下知识… –PML构成及功能 –编写简单的宏 –PML变量的定义及应用 –PML函数/方法的定义及调用 –PML窗体/对象的定义及调用 PML -功能强大的语言 T P rogrammable M acro L anguage可编程宏语言 T PML2基于面向对象(Object Oriented)概念的编程语言T支持用户自定义对象类型(Object Types) T简单易学,与PDMS无缝连接 T丰富的内置函数,方法及对象 T最简单的对话框,菜单编写语言

PML构成 T Macros –Macros是包含PDMS 命令序列的ASCII文件 –Macros 在PDMS 中通过$m /FILENAME来执行 T PML –变量(Variables) –判断语句(if Constrcuct) –循环(Do loops) –错误处理(Error Handling) –文件处理(Files and Directories) T窗体和菜单 –PDMS大多数应用程序都由对话框(Forms)和菜单(Menus)来驱动 一个简单的Macro T宏是包含PDMS 命令序列的一个文本文件 T运行宏 $M /MyFile ASCII 文件 MYFILE NEW EQUIP /FRED NEW BOX XLEN 300 YLEN 400 ZLEN 600 NEW CYL DIA 400 HEI 600 CONN P1 TO P2 OF PREV

高中地理常见问题分类建模大全

高中地理常见问题分类 建模大全 内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)

常见问题分类建模大全 地理成因、措施类分析建模与应用1、水土流失成因分析模式: [分析模式的应用] 中国主要水土流失成因的比较: 2、土地荒漠化成因分析模式:

[分析模式的应用] 3、区域(或城市)水资源短缺的成因分析模式: [分析模式的应用] 黄河断流的成因: 4、干旱发生的一般机制及防御: [分析模式的应用] 中国干旱多发地区成因的异同比较:

5、洪涝灾害成因分析模式: [分析模式的应用] 黄河、淮河、长江洪涝成因的比较: 6、环境污染成因分析模式:

7、江河咸潮成因分析模式: [分析模式的应用] 珠江咸潮问题 8、沼泽的成因分析模式: [分析模式的应用] 几个区域的沼泽成因的比较;

9、农业可持续发展措施 (1)调整农业(农、林、牧、副、渔)结构和农村经济结构(重视发展第二、三产业) 因地制宜发展农林牧渔,发展生态农业、特色农业、优势农业。 (2)推进农业产业化进程,发展农产品深加工,延长产业链,提高附加值。 (3)加强农业基础设施建设,改善农业生产条件 (4)加快农业技术的应用和推广(如机械化水平、优良品种等) (5)改善农业生态环境,促进农业的可持续发展 根据题中出现的问题答,治理土地污染、水土流失、土地荒漠化、盐碱化以及林木的乱砍滥伐等现象 (6)积极开拓市场 10、工业可持续发展措施 a)调整产业结构(改变单一结构),发展新兴工业,发展第三产业; b)改造传统工业,(中小企业兼并重组,扩大规模;调整工业布局,污染工 业关闭或迁移;淘汰落后生产方式,发展循环经济,提高资源利用率,减少污染排放;延长产业链,发展深加工,提高附加值;) c)发展科技。(技术改造,提高产品技术含量;) d)治理与环境保护 e)完善基础设施建设。(建立发达的交通网络) f)政策优惠以及引进资金技术等。 区位分析类建模和应用 1、农业区位分析模式: [中国主要农业地区气候条件的对比分析]

midas建模常见问题

Midas “模型”中的常见问题解答 1. 如何进行二维平面分析? 具体问题 MIDAS/Civi 为三维空间分析程序,如何进行二维平面分析? 相关命令 模型〉结构类型... 问题解答 “结构类型”对话框中有多种结构类型可供选择(3-D 、X-Z 平面、Y -Z 平面、X-Y 平面、约束RZ )。建立模型时,直接在本对话框定义相应的平面结构类型(X-Z 平面、Y-Z 平面、X-Y 平面)即可。 相关知识 三维空间模型的一个节点有6个自由度。当结构类型定义为二维平面类型后,一个节点的自由度就变成3个。对于二维平面类型结构的节点定义边界条件时,只对相应的3个自由度定义约束即可。 相关问题 2. 如何修改重力加速度值? 具体问题 物理重力加速度为2/8.9s m ,工程重力加速度为2/10s m 。在程序中如何查看并修改重力加速度值? 相关命令 模型〉结构类型... 问题解答 可以在“结构类型”对话框中查看重力加速度值。程序默认的重力加速度是物理重力加速度2/806.9s m ,如需要按工程重力加速度进行计算,可在本对话框直接修改重力加速度值即可。 相关知识 进行特征值分析时需要单元或节点的质量数据,单元的自重转化为质量时,程序将利用此重力加速度计算单元或节点的质量。 相关问题 3. 使用“悬索桥建模助手”时,如何建立中跨跨中没有吊杆的情况?* 具体问题

使用“悬索桥建模助手”建立中跨为奇数跨的悬索桥模型(中跨跨中没有吊杆的情况),程序提示错误“遵守事项:中间距离数为偶数”。如何建立中跨为奇数跨的悬索桥模型? 相关命令 模型〉结构建模助手〉悬索桥... 问题解答 使用“悬索桥建模助手”功能只能建立偶数跨的模型。需要建立奇数跨度模型时,首先利用建模住手建立原奇数跨+1跨(偶数跨)的模型,然后删除中跨跨中的吊杆单元,再利用“悬索桥分析控制”功能重新更新节点坐标以及几何初始刚度即可。 相关知识 使用“悬索桥建模助手”建立的模型,往往与工程师预想的模型有些差异(例如主塔与加劲梁的连接处以及边界条件等),此时就要用户自己调整模型至预想模型。模型被修改后,原来的节点坐标以及几何初始刚度不能满足新模型的平衡状态,必须对整体结构重新进行精密分析(悬索桥分析控制),求出新的节点坐标以及几何初始刚度。 相关问题 4.使用“悬臂法桥梁建模助手”时,如何定义不等高桥墩? 具体问题 使用“悬臂法桥梁建模助手”时,对桥墩只能输入一个高度,如何定义桥墩高度不一样的模型? 相关命令 模型〉结构建模助手〉悬臂法(FCM)桥梁... 问题解答 首先使用“悬臂法桥梁建模助手”建立等高度桥墩模型,然后调整桥墩梁单元的长度即可。 相关知识 程序中的“建模助手”功能建立的模型,都可以进行编辑和修改。 相关问题 5.程序中的标准截面,为什么消隐后不能显示形状?* 具体问题

PDMS软件的二次开发及应用

PDMS软件的二次开发及应用 姓名:王晶 指导老师:郭琳 实习单位:建造公司技术部电议室毕业院校:哈尔滨工业大学 所学专业:软件工程 2010 年 12 月

摘要 PDMS软件在许多行业中流行,适应多种行业建模,具有一定的普遍性。PDMS软件能够进行的三维建模可直接生成自动标注的分专业或多专业布置图、单管图、配管图、结构图、支吊架安装图,并抽取材料等。 PDMS软件的引进为公司带来了更多的方便提高了效率和准确度,但由于该软件的普及性特点注定了对本公司所涉及的工程项目不具备针对性,虽然带来了巨大的效益,同时对于具体项目而言仍然不可避免的存在着某些繁琐复杂的手工工作程序。 本课题使用PML语言对PDMS软件进行了二次开发,提供了多个扩展功能,通过与原软件风格相融合的图形化形式展示给用户,操作方便,不但解决了工作中存在的许多重复、耗时的工作,提高工作效率,增强计算准确率,也成为PDMS的二次开发的真实实践,掌握一种新的技术。对PDMS软件新增功能的使用将为公司带来更高效、更省时的收益,并将随着该技术的不断完善、熟练,成为公司的一种商品为公司带来新的效益。 关键词:PDMS;PML语言;文件存储;Add-ins;

目录 摘要 ............................................................. I 目录 ............................................................ I I 一概述 . (1) 1.1 课题背景及研究目的 (1) 1.1.1 与课题相关的研究综述 (1) 1.1.2 课题研究目的与意义 (2) 1.2 课题研究的创新点 (2) 二研究方案 (5) 2.1 技术方案 (5) 2.1.1 PDMS运行机制及二次开发技术 (5) 2.1.2 PML功能及构成 (7) 2.2 技术关键 (7) 2.2.1 PML中Add-ins的应用 (8) 2.2.2 PML文件存储机制 (8) 2.2.3 PML对象的应用 (10) 三 PDMS扩展功能介绍及应用 (11) 3.1 PDMS扩展功能界面展示 (11) 3.2 电缆路径自动敷设及电缆长度统计功能 (12) 3.3 托架上某截面电缆信息的展示功能 (15) 3.4 填充率计算及护管选型功能 (16) 3.5 错误路径删除及打印单个路径图纸功能 (18) 3.6 相关联的其它扩展功能 (19) 四总结 (20) 五参考文献 (21) 六致谢 (22)

中国急性早幼粒细胞白血病诊疗指南(全文版)

中国急性早幼粒细胞白血病诊疗指南(全文版) 急性早幼粒细胞白血病(APL)是一种特殊类型的急性髓系白血病(AML),绝大多数患者具有特异性染色体易位t(15;17)(q22;q12),形成PML-RARα融合基因,其蛋白产物导致细胞分化阻滞和凋亡不足,是APL发生的主要分子机制[1,2]。APL易见于中青年人,平均发病年龄为44岁,APL占同期AML的10%~15%,发病率约0.23/10万[1]。APL 临床表现凶险,起病及诱导治疗过程中容易发生出血和栓塞而引起死亡。近三十年来,由于全反式维甲酸(ATRA)及砷剂的规范化临床应用,APL 已成为基本不用进行造血干细胞移植即可治愈的白血病[3,4]。 一、初诊患者入院评估 1.病史和体检 2.血液检查:血常规、血型,外周血涂片,生化,DIC相关指标检查,输血前有关传染性病原学检查。 3.骨髓检查: (1)细胞形态学和组织化学: 以异常的颗粒增多的早幼粒细胞增生为主,且细胞形态较一致,胞质中有大小不均的颗粒,常见呈柴梱状的Auer小体。FAB分型根据颗粒的大小将APL分为:①M3a(粗颗粒型);②M3b(细颗粒型);③M3c(微颗粒型):较少见,易与其他类型AML混淆。细胞化学:APL的典型特征表现为过氧化酶强阳性、非特异性酯酶强阳性且不被氟化钠抑制、碱性磷酸酶和糖原染色(PAS)呈阴性或弱阳性。

(2)免疫分型: 免疫分型在APL诊断中起到辅助作用。其典型表现:表达CD13、CD33、CD117和MPO,不表达或弱表达CD34、HLA-DR、CD11b、CD14、CD64、CD56。少数表达CD56患者提示预后较差。 (3)细胞遗传学: 典型APL表现为t(15;17)(q22;q12)。变异型APL占2%,如t (11;17)(11q23;q12)、t(5;17)(5q35;q12)、t(11;17)(q13;q21)、der(17)、t(17;17)(q24;q12)、t(4;17)(q12;q21)、t(X;17)(p11;q21)、t(2;17)(q32;q21)、t(3;17)(q26;q21)、t(7;17)(q11;q21)、t(1;17)(q42;q21)等。5%的APL患者核型正常。常规染色体检测有时还可发现除t(15;17)以外的附加染色体异常。 (4)分子生物学: ①PML-RARα融合基因:98%以上的APL患者存在PML-RARα融合基因,另有低于2%的APL患者为其他类型融合基因(见以下变异型APL 诊断标准),检测PML-RARα融合基因是诊断APL的最特异、敏感的方法之一,也是APL治疗方案选择、疗效评价、预后分析和复发预测最可靠的指标。实时定量PCR(RQ-PCR)可在99%的典型APL患者中检出PML-RARα融合基因,但仍有1%的APL患者可出现假阴性。②基因突变:部分APL患者可伴有FLT3-ITD突变。 4.其他检查:心电图,超声心动图(必要时),胸片,腹部B超或CT(必要时)。

数学建模中常见的十大模型

数学建模常用的十大算法==转 (2011-07-24 16:13:14) 转载▼ 1. 蒙特卡罗算法。该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,几乎是比赛时必用的方法。 2. 数据拟合、参数估计、插值等数据处理算法。比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用MA TLAB 作为工具。 3. 线性规划、整数规划、多元规划、二次规划等规划类算法。建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo 软件求解。 4. 图论算法。这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备。 5. 动态规划、回溯搜索、分治算法、分支定界等计算机算法。这些算法是算法设计中比较常用的方法,竞赛中很多场合会用到。 6. 最优化理论的三大非经典算法:模拟退火算法、神经网络算法、遗传算法。这些问题是用来解决一些较困难的最优化问题的,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。 7. 网格算法和穷举法。两者都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。 8. 一些连续数据离散化方法。很多问题都是实际来的,数据可以是连续的,而计算机只能处理离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。 9. 数值分析算法。如果在比赛中采用高级语言进行编程的话,那些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。 10. 图象处理算法。赛题中有一类问题与图形有关,即使问题与图形无关,论文中也会需要图片来说明问题,这些图形如何展示以及如何处理就是需要解决的问题,通常使用MA TLAB 进行处理。 以下将结合历年的竞赛题,对这十类算法进行详细地说明。 以下将结合历年的竞赛题,对这十类算法进行详细地说明。 2 十类算法的详细说明 2.1 蒙特卡罗算法 大多数建模赛题中都离不开计算机仿真,随机性模拟是非常常见的算法之一。 举个例子就是97 年的A 题,每个零件都有自己的标定值,也都有自己的容差等级,而求解最优的组合方案将要面对着的是一个极其复杂的公式和108 种容差选取方案,根本不可能去求解析解,那如何去找到最优的方案呢?随机性模拟搜索最优方案就是其中的一种方法,在每个零件可行的区间中按照正态分布随机的选取一个标定值和选取一个容差值作为一种方案,然后通过蒙特卡罗算法仿真出大量的方案,从中选取一个最佳的。另一个例子就是去年的彩票第二问,要求设计一种更好的方案,首先方案的优劣取决于很多复杂的因素,同样不可能刻画出一个模型进行求解,只能靠随机仿真模拟。 2.2 数据拟合、参数估计、插值等算法 数据拟合在很多赛题中有应用,与图形处理有关的问题很多与拟合有关系,一个例子就是98 年美国赛A 题,生物组织切片的三维插值处理,94 年A 题逢山开路,山体海拔高度的插值计算,还有吵的沸沸扬扬可能会考的“非典”问题也要用到数据拟合算法,观察数据的

pml基础语法简明教程

第一部分: 基础知识 PML基本概念 Programmable Macro Language 可编程宏语言. 通常的PML开发包括两部分, 一部分是PML宏,脚本语言; 另一部分是PML2,面向对象的编程语言. 1.PML宏(Macro) 宏, 就是一系列pml命令的集合. 通过$m执行. 格式为: $m filename [param1 param2 ….] (举例) 其中param1为参数, 宏可以参数化. (举例) 2.面向对象的PML2 PML支持对象(Object),对话框(Form)和菜单(Menu). (举例) 一.变量,函数和方法 1. 变量的定义及用法 在PML2中, 每一个变量都是对象. 变量名以!或者!!开头,例如!weight. !开头的变量为局部变量, !!开头的为全局变量. PML内置了常用的变量类型. (1)Real 实属类型. 提供基本的四则运算操作. 例如 !a = 10 !b = 10 !a = !a + !b $p $!a --输出变量a的值 (2)String 字符串类型. 例如 !strName = ‘/EQUI-TEST-1’ (3)Boolean 用于逻辑表达式. 值只能是true/false (4)Array 数组 (5)Position (6)Direction 3.变量的创建, 删除, 查看 变量可以用赋值来创建. 例如 !str = ‘abc’ 也可以用类型标识来创建. !str= string() !str= ‘abc’ 删除: !str.delete() 查看:通常使用q var!str也可以用$p $!str 4.方法(method) 和函数(Function) Method是一个对象的子程序. 只有当对象存在,才可以调用对象的方法. 例如

物联网中的通信语言PML

The Communicating Language in EPCglobal: PML 物联网中的通信语言:PML PML:物体标记语言 摘要:随着RFID 的大规模应用,EPC 物联网也得到了很大的发展。在此物联网络中,相互通信的公共语言是PML。PML是在XML的基础上扩展而来,用于描述自然物体、处理过程及环境情况。本文详细地讲述了PML 语言的概念、组成、设计,并给出了其应用实例。EPC的6个组成部件: EPC编码标准 EPC标签 阅读器 Savant ONS EPC信息服务器(EPCIS,旧称PML服务器) PML设计 现实生活中的产品丰富多样,难以用一个统一的语言来客观的描述每一个物体。然而,自然物体都有着共同的特性,如体积、重量;企业、个人交易时有着时间、空间上的共性。例如,苹果、橙子、统一鲜橙多,它们三者都属于食品饮料,而苹果、橙子同属于农作物,鲜橙多又是橙子加工后的商品;人们交易一箱苹果的时间、地点又是相同的。但是,自然物体的一些相关信息(如生产地、保质期)不会变化。同时,EPC物联网是建立在现有的互联网上的。为此,作为描述物体信息载体的PML 语言,其设计有着独特的要求。 (1)开发技术 PML 首先使用现有的标准(如XML、TCP/IP)来规范语法和数据传输,并利用现有工具来设计编制PML 应用程序。PML 需提供一种简单的规范,通过通用默认的方案,使方案无需进行转换,即能可靠传输和翻译。PML 对所有的数据元素提供单一的表示方法,如有多个对数据类型编码的方法,PML 仅选择其中一种,如日期编码。 (2)数据存储和管理 PML 只是用在信息发送时对信息区分的方法,实际内容可以任意格式存放在服务器(SQL 数据库或数据表)中,即不必一定以PML 格式存储信息。企业应用程序将以现有的格式和程序来维护数据,如Aaplet 可以从互联网上通过ONS来选取必需的数据,为便于传输,数据将按照PML 规范重新进行格式化。这个过程与DHTML 相似,也是按照用户的输入将一个HTML 页面重新格式。此外,一个PML“文件”可能是多个不同来源的文件和传送过程的集合,因为物理环境所固有的分布式特点,使得PML“文件”可以在实际中从不同位置整合多个PML片断。 (3 )设计策略 现将PML 分为PML Core(PML 核)与PML Extension(PML扩展)两个主要部分进行研究,如图3 所示。

数学建模常见问题

1 预测模块:灰色预测、时间序列预测、神经网络预测、曲线拟合(线性回归); 2 归类判别:欧氏距离判别、fisher判别等; 3 图论:最短路径求法; 4 最优化:列方程组用lindo 或lingo软件解; 5 其他方法:层次分析法马尔可夫链主成分析法等; 6 用到软件:matlab lindo (lingo)excel ; 7 比赛前写几篇数模论文。 这是每年参赛的赛提以及获奖作品的解法,你自己估量着吧…… 赛题解法 93A非线性交调的频率设计拟合、规划 93B足球队排名图论、层次分析、整数规划 94A逢山开路图论、插值、动态规划 94B锁具装箱问题图论、组合数学 95A飞行管理问题非线性规划、线性规划 95B天车与冶炼炉的作业调度动态规划、排队论、图论 96A最优捕鱼策略微分方程、优化 96B节水洗衣机非线性规划 97A零件的参数设计非线性规划 97B截断切割的最优排列随机模拟、图论 98A一类投资组合问题多目标优化、非线性规划 98B灾情巡视的最佳路线图论、组合优化 99A自动化车床管理随机优化、计算机模拟 99B钻井布局0-1规划、图论 00A DNA序列分类模式识别、Fisher判别、人工神经网络 00B钢管订购和运输组合优化、运输问题 01A血管三维重建曲线拟合、曲面重建 01B 工交车调度问题多目标规划 02A车灯线光源的优化非线性规划 02B彩票问题单目标决策 03A SARS的传播微分方程、差分方程 03B 露天矿生产的车辆安排整数规划、运输问题 04A奥运会临时超市网点设计统计分析、数据处理、优化 04B电力市场的输电阻塞管理数据拟合、优化 05A长江水质的评价和预测预测评价、数据处理 05B DVD在线租赁随机规划、整数规划

数学建模中常见的十大模型

数学建模中常见的十大 模型 Document serial number【KKGB-LBS98YT-BS8CB-BSUT-BST108】

数学建模常用的十大算法==转 (2011-07-24 16:13:14) 1. 蒙特卡罗算法。该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,几乎是比赛时必用的方法。 2. 数据拟合、参数估计、插值等数据处理算法。比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用MATLAB 作为工具。 3. 线性规划、整数规划、多元规划、二次规划等规划类算法。建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo 软件求解。 4. 图论算法。这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备。 5. 动态规划、回溯搜索、分治算法、分支定界等计算机算法。这些算法是算法设计中比较常用的方法,竞赛中很多场合会用到。 6. 最优化理论的三大非经典算法:模拟退火算法、神经网络算法、遗传算法。这些问题是用来解决一些较困难的最优化问题的,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。 7. 网格算法和穷举法。两者都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具。

8. 一些连续数据离散化方法。很多问题都是实际来的,数据可以是连续的,而计算机只能处理离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。 9. 数值分析算法。如果在比赛中采用高级语言进行编程的话,那些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。 10. 图象处理算法。赛题中有一类问题与图形有关,即使问题与图形无关,论文中也会需要图片来说明问题,这些图形如何展示以及如何处理就是需要解决的问题,通常使用MATLAB 进行处理。 以下将结合历年的竞赛题,对这十类算法进行详细地说明。 以下将结合历年的竞赛题,对这十类算法进行详细地说明。 2 十类算法的详细说明 蒙特卡罗算法 大多数建模赛题中都离不开计算机仿真,随机性模拟是非常常见的算法之一。 举个例子就是97 年的A 题,每个零件都有自己的标定值,也都有自己的容差等级,而求解最优的组合方案将要面对着的是一个极其复杂的公式和108 种容差选取方案,根本不可能去求解析解,那如何去找到最优的方案呢随机性模拟搜索最优方案就是其中的一种方法,在每个零件可行的区间中按照正态分布随机的选取一个标定值和选取一个容差值作为一种方案,然后通过蒙特卡罗算法仿真出大量的方案,从中选取一个最佳的。另一个例子就是去年的彩票第二问,要求设计一种更好的方案,首先方案的优劣取决于很多复杂的因素,同样不可能刻画出一个模型进行求解,只能靠随机仿真模拟。

pml基础手册与总结

PML开发介绍与总结 1 pml语言简介 (2) 1.1 pml变量 (2) 1.2 变量类型 (2) 1.3 自定义变量类型 (3) 1.4 定义变量 (3) 1.5 函数(Function)和方法(Method) (4) 1.6 使用ANY类型的变量作为函数参数 (5) 1.7 变量的方法 (6) 1.8 自定义变量类型的方法 (7) 1.9 方法的重载 (8) 1.10 Unset和Undefined (9) 1.11 删除变量 (10) 2 Pml的一些特点 (10) 3 Pml表达式 (11) 4 pml流程控制 (11) 4.1选择结构 (12) 4.2 do循环 (13) 4.3 GoLabel跳转语句 (14) 5 pml数组 (15) 5.1 定义数组 (15) 5.2 数组的赋值 (15) 5.3 多维数组 (15) 5.4 数组的方法 (16) 5.5 利用数组进行字符串处理 (17) 5.6 数组排序 (18) 5.7 Do values循环和Do indices循环访问数组变量 (19) 6 pml宏文件概念及其运行 (19) 6.1 概念 (19) 6.2 带参数的宏文件 (20)

语言简介介 1pml语言简 pml是用于pdms二次开发的面向对象的编程语言,它的面向对象属性是与其他脚本语言的最大区别,也是现代高级语言的基本特征。pml提供了编辑窗体和菜单的功能,且语法简单方便,使得pml能实现高级语言的大部分功能,用户可以开发自己的菜单窗体,完成需求定制。 pml提供了大量的变量类型(object type)及与变量类型相对应的方法(method)。pml 提供的方法实用,具有针对性。比如数组(Array object)可以存放不同的数据类型,可以进行排序、清空没有赋值的元素、查找、删除等等方法,这是大多数高级语言没有提供的功能。 1.1pml变量 对于pml语言,每个变量即是一个object,对应一个变量类型object type。不同类型的变量只能保存对应类型的数据。pml变量的特点: 变量名称唯一,且不能重复。 每个object type即是一个类(class),有属于类的通用的方法和属性。因此每个pml 的变量(object)都可以调用所属类的方法。 每个变量对应一个变量类型,在定义变量前,对应的变量类型必须存在。 1.2变量类型 Pml的变量类型比较多,可以分为三类,built-in、system-defined、user-defined。 Built-in变量类型包括以下几种: 字符串 实数 布尔 数组 system-defined变量类型包括Direction,Position,Orientation等多种类型,详细信息可以参考手册。 user-defined变量类型是指用户自定义的类型。

PML基础

PML 基础 王 元 AVEVA 中国2004.9.21 课程将包括... q PML 介绍 –PML 概念–PML 功能–PML 构成 q PML 程序语言 –变量的定义及用法 –循环Do 、判断If 、跳转Golabel –错误处理–文件处理 –函数Functions 、方法 Method – 对话框Forms 和菜单Menu 课程结束后... q 您会具有以下知识… –PML 构成及功能–编写简单的宏–PML 变量的定义及应用–PML 函数/方法的定义及调用–PML 窗体 /对象的定义及调用 PML -功能强大的语言 q P rogrammable M acro L anguage 可编程宏语言 q PML2基于面向对象(Object Oriented)概念的编程语言q 支持用户可自定义对象类型(Object Types)q 简单易学,与PDMS 无缝连接q 丰富的内置函数,方法及对象q 最简单的对话框,菜单编写语言 PML 构成 q Macros –Macros 是包含PDMS 命令序列的ASCII 文件 –Macros 在PDMS 中通过$m /FILENAME 来执行 q PML –变量(Variables) –判断语句(if Constrcuct)–循环(Do loops) –错误处理(Error Handling) – 文件处理(Files and Directories) q 窗体和菜单 –PDMS 大多数应用程序都由对话框(Forms)和菜单(Menus)来驱动

一个简单的Macro q 宏是包含 PDMS 命令序列的一个文本文件q 运行宏 $M /MyFile ASCII 文件MYFILE NEW EQUIP /FRED NEW BOX XLEN 300 YLEN 400 ZLEN 600NEW CYL DIA 400 HEI 600 CONN P1 TO P2 OF PREV NEW EQUIP /$1NEW BOX XLEN $2 YLEN $3 ZLEN $4NEW CYL DIA $3 HEI $4 CONN P1 TO P2 OF PREV ASCII 文件MYFILE 一个简单的Macro ,继续, 参数化宏Parameterized Macro q 宏可以参数化 q 文件名后面的字符串是参数(parameters) $M /MyFile NEWEQUIP 300 400 600 宏的参数 q Macros 可以有多达9 个由空格分隔的参数. $M /MyFile PML TRAINING 55 66 q 文本字符串可以以单个参数输入 $M /MyFile $< PML TRAINING $> 55 66 q $<和$>是分隔符,在它们之间的任何字符都被认为是单个参数 变量Variables q 变量基本概念 –变量用于存储数值,变量必须有名字,变量的数值可以改变,但变量名是固定的. q PML 变量 –在PML2中变量是一个对象(Objects) ?每一个对象(变量)有一个唯一的名字 ?每一个对象都有一套函数与之相关联,这些函数称为方法(Methods).方法用于处理对象中的数据 ?生成对象时必须指明对象类型(Object type),不同的对象类型对应不同的方法 对象(变量 )类型Object Types q 内置(Build-in)的对象类型 –字符串类型(String).如'Hello World' –实数类型(Real).整数类型包括在实数类型中,如99–布尔类型(Boolean).用于逻辑表达式,如True,False –数组类型(Array).可以存储任意类型的数据 q 系统定义(System-defined)的对象类型 –指在PDMS 中的变量类型,如Positon,Reference q 用户自定义(User-defined)的对象类型 生成、查询、删除变量 q 使用命令行或者文本文件测试q 通过赋值声明变量类型 !MyString = 'Hello World'Q var !MyString 显示 'Hello World' q 直接声明变量类型 !Length = Real()Q Var !Length 显示 Unset q 删除变量用到方法 !MyString.Delete ()

数学建模方法归类(很全很有用)

在数学建模中常用的方法:类比法、二分法、量纲分析法、差分法、变分法、图论法、层次分析法、数据拟合法、回归分析法、数学规划(线性规划,非线性规划,整数规划,动态规划,目标规划)、机理分析、排队方法、对策方法、决策方法、模糊评判方法、时间序列方法、灰色理论方法、现代优化算法(禁忌搜索算法,模拟退火算法,遗传算法,神经网络)。 用这些方法可以解下列一些模型:优化模型、微分方程模型、统计模型、概率模型、图论模型、决策模型。拟合与插值方法(给出一批数据点,确定满足特定要求的曲线或者曲面,从而反映对象整体的变化趋势):matlab可以实现一元函数,包括多项式和非线性函数的拟合以及多元函数的拟合,即回归分析,从而确定函数;同时也可以用matlab实现分段线性、多项式、样条以及多维插值。 在优化方法中,决策变量、目标函数(尽量简单、光滑)、约束条件、求解方法是四个关键因素。其中包括无约束规则(用fminserch、fminbnd实现)线性规则(用linprog实现)非线性规则、(用fmincon实现)多目标规划(有目标加权、效用函数)动态规划(倒向和正向)整数规划。 回归分析:对具有相关关系的现象,根据其关系形态,选择一个合适的数学模型,用来近似地表示变量间的平均变化关系的一种统计方法(一元线性回归、多元线性回归、非线性回归),回归分析在一组数据的基础上研究这样几个问题:建立因变量与自变量之间的回归模型(经验公式);对回归模型的可信度进行检验;判断每个自变量对因变量的影响是否显著;判断回归模型是否适合这组数据;利用回归模型对进行预报或控制。相对应的有线性回归、多元二项式回归、非线性回归。 逐步回归分析:从一个自变量开始,视自变量作用的显著程度,从大到地依次逐个引入回归方程:当引入的自变量由于后面变量的引入而变得不显著时,要将其剔除掉;引入一个自变量或从回归方程中剔除一个自变量,为逐步回归的一步;对于每一步都要进行值检验,以确保每次引入新的显著性变量前回归方程中只包含对作用显著的变量;这个过程反复进行,直至既无不显著的变量从回归方程中剔除,又无显著变量可引入回归方程时为止。(主要用SAS来实现,也可以用matlab软件来实现)。 聚类分析:所研究的样本或者变量之间存在程度不同的相似性,要求设法找出一些能够度量它们之间相似程度的统计量作为分类的依据,再利用这些量将样本或者变量进行分类。 系统聚类分析—将n个样本或者n个指标看成n类,一类包括一个样本或者指标,然后将性质最接近的两类合并成为一个新类,依此类推。最终可以按照需要来决定分多少类,每类有多少样本(指标)。 系统聚类方法步骤: 1.计算n个样本两两之间的距离 2.构成n个类,每类只包含一个样品 3.合并距离最近的两类为一个新类 4.计算新类与当前各类的距离(新类与当前类的距离等于当前类与组合类中包含的类的距离最小值), 若类的个数等于1,转5,否则转3 5.画聚类图 6.决定类的个数和类。 判别分析:在已知研究对象分成若干类型,并已取得各种类型的一批已知样品的观测数据,在此基础上根据某些准则建立判别式,然后对未知类型的样品进行判别分类。 距离判别法—首先根据已知分类的数据,分别计算各类的重心,计算新个体到每类的距离,确定最短的距离(欧氏距离、马氏距离) Fisher判别法—利用已知类别个体的指标构造判别式(同类差别较小、不同类差别较大),按照判别式的值判断新个体的类别 Bayes判别法—计算新给样品属于各总体的条件概率,比较概率的大小,然后将新样品判归为来自概率最大的总体 模糊数学:研究和处理模糊性现象的数学(概念与其对立面之间没有一条明确的分界线)与模糊数学相关的问题:模糊分类问题—已知若干个相互之间不分明的模糊概念,需要判断某个确定事物用哪一个模糊概念来反映更合理准确;模糊相似选择—按某种性质对一组事物或对象排序是一类常见的问题,但是用来比

PDMS 12.0 编程基础ABC

下面是PDMS编程介绍 一个简单的Macro NEW EQUIP /FRED NEW BOX XLEN 300 YLEN 400 ZLEN 600 NEW CYL DIA 400 HEI 600 CONN P1 TO P2 OF PREV 参数化宏Parameterized Macro NEW EQUIP /$1 NEW BOX XLEN $2 YLEN $3 ZLEN $4 NEW CYL DIA $3 HEI $4 CONN P1 TO P2 OF PREV 变量给属性赋值 New Pipe Desc 'My Description' Temp 100 Pspec /A3B Purp PIPI !desc = desc !temp = temp !pspec = pspec !purp = purp New Pipe Desc '$!desc' Temp $!temp !pspec $!pspec !purp $!purp 字符串方法实例 !line = 'hello how are you' !newline = !line.after('hello').trim().upcase()

q var !newline !newline = !newline.replace('how', 'where').replace('you', 'you?') 定义函数 define function !!Area( !Length is REAL, !Width is REAL ) is REAL !Area = !Length * !Width return !Area $*函数!!Area有两个参数一个返回值Endfunction 练习-新建函数计算园的面积,测试函数 define function !!circleArea( !radius is REAL) is REAL !Area = PI * pow(!radius,2) return !Area Endfunction 条件判断语句(If Construct) !Type = Type !OwnType = Type of Owner IF (!Type eq 'BRAN') THEN $P CE is Branch. ELSEIF (!OwnType eq 'BRAN') THEN $P CE is Branch member. ELSE $P CE is $!Type,Pls select Branch. ENDIF 练习-条件判断 !n = 0 !type = type if(!type eq 'BRAN') then !href = href !tref = tref if(!href.set()) then !n = !n + 1 add href endif if(!tref.set()) then !n = !n + 1 add tref

中考数学模型的常见类型及其应用

中考数学模型的常见类型及其应用 史承灼 【摘要】“联系实际,加强应用”已经成为数学教育改革的一个重要方面,以应用数学的理论和方法解决实际问题的能 力为目标的“问题解决”亦已成为中考一大热点.而“数学模 型”或“数学建模”则是实现“数学问题解决”的基本手段和 主要内容.初中阶段常见的数学模型大致有:数与式、方程、 不等式、函数、三角、几何和统计模型等. 【关键词】初中数学问题解决构建数学模型随着数学教育改革的不断发展和深入,“联系实际,加强应用”已经成为数学 教育改革的一个重要方面,在基础教育中以培养应用数学的理论和方法解决实际问题的能力为目标的“问题解决”越来越引起人们的高度关注,亦已成为国际数学教育的一大热点.而“数学模型”或“数学建模”则是实现“数学问题解决”的基本手段和主要内容.掌握常见的“数学模型”和“数学建模”的方法,将会激发学生的创造能力,有助于应用数学知识解决实际问题能力的提高,从而达到加强“数学问题解决”教育的目的. 在数学的“问题解决”中,应用数学知识去解决实际问题,首先要把实际问题中的数学问题明确地表述出来,也就是说,要通过对实际问题的分析、归纳给出以描述这个问题的数学提法;然后才能使用数学的理论和方法进行分析,得出结论;最后再返回去解决现实的实际问题.由于实际问题的复杂性,往往很难把现成的数学理论直接套用到这些实际问题上,这就必须要在数学理论和所要解决的实际问题之间构建一个桥梁来加以沟通,以便把实际问题中的数学结构明确地表示出来,这个桥梁就是“数学模型”,这个桥梁的构建过程就是“数学建模”.一般说来,所谓数学模型是指通过抽象和简化,使用数学语言对实际现象的一个近似的刻画,以便于人们更深刻地认识所研究的对象.而“数学建模”的过程 考数学试题中,常见的应用问题按解决问题时建立数学模型所用数学知识和方法的

物联网应用论文3000字

物联网应用论文3000字 篇一:物联网应用论文 物联网论文 姓名:汪千飞 班级:国贸111班 学号:2403110018 摘要:近几年来物联网技术受到了人们的广泛关注。本文介绍了物联网技术的研究背景,传感网的原理、应用、技术,无锡是首个国家传感网信息中心。以最具代表性的基于RFID的物联网应用架构、基于传感网络的物联网应用架构、基于M2M的物联网应用架构为例,对物联网的网络体系与服务体系进行了阐述;分析了物联网研究中的关键技术,包括RFID技术、传感器网络与检测技术、智能技术和纳米技术; 关键词:物联网RFID 传感网 M2M 物联网的原理 物联网是在计算机互联网的基础上,利用RFID、无线数据通信等技术,构造一个覆盖世界上万事万物的“Internet of Things”。在这个网络中,物品(商品)能够彼此进行“交流”,而无需人的干预。其实质是利用射频自动识别(RFID)技术,通过计算机互联网实现物品(商品)的自动识别和信息的互联与共享。 而RFID,正是能够让物品“开口说话”的一种技术。在“物联网”的构想中,RFID标签中存储着规范而具有互用性的信息,通过无线数据通信网络把它们自动采集到中央信息系统,实现物品(商品)的识别,进而通过开放新的计算机网络实现信息交换和共享,实现对物品的“透明”管理。

“物联网”概念的问世,打破了之前的传统思维。过去的思路一直是将物理基础设施和IT基础设施分开:一方面是机场、公路、建筑物,而令一方面是数据中心,个人电脑、宽带等。而在“物联网”时代,钢筋混凝土、电缆将与芯片、宽带整合为统一的基础设施,在此意义上,基础设施更像是一块新的地球工地,世界的运转就在它上面进行,其中包括经济管理、生产运行、社会管理乃至个人生活。 应用与技术 物联网可以以以电子标签和EPC(Electronic Product Code,产品电子代码)码为基础,建立在计算机互联网基础上形成实物互联网络,其宗旨是实现全球物品信息的实时共享和互通。物联网的系统结构由信息采集系统、PML信息服务器、产品命名服务器(ONS)和应用管理系统四部分组成。它们的功能如下:信息采集系统。信息采集系统包括产品电子标签、读写器、驻留有信息采集软件的上位机组成,主要完成产品的识别和产品EPC码的采集和处理。存储有EPC码的电子标签在经过读写器的感应区域时,产品EPC码会自动被读写器捕获,从而实现自动化EPC信息采集,采集的数据将交由上位机信息采集软件进行进一步的处理,如数据校对、数据过滤、数据完整性检查等,这些经过整理的数据可以为上层应用管理系统使用。 PML信息服务器。PML(Physical Markup Language,实体描述语言)信息服务器由产品生产商建立并维护,他们根据事先规定的原则对产品进行编码,并利用标准的XML对产品的详细信息进行描述。PML服务器在物联网中的作用在于以通用的格式提供对产品原始信息的描述,便于其他节点的访问。

相关文档
最新文档