




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、allegroskill简介AXL-SKILL专用于allegro的skill被称为AXL-SKILL,只有使用这些专用的函数才可以直接访问allegro的database。结合skill语法和这些专用函数可以编写出实现各种功能的命令。专用于allegro的skill都是以axl开头,比如axlClearSelSet()。运行AXL-SKILL在allegro中输入skill就得到了AXL-SKILL的运行环境,在这样的环境中可以直接调用AXL-SKILL命令/函数,另外输入settelskill可以得到一个尺寸大小可调的skill开发窗口。(万一没有弹出窗口,尝试在allegro菜单里面,选
2、择setup-userprference-skill-telskillOK)AXL-SKILLDatabaseallegro中的每个对象object(比如IC元件,net)都有一个对应的dbid(databaseidentifiers),AXL-SKILL操作allegro的也正是这些dbidodbid对象:在不同的级别上的dbid是不一样的,比如在Design以及包含的database对象有PropertyDictionary,Lines,Text,Polygons,Shapes,PropertyDefinitions,DRCs,ViasthatarePadstackobjecttypes,
3、SymbolsthatareSymdefobjecttypes,Components,Nets;而在Symbol级别上则是PPinsthatarePadstackobjecttypes,ViasthatarePadstackobjecttypes,Lines,Arcs,Text,Polygons,Shapes。allegroskilldatabase对象类型1.database对象描述1.1对象类型Figureobjects:Arcs,Branches,DesignFiles,Drcs,Lines,Paths,Polygons,Logicalobjects:Components,Ppins,S
4、hapes,Symbols,Tees,Vias,Pads,Padstacks,Symdefs;Functions,FunctionPins,Nets;Propertydictionaryobjects;Parameterobjects:Design,Display,LayerGroup,Layer,TextblockGroup,Textblock。1.2基本操作尽管有如此之多的类型,但是在allegro中的操作其实就是找到合适的database元素,然后对其操作就好了。只要保证被访问的元素的dbid有效,就可以对其进行处理。Figure类型Figure在allegroPCBEditer里面一般
5、被成为几何形状,一个Figure类型的元素通常具有如下的属性。常见的Figure属性属性名类型描述bBoxbboxFiguresboundingboxbranchdbidForetch,thefiguresbranchparentlayert_layerLayeroffigure,nilifobjectismulti-layerparentdbidNonconnectiveownernetdbidNetobjectiffigureisassociatedwithanet注意:对于所有空(dummy)网络的Figure,它们的net属性都是,而不是nil。Figure有很多的类型,每个类型都有很
6、多个属性,具体的信息请参考algroskill.pdf文档的第二章,这里只列出其中的Line。Line的属性列表(除Figure类型常见的属性以外的部分)属性名类型描述isEtcht/nilCLINE;nil=aLINElineTypes_typesymbol:horizontal,vertical,oddobjTypestringofobject,inthiscaseZ*-1lineparentdbidPath,polygon,orshapestartEndl_pointStartandendpointswidthfloatWidthofLogical类型Logical类型其实就是和电气有关
7、的属性,比如网络连接(net),电子器件component)等。Logical类型通常都具有objType,prop,andreadOnly3种属性。如果你选择了一个component,那么它的objType就是component,如果选择的是pin,则objType属性值就是pin一个简单的例子Bus(总线),其它的Logical类型请参考Cadence的algroskill.pdf文件属性名类型描述groupMembersl_dbidListofxnetsofthebusnamestringNameofthebusobjTypestringgroup“BUS”typestringPrope
8、rtyDictionary类型在allegro的应用中会根据工作的需要自己定制(创建)属性用户定义的属性(userdefinedproperties)。Allegro支持用户创建具备如下特性的属性NETS,COMPONENTS,FUNCTIONSPINS,VIAS,SHAPES,SYMBOLS,CLINES,LINES,DRCS,FIGURES,DESIGNS,COMPDEFS,PINDEFS,FUNCDEFS。如果你仓U建了一个只包含SYMBOLS类型的属性,那么你创建的这个属性只能被赋给Allegro中的Symbol对象,而不可以赋给一个net或其它非Symbol的对象。Parameter
9、类型Parameter的简单理解就是Allegro中个各个设置参数,举个简单的例子,系统(Design)级别的参数列表。DesignParameter属性属性名可设置否?类型描述accuracynointegerNumberofdecimalplacesofaccuracybBoxnobboxThedesignsboundingboxheightnofloatHeightinuserunitsobjTypenostringTypeofobject,inthiscaseparamDesignunitsnostringTypeofuserunits(mils,inch,micron,millime
10、terandcentimeter)widthnofloatWidthinuserunitsxynopointLowerleftcornerofdesign注意:可设置否表示的是能否通过函数axlParamSet来设置。下一章将主要讲对AllegroParameter的操作,对参数的读取,修改与更新等等。allegroskillDatabase操作相关函数5.1DatabaseRead函数和以前一样,这里只介绍部分的函数,其它的函数请参考algroskill.pdf文件。axlDBGetDesign()=dbid,当前design的dbid,基本上来说整个design的所有信息都可以通过这个db
11、id得到。比如design有多少个component,每个component的dbid;比如design有多少drc,每个drc又分别是什么等等。axlDBGetAttachedText(o_dbid)=textdbid得到o_dbid对象所具有的(被attached的)text的dbid列表。该函数常用于在一个包含很多text的symbol对象上查找特定text的应用中。比如我们通常会把一个design放在适当尺寸的sheet中,对应于design的各个层,sheet也会有对于的页码来表示,比如sheet的第1页是Top层,那么inti层可能就是第2页,如果你想写个程序来实现页码的自动更新,
12、就会用到这个函数来找到需要被修改的字符(text),然后用后面将要说到的DatabaseCreate相应函数来修改选中的字符。axlDBGetPad(o_dbidt_layert_type)=paddbid,获得pin,via,padstack相应层的特定pad。比如axlDBGetPad(dpin“Etch/Topanti“)=dpin对象在Top层的anti-pad的dbid。通过这个dbid又可以进一步得到pad的一些相关属性。axlDBGetPropDictEntry(t_name)=propdefinition,得到userdefinedproperties里面设置的各个属性的信息,
13、比如属性类型,应用的对象。axlDBGetProperties(o_dbidlt_type)=l_results得到o_dbid所具有的properties列表,allegro默认的或者是userdefinedoaxlDBIsFixed(o_dbid)=t/nil,判断一个对象是不是被fixed了。通常在用户程序想修改一些design的对象的时候,必须先确定该对象是不是被fixed了,fixed对象是不可以被修改的。(用户必须先给fixed的对象un-fixed,然后才能进行修改)axlDBGetShapes(t_layer)=shapedbid,种获取指定层所有shape的快捷方式。(通常的
14、获取对象的方式都是先要设置FindFilter,然后addselect,再getselset,3步才可以。)5.2DatabaseCreate首先allegro本身不支持的操作使用下面将要给出的AXL-Skill函数也是无法实现的。比如allegro不支持将一个cline画到非Etch层去,那么用axlDBCreatePath()也无法在非Etch层Create个cline的。对于非法操作,函数的返回值都是nilo要想让你create的对象立即显示出来有2种方法,运行axlDisplayFlush()命令来刷新allegro的显示状态,或者运行一个allegro本身的命令,否则的话你creat
15、e的对象是不会被显示出来的。Path部分的函数Path指的是各种形状的Line。Path总会有个起点有个终点,axlPathStart函数用于确定起点,而终点则是Path里面的最后一点。axlPathStart(l_pointsf_width)=r_path,产生一个path对象并确定起点axlPathArc(Radius/Angle/Center)=这里的三个函数都是用来生成曲线的axlPathLine()=向一个path末尾添加一个点axlPathGetWidth(r_path)=得到一个path的宽度,如果一个path中的各个segment的宽度都不一样,可以使用axlPathSegGe
16、tWidth()函数。axlPathSegGetEndPoint(r_pathSeg)=得到path的最后一个点,相关的函数还有axlPathGetLastPathSeg()用来得到path的最后一个segment。axlDBCreatePath()和axlDBCreateLine(),将不可见的path或point列表转变成可见的实际存在的Line,Create在不同的layer,将产生不同的对象,比如在Etchlayer将产生Cline对象,在Silkscreenlayer就是些简单的Line。Shape部分函数Shape是几何图形,所以CreateShape通常需要先提供一个boundr
17、y(Shape的边界/区域),而这通常有2种方式,其一是使用上面讲到的Path函数来Create个闭合的区域,其二是用Polygon函数来为Shape提供一个Polygon。Polygon相关函数Polygon是多边形的意思,其实和Shape一样(根据Polygon生成的Shape,所以当然是一样的),只是Polygon是不可见的,而Shape是可见的。Polygon的操作函数之所以不并入Shape我想可能是因为每次对Shape形状的改变allegro都会update整个design的shape,顺便还要updateDRC(Shape和On-LineDrc没有disable的情况下),这都是些
18、很耗时的操作Polygon的任何操作都不会影响到design,直到当它最后呈现为Shape时。axlPolyFromDB(),获得指定对象的Polygon,这是一个非常好用的函数,比如有个形状很怪异的Pad,而你必须根据这个Pad画出个Shape,这个时候你就可以直接用这个命令直接得到那个Pad的Polygon,然后就可以生产Shape了,很简单。axlPolyOperation(),Polygon的一些操作,比如多个Polygon以某个规则(ANDORANDNOT)组合到一起,形成一个/多个新Polygon。axlPolyExpand(),将Polygon扩展/压缩一定的尺寸示例:实现all
19、egro的mergeshape的命令a.选择需要被merge的Shapeb.使用axlPolyFromDB函数得到每一个Shape的Polygonc.使用axlPolyOperation函数的AND规则,将多个Polygon形成一个d.删除选中的所有Shapee.使用下面将要提到的axlDBCreateShape命令生成新的ShapeShape相关函数axlDBCreateOpenShape,这个函数是用来Create一个Open状态的Shape的,Open的意思是可以在Create的Shape上再添加Void。axlDBCreateCloseShape,这个函数是前一个函数的补充,Open状
20、态的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,比如前面提到的自动修改
21、字符的操作,这个命令就可以生成指定的字符。Property函数axlDBCreatePropDictEntry,在userdefinedproperty列表中创建一个新的property类型axlDBAddProp,将指定的property赋予特定的对象,比如将FixedProperty赋予一个Component,这个和allegro本身的Fixed命令是一样的。DatabaseGroupGroup比较简单,相关的函数也不是很多。axlDBCreateGroup,create个新的Group对象axlNetClassCreate,create一个NetClass对象axlRegionCreat
22、e,create一个Region对象NetClass和Region是16.0以后新的属性DatabaseAttachment这里说至U的Attachment是attach至Udesign的database中的。axlCreateAttachment(t_attachmentIdt_passwdx_revisions_dataFormatt_data)=Create一个名字/ID是t_attachmentId的attachment,t_password设定密码,x_revision确定版本,s_dataFormat将决定t_data的数据类型。axlGetAllAttachmentNames()
23、=得到designDatabase中所有attachment的dbid列表。axlGetAttachment(t_attachmentIds_dataFormat)=获得扌旨定attachment的value。DatabaseTransaction这里又有一组比较好用的函数axlDBTransactionStart()=n_Mark,得到一个mark值可以为其余Mark,Oops,Rollback,以及Commit命令所用。axlDBTransactionMark(n_Mark)=使用n_Mark来标记该命令运行前design的状态,方便后面的Oops和Rollback操作。axlDBTran
24、sactionOops(n_Mark)=取消最近一次的axlDBTransactionMark以来的操作,使得design返回Mark前的状态。和allegro中的Oops命令是相似的。axlDBTransactionRollback(n_Mark)=是databaseTransaction的一次Undo操作,相当于allegro中的Cancel操作。axlDBTransactionCommit(n_Mark)=确定一次transaction的完成,之后n_Mark将不再有效,也即不能再执行Oops/Rollback操作了。另2个关联的函数:axlTransformObject(),早已经在之
25、前的章节介绍了。axlDBCloak(g_funcg_mode),将一些可能会引起shapeupdate或者drcupdate之类的比较耗时的函数/命令嵌入在这个命令中运行会比较省时。另外:举个简单的例子说明为什么这个命令好用。假设你要编写一个实现Symbol横向或者纵向对齐的命令,最简单的想法就是让用户选择需要移动的Symbol,然后记录下各个Symbol的coordinate,rotation,mirror,name,type等等参数,对应于Opps或者Cancel操作就是利用之前备份的那一大堆数据来恢复现场。这里涉及一大堆的数据管理,而且当用户同时选择了n个symbol然后又去掉了部分选
26、择,以及在done掉命令之前有做过几次Opps和几次transaction,这个数据的管理会很让人伤脑筋。然而通过这里介绍的几个命令,就很简单了,只要在transaction之前Mark一下(记录现场),Opps,Cancel之类的操作只是简单的恢复到Mark点就好了,不用管Mark以后用户是怎么个操作的,是不是很简单?DatabaseMiscellaneous举几个很适用的函数,其它的请自行参考学习了。axlAirGap(),功能如同allegro中的Measure结果中的Airgap。axlDBGetLength(),功能如同allegro的ShowElement命令选择一个Cline显示
27、长度一样。axlGeoPointInShape(),这个命令能检验一个Point是不是在特定的Shape里面。axlChangeNet(),改变指定对象的netname,不过因为一些功能方面的限制,其实适用性不强。allegroskillParameter操作函数正如在allegroskilldatabase对象类型中提到的,一个PCBEditer设计中会有很多的Parameter,比如在design级别就有设计的精度,设计的版面尺寸,单位等等。在AXL-Skill中有一系列相应的函数可以直接读取以及修改这些Parameter值。2.1获取Parameter值的通用函数2.1.1获取Param
28、eter值的函数axlGetParam函数定义:axlGetParam(t_parm_name)=o_paramDbid/nil参数t_parm_name要求:被查询的parameter的名字。这个名字必须符合如下规则:paramTextBlock:where#is1-16(Example:axlGetParam(paramTextBlock:l);默认的block只到16,对于大于16的block,如果系统里面有设定就可以同样得到,比如说有block30,就可以这样得到axlGetParam(paramTextBlock:30)paramDesignparamDisplayparamLaye
29、rGroup:wherenameislegalAllegroclassnameparamLayerGroup:/paramLayer:artworkListoffilmnamesartwork:param:107955700(返回一个param类型的dbid,该dbid包含了design的parameter信息)axlGetParam(paramLayerGroup:ETCH)=param:107955760(返回的dbid包含系统的ETCH相关信息,比如有几个ETCH层)axlGetParam(paramLayerGroup:ETCH)-?二(objTypeparamLayerGroupna
30、meETCHvisiblenilnChildren4groupMembers(TOPINTIINT2BOTTOM)color-1)(说明:axlGetParam(paramLayerGroup:ETCH)将得到一个dbid,而-?操作将得到该dbid的所有直接相关属性,objType说明该dbid的对象类型是paramLayerGroup,nChildren=4表面当前的design有4个Etch层,groupMembers对应了具体的4个Etch层名字)axlGetParam(paramLayerGroup:ETCH)-groupMembers=(TOPINTIINT2BOTTOM)设置Pa
31、rameter值的函数axlSetParam函数定义:axlSetParam(o_paramDbid)=o_paramDbid/nil参数o_paramDbi要求:axlGetParam函数的返回值返回值o_paramDbid:返回值类型和axlGetParam返回的一样使用方法:Originalparam=axlGetParam(paramDesign),做一些其它的操作可能涉及到多个系统参数的改变,然后通过axlSetParam(Originalparam)命令来使系统所有的参数设置恢复之前保留的值。(参考后面提到的类型相似的axlVisibleGet和axlVisibleSet函数)Co
32、lor操作函数(部分)2.2.1Allegro中的ColorAllegro支持2种访问Color的方式,预定义的color和allegrodatabasecolor。预定义的color有black,white,red,green,yellow,blue,multivalue-usedforfieldswherevaluenotthesame,button一currentcolorofbuttonfaces(grey)databasecolor是以1一24之间的整数表示的,0被保留为背景颜色。在2.1.1的示例中,就有看到color值为-1的情况,这表示被查询的元素当前是不可见的。2.2.2常用
33、Color相关函数获取Color调色板,axlColorGet(x_number/background/count/all),如axlColorGet(all)=得到系统的颜色设置结构列表。对应设置Color调色板函数,axlColorSet();系统颜色设定的保存与重载函数,axlColorSave(file)与axlColorLoad(file);用户定制颜色来设置系统中的元素,axlCustomColorObject(lo_dbidg_custom_color),相应的清除命令为axlClearObjectCustomColor(lo_dbid);其它更多的color相关函数请参考alg
34、roskill文档DatabaseLayer相关操作函数这里给出一些方便操作Layer的函数:axlGetXSection(),这是获取design的crosssection(层叠结构)的函数;axlLayerGet(t_layer),这是获得指定层t_layer的dbid的函数;axlIsLayer(t_layer),判断指定的层t_layer存不存在;axlIsVisibleLayer(t_layer),判断指定层t_layer是不是显示状态(visible);axlVisibleLayer(t_layerg_makeVis),设置指定层t_layer的状态是显示还是不显示;axlVisi
35、bleDesign(g_makeVis),设置design的状态是显示还是不显示;axlVisibleGet(),该函数的返回值是命令运行当前design的所有颜色显示状态;axlVisibleSet(l_vislist),该函数使用axlVisibleGet()函数的返回结果,重置design的显示状态。更多相关函数请参考algroskill.pdf文档DatabaseLayer相关操作函数这里给出一些方便操作Layer的函数:axlGetXSection(),这是获取design的crosssection(层叠结构)的函数;axlLayerGet(t_layer),这是获得指定层t_lay
36、er的dbid的函数;axlIsLayer(t_layer),判断指定的层t_layer存不存在;axlIsVisibleLayer(t_layer),判断指定层t_layer是不是显示状态(visible);axlVisibleLayer(t_layerg_makeVis),设置指定层t_layer的状态是显示还是不显示;axlVisibleDesign(g_makeVis),设置design的状态是显示还是不显示;axlVisibleGet(),该函数的返回值是命令运行当前design的所有颜色显示状态;axlVisibleSet(l_vislist),该函数使用axlVisibleGet
37、()函数的返回结果,重置design的显示状态。更多相关函数请参考algroskill.pdf文档allegroskillDesign相关函数a.用来得到当前design的名字和类型的一些函数axlCurrentDesign()得到当前文件的名字axlDesignType();design的类型,比如LayoutaxlSaveEnable();设置File-Savemenuitem是否可用axlSaveDesign();保存designaxlDBControl();这是个很有用的函数,可以设置很多的系统环境,比如设置On-LineDRCenable还是disable,axlDBControl(
38、drcEnablet/nil)axlIgnoreFi如果想操作Fixed的symbol一般是不可以的,但是可以通过这个命令来操作axlKillDesign();axlOpenDesign();axlGetActiveLayer();用来注册一些skill的函数为allegro中的命令,以及设置各种工作模式axlCmdRegister();registerSkill函数为allegro的命令axlEndSkillMode();结束skill状态axlFlushDisplay();刷新屏幕axlOKToProceed();检测当前是不是有另外的交互式操作命令在运行axlUIPopupDefine(
39、);辅助用户定义右键弹出menuLogic操作函数操作系统的一些Logic类型的信息,比如DiffPair,MatchGroup,pinpair等等axlDiffPair();生成,修改,删除DiffpairaxlMatchGroupAdd();添加成员到某个MatchGroupaxlPinPair();PinPair操作另:axlWriteDeviceFile();输出Device信息到相应的文件axlDbidName();得到dbid对应的名字axlDBCreateConceptComponent();ConstraintManager操作函数所有的ConstraintManager相关的
40、函数都会是以axlCNS开头,如:axlCnsAddVia();axlCNSCreate();axlCNSGetPhysical();axlCNSGetSpacing();Math函数axlDistance();得到2点之间的距离axlGeoEqual();在当前design精度下,比较2个浮点数是否相等axlIsPointInsideBox();检查点是不是在Box里面axl_ol_ol2();检查两个线是否相交allegroskill选择和获取函数对Allegro中的对象进行操作,比如移动、删除,都需要先选择和获取该对象的dbid。选择操作包含一些选择设置比如是只选择Symbol还是Sym
41、bol和Via都可以选等等,然后通过axlSelect相关函数来选择具体的对象,然后是axlGetSelSet函数来得到那些被选择的dbid。AXL-Skill函数支持多种选择的方式,比如单选择一个对象,或者是框选多个对象,又或者说是使用TempGroup的方式来选择多个对象,不过通常对象只有在当前可见(Visible)的情况下才可以被选择上(除非设置了invisible选项)。选择设置和被选择了对象的有效性会一直持续到用户使用其它的系统命令,比如allegro的AddCline命令,因为allegro的命令将会改变一些系统的dbid,所以的Skill之前获取的bdid都会变成无效的(remo
42、ved)。通常的选择和获取操作如下,设置FindFilter来控制将要被选则的对象类型;选择对象的三种模式:单选,多选或通过名字来选择;从被选择的对象中添加和移除对象3.1FindFilter设置函数函数定义axlSetFindFilter(?enabledlt_enabled?onButtonslt_filterOn)功能:该函数最直观的理解是,它可以设置allegro的FindFilter。参数:lt_enabled,该参数将决定哪些FindFilter中的元素可以被选择;lt_filterOn,该参数将决定可以被选择的元素中,哪些已经被选中了。参数支持的类型如下:PINS,VIAS,CL
43、INES,CLINESEGS,LINES,LINESEGS,DRCS,TEXT,SHAPES,SHAPESEGS,BOUNDARY_SHAPES,VOIDS,VOIDSEGS,SYMBOLS,FIGURES,COMPONENTS,FUNCTIONS,NETS,INVISIBLE,NAMEFORM,ALLTYPES,ALL,DYNTHEMALS,GROUPS,GROUPMEMBERS用法示例:axlSetFindFilter(?enabledlist(viaspinsnets)?onButtonslist(viaspins)=设置FindFilter中的vias,pins,nets为可以被选择的
44、,而其它的选项将被设置成不可操作的,默认选择了vias和pins。3.2点选函数axlSingleSelectPoint()=运行该命令之后,allegro将提示你点选一个design中的对象。axlAddSelectPoint()axlSubSelectPoint()3.3框选函数axlSingleSelectBox()=在allegro中框选axlAddSelectBox()axlSubSelectBox()3.4通用选择函数axlSelect()=支持多种选择方式于一身,单选,框选,TempGroup3.5其它选择函数axlAddSelectAll()=不需要用户交互的选择方式,只根据F
45、indFilter的条件axlSubSelectAll()axlSingleSelectName()axlAddSelectName()axlSubSelectName()axlSingleSelectObject()axlAddSelectObject()axlSubSelectObject()3.6获取和清除函数axlGetSelSet()=获取之前的选择函数选择的dbidaxlGetSelSetCount()axlClearSelSet()=清除之前选择函数选择的dbid(注:当一个对象被选择了以后,将会被自动的以TempHighlight的方式高亮,而该函数运行以后将会清除这个对象的选
46、择状态,同时该对象也不再高亮)3.7示例:选择一个Symbol,并将其移动到另一个相对位置axlClearSelSet();清除之前可能存在的被选择函数选择的元素,避免引入不合适的dbid,这是个好习惯axlSetFindFilter(?enabled(noallsymbols)?onButtons(noallsymbols);设置FindFilter的Symbols选项处于选中状态axlSingleSelectPoint();请通过点击选择的方式,选择一个Symbol对象dSym=axlGetSelSet();=(dbid),将得到被选择的dbid列表,尽管这个列表只有一个元素axlClea
47、rSelSet();清理掉你自己做过的选择,避免给别的程序带来错误,同样是个好习惯dSym=car(dSym);=dbid,的到Symbol的dbid;dSym-?;=将得到这个Symbol的相关属性ix=100;iy=200;axlTransformObject(dSym,?moveix:iy);=将该Symbol右移lOOmil,上移200mil;axlTransformObject()函数的作用是将一个或多个symbol由一个地方移动、翻转、旋转到另一个新的位置。;axlTransformObject(lo_dbid/o_dbid?moveldeltaPoint?mirrort/nil?
48、anglef_angle?originlrotatePoint?allOrNonet/nil)skill交互函数axlUI系列集锦Interface指和用户交互,allegro给出一些Message提醒用户进行相关的操作,比如说PickaPoint就是让用户用鼠标选择一个点;又比如说allegro弹出一个Confirm对话框,需要用户选择Yes/No的情况。在allegro的skill窗口输入fn(axlUI)般会查到如下的函数:axlUICmdPopupSetaxlUIColorDialogaxlUIConfirmaxlUIControlaxlUIDataBrowseaxlUIEditFil
49、eaxlUIGetUserDataaxlUIMenuDumpaxlUIMenuLoadaxlUIMultipleChoiceaxlUIPopupDefineaxlUIPopupSetaxlUIPromptaxlUIViewFileCreateaxlUIViewFileReuseaxlUIViewFileScrollToaxlUIWBeepaxlUIWBlockaxlUIWCloseaxlUIWDisableQuitaxlUIWExposeaxlUIWExposeByNameaxlUIWPermaxlUIWPrintaxlUIWRedrawaxlUIWSetHelpTagaxlUIWSetPar
50、entaxlUIWShowaxlUIWTimerAddaxlUIWTimerRemoveaxlUIWUpdateaxlUIYesNoaxlUIYesNoCancel这里介绍一下其中几个很常用的函数的用法axlUIConfirm=axlUIConfirm(areyousuretodeleteallhighlightshapes?)axlUIYesNoCancel=axlUIYesNoCancel(areyousuretodeleteallhighlightshapes?DeleteShapeCommand)axlUIYesNo=axlUIYesNo(areyousuretodeleteallhi
51、ghlightshapes?DeleteShapeCommand)axlUIMultipleChoice=axlUIMultipleChoice(Pickalayer(topbottom)ViewLayer)axlUIPrompt=axlUIPrompt(EnterYourNameusername)前3个差不多,但是axlUIConfirm只是个提醒,返回值总是t,另外两个返回值是数字0=Yes,1=No,2=Cancel。axlUIMultipleChoice的返回值也是数字,0对于这个函数中间那个列表的第一个参数,顺序下来。axlUIPrompt这个函数提供了用户输入信息的功能,返回值为字
52、符串,如果你想要数字,需要自行转换,atoi/atof之类。axlUIPrompt示例最后还有一个axlUIWBeep(),就是一个beep提示音axlUIWDisableQuit=axlUIWDisableQuit(userDefinedForm);屏蔽掉form右上角的那个close叉叉axlUIWClose=axlUIWClose(userDefinedForm);关闭掉formaxlUIWShow=axlUIWShow(userDefinedFormoption);optionshow=显示并激活userDefinedForm;showna显示但不激活;hide窗口隐藏;nil显示支持
53、的操作axlUIWPrint=axlUIWPrint(userDefinedFormthisisaprettyform);输出字符到form的最下面窗口axlUIWPerm=axlUIWPerm(userDefinedFormt);allegro打开新的板子会默认关闭掉当前打开的所以的form窗口,用这个命令可以屏蔽这个功能axlUIWBlock=axlUIWBlock(userDefinedForm);强制用户操作了当前的form才可以继续其它的工作axlUIWRedrawaxlUIWUpdate=axlUIWUpdate(nil)这个和axlUIWRedraw(nil)更适合刷新主屏幕ax
54、lUIWExposeaxlUIWExposeByName=S2个都是将选择的窗口显示到最前端axlUIDataBrowseaxlUIColorDialog这2个函数调用allegro系列的form,挺有用的。参考algroskill.pdf中的例子:axlUIDataBrowse(NET(RETRIEVE_NAME)hit)rgb=axlColorGetrgb=axlUIColorDialog(nilrgb)when(rgbaxlColorSet(1rgb)这里的1可以是其它的数字,16.0以上可以到192。axlUIMenuDump=axlUIMenuDump(CurrentMenu)输出当
55、前allegro的menu信息到当前工作目录的CurrentMenu.men文件axlUIMenuLoad=axlUIMenuLoad(menu.men)loadmenu.men的信息到allegro中建立新的目录很实用的2个功能鼠标右键的popupmenu:axlUIPopupDefineaxlUIPopupSetprocedure(aaprintln(I-youselectA)procedure(bbprintln(I-youselectB)pop=axlUIPopupDefine(nil(Aaa)(Bbb)axlUIPopupSet(pop)运行了上面的程序以后在allegro中单击鼠标
56、右键就会看到一个popup,就像我们常见的Done,Cancel,Opps那个popup,只是这里的是A和B。axlUIPopupSet(nil)这个命令来将刚刚的设置清除axlUIViewFileCreateaxlUIViewFileReuseaxlUIViewFileScrollTo只读方式打开文件,没怎么用过,也觉得没有啥用处。还剩下几个除了Time可能有些作用,其它的没有没有什么感觉。axlUIWTimerAddaxlUIWTimerRemoveaxlUIControldonotuseaxlUIEditFileaxlUIGetUserDataaxlUIWSetHelpTagaxlUIW
57、SetParentallegroskill交互式编辑函数这里介绍一些基本的编辑命令,比如axlDeleteObject用来删除可被删除的系统对象(各种dbid),axlShowObject用来显示被选择对象的信息,和allegro中的ShowElement命令显示的结果差不多。常用函数示例:axlChangeWidth();=和Allegro中的Change命令类似,该命令用来改变Cline/Line的宽度axlDBDeleteProp();=该命令可以删除选择对象的指定属性,使用该命令相当于Allegro中EditProperty命令。axlDBDeletePropDictEntry();=
58、该命令相当于Allegro中的UserDefinedProperty命令axlLastPick();=获得用户鼠标最近一次点击的坐标axlShapeChangeDynamicType();=改变选择Shape的动静态属性axlTransformObject();=移动对象另外:axlEnterPoint();提示用户输入一个点的坐标axlEnterString();提示用户输入一个字符串axlCancelEnterFun();取消一个提示Enter操作的函数的作用还有一些比如axlHighlightObject();highlight对象axlMiniStatusLoad();这个函数可以让用
59、户定义的form显示在OptionsTab上。allegroskillFile操作allegro有些专用的函数可以操作文件,allegro本身支持skill的那些文件操作函数,比如infile,outfile函数,而如下的函数都只是更多的文件操作函数:axlDMOpenFile();axlDMOpenLog();axlDMClose();axlOSFileCopy();axlOSFileMove();axlOSSIash();axlTempDirectory();allegroskillShel臊作相关函数这里的函数可以用来读取AllegroPCBEditor的环境参数,比如Alias,Fun
60、cKey以及一些系统的参数(.psmpath)。比如:axlGetAlias()axlGetFuncKey()axlGetVariable()axlSetAlias()axlSetFunckey()axlUnsetVariable()另外:axlShell(),这个命令很有用,它支持在skill环境中运行allegro的命令,比如allegro的status命令,在skill状态下是不可以直接运行的,需要通过axlShell(status)来运行。另:设置和获得windows/UNIX系统下的环境变量setShellEnvVar()getShellEnvVar()allegroskillFor
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全国职场英语试题及答案
- 激光加工在制造中的重要性试题及答案
- 化妆品监管试题及答案
- 工厂早餐合同协议
- 重庆市大学城高中英语 Unit 3 Powerful Music Period 6 Listening教学设计 重庆大学版必修2
- 宠物业余养殖合同协议
- 患者转诊制度试题及答案
- 小学信息技术第二册 适当标注更直观3教学设计 泰山版
- 展会承揽合同协议
- 建筑租赁合同协议
- 人工智能基础-AI介绍
- 全国优质课一等奖高中物理必修一《实验:探究平抛运动特点》精美课件
- 煤矿井下密闭专项设计
- 心脏康复护理专家共识PPT
- 配电箱每日检查记录表
- VDA6.3-2023版审核检查表
- 分泌性中耳炎教学课件
- 浙江省杭州市萧山区第二学期六年级语文期中试题(含答案)
- 江苏省2022年五年制专转本英语真题
- 普通地质学教材
- 2020农村人居环境综合整治项目可行性研究报告
评论
0/150
提交评论