allegro二次開發(fā)語法大全_第1頁
allegro二次開發(fā)語法大全_第2頁
allegro二次開發(fā)語法大全_第3頁
allegro二次開發(fā)語法大全_第4頁
allegro二次開發(fā)語法大全_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、allegroskill簡(jiǎn)介AXL-SKILL專用于allegro的skill被稱為AXL-SKILL,只有使用這些專用的函數(shù)才可以直接訪問allegro的database。結(jié)合skill語法和這些專用函數(shù)可以編寫出實(shí)現(xiàn)各種功能的命令。專用于allegro的skill都是以axl開頭,比如axlClearSelSet()。運(yùn)行AXL-SKILL在allegro中輸入skill就得到了AXL-SKILL的運(yùn)行環(huán)境,在這樣的環(huán)境中可以直接調(diào)用AXL-SKILL命令/函數(shù),另外輸入settelskill可以得到一個(gè)尺寸大小可調(diào)的skill開發(fā)窗口。(萬一沒有彈出窗口,嘗試在allegro菜單里面,選

2、擇setup-userprference-skill-telskillOK)AXL-SKILLDatabaseallegro中的每個(gè)對(duì)象object(比如IC元件,net)都有一個(gè)對(duì)應(yīng)的dbid(databaseidentifiers),AXL-SKILL操作allegro的也正是這些dbidodbid對(duì)象:在不同的級(jí)別上的dbid是不一樣的,比如在Design以及包含的database對(duì)象有PropertyDictionary,Lines,Text,Polygons,Shapes,PropertyDefinitions,DRCs,ViasthatarePadstackobjecttypes,

3、SymbolsthatareSymdefobjecttypes,Components,Nets;而在Symbol級(jí)別上則是PPinsthatarePadstackobjecttypes,ViasthatarePadstackobjecttypes,Lines,Arcs,Text,Polygons,Shapes。allegroskilldatabase對(duì)象類型1.database對(duì)象描述1.1對(duì)象類型Figureobjects:Arcs,Branches,DesignFiles,Drcs,Lines,Paths,Polygons,Logicalobjects:Components,Ppins,S

4、hapes,Symbols,Tees,Vias,Pads,Padstacks,Symdefs;Functions,F(xiàn)unctionPins,Nets;Propertydictionaryobjects;Parameterobjects:Design,Display,LayerGroup,Layer,TextblockGroup,Textblock。1.2基本操作盡管有如此之多的類型,但是在allegro中的操作其實(shí)就是找到合適的database元素,然后對(duì)其操作就好了。只要保證被訪問的元素的dbid有效,就可以對(duì)其進(jìn)行處理。Figure類型Figure在allegroPCBEditer里面一般

5、被成為幾何形狀,一個(gè)Figure類型的元素通常具有如下的屬性。常見的Figure屬性屬性名類型描述bBoxbboxFiguresboundingboxbranchdbidForetch,thefiguresbranchparentlayert_layerLayeroffigure,nilifobjectismulti-layerparentdbidNonconnectiveownernetdbidNetobjectiffigureisassociatedwithanet注意:對(duì)于所有空(dummy)網(wǎng)絡(luò)的Figure,它們的net屬性都是,而不是nil。Figure有很多的類型,每個(gè)類型都有很

6、多個(gè)屬性,具體的信息請(qǐng)參考algroskill.pdf文檔的第二章,這里只列出其中的Line。Line的屬性列表(除Figure類型常見的屬性以外的部分)屬性名類型描述isEtcht/nilCLINE;nil=aLINElineTypes_typesymbol:horizontal,vertical,oddobjTypestringofobject,inthiscaseZ*-1lineparentdbidPath,polygon,orshapestartEndl_pointStartandendpointswidthfloatWidthofLogical類型Logical類型其實(shí)就是和電氣有關(guān)

7、的屬性,比如網(wǎng)絡(luò)連接(net),電子器件component)等。Logical類型通常都具有objType,prop,andreadOnly3種屬性。如果你選擇了一個(gè)component,那么它的objType就是component,如果選擇的是pin,則objType屬性值就是pin一個(gè)簡(jiǎn)單的例子Bus(總線),其它的Logical類型請(qǐng)參考Cadence的algroskill.pdf文件屬性名類型描述groupMembersl_dbidListofxnetsofthebusnamestringNameofthebusobjTypestringgroup“BUS”typestringPrope

8、rtyDictionary類型在allegro的應(yīng)用中會(huì)根據(jù)工作的需要自己定制(創(chuàng)建)屬性用戶定義的屬性(userdefinedproperties)。Allegro支持用戶創(chuàng)建具備如下特性的屬性NETS,COMPONENTS,F(xiàn)UNCTIONSPINS,VIAS,SHAPES,SYMBOLS,CLINES,LINES,DRCS,FIGURES,DESIGNS,COMPDEFS,PINDEFS,F(xiàn)UNCDEFS。如果你倉U建了一個(gè)只包含SYMBOLS類型的屬性,那么你創(chuàng)建的這個(gè)屬性只能被賦給Allegro中的Symbol對(duì)象,而不可以賦給一個(gè)net或其它非Symbol的對(duì)象。Parameter

9、類型Parameter的簡(jiǎn)單理解就是Allegro中個(gè)各個(gè)設(shè)置參數(shù),舉個(gè)簡(jiǎn)單的例子,系統(tǒng)(Design)級(jí)別的參數(shù)列表。DesignParameter屬性屬性名可設(shè)置否?類型描述accuracynointegerNumberofdecimalplacesofaccuracybBoxnobboxThedesignsboundingboxheightnofloatHeightinuserunitsobjTypenostringTypeofobject,inthiscaseparamDesignunitsnostringTypeofuserunits(mils,inch,micron,millime

10、terandcentimeter)widthnofloatWidthinuserunitsxynopointLowerleftcornerofdesign注意:可設(shè)置否表示的是能否通過函數(shù)axlParamSet來設(shè)置。下一章將主要講對(duì)AllegroParameter的操作,對(duì)參數(shù)的讀取,修改與更新等等。allegroskillDatabase操作相關(guān)函數(shù)5.1DatabaseRead函數(shù)和以前一樣,這里只介紹部分的函數(shù),其它的函數(shù)請(qǐng)參考algroskill.pdf文件。axlDBGetDesign()=dbid,當(dāng)前design的dbid,基本上來說整個(gè)design的所有信息都可以通過這個(gè)db

11、id得到。比如design有多少個(gè)component,每個(gè)component的dbid;比如design有多少drc,每個(gè)drc又分別是什么等等。axlDBGetAttachedText(o_dbid)=textdbid得到o_dbid對(duì)象所具有的(被attached的)text的dbid列表。該函數(shù)常用于在一個(gè)包含很多text的symbol對(duì)象上查找特定text的應(yīng)用中。比如我們通常會(huì)把一個(gè)design放在適當(dāng)尺寸的sheet中,對(duì)應(yīng)于design的各個(gè)層,sheet也會(huì)有對(duì)于的頁碼來表示,比如sheet的第1頁是Top層,那么inti層可能就是第2頁,如果你想寫個(gè)程序來實(shí)現(xiàn)頁碼的自動(dòng)更新,

12、就會(huì)用到這個(gè)函數(shù)來找到需要被修改的字符(text),然后用后面將要說到的DatabaseCreate相應(yīng)函數(shù)來修改選中的字符。axlDBGetPad(o_dbidt_layert_type)=paddbid,獲得pin,via,padstack相應(yīng)層的特定pad。比如axlDBGetPad(dpin“Etch/Topanti“)=dpin對(duì)象在Top層的anti-pad的dbid。通過這個(gè)dbid又可以進(jìn)一步得到pad的一些相關(guān)屬性。axlDBGetPropDictEntry(t_name)=propdefinition,得到userdefinedproperties里面設(shè)置的各個(gè)屬性的信息,

13、比如屬性類型,應(yīng)用的對(duì)象。axlDBGetProperties(o_dbidlt_type)=l_results得到o_dbid所具有的properties列表,allegro默認(rèn)的或者是userdefinedoaxlDBIsFixed(o_dbid)=t/nil,判斷一個(gè)對(duì)象是不是被fixed了。通常在用戶程序想修改一些design的對(duì)象的時(shí)候,必須先確定該對(duì)象是不是被fixed了,fixed對(duì)象是不可以被修改的。(用戶必須先給fixed的對(duì)象un-fixed,然后才能進(jìn)行修改)axlDBGetShapes(t_layer)=shapedbid,種獲取指定層所有shape的快捷方式。(通常的

14、獲取對(duì)象的方式都是先要設(shè)置FindFilter,然后addselect,再getselset,3步才可以。)5.2DatabaseCreate首先allegro本身不支持的操作使用下面將要給出的AXL-Skill函數(shù)也是無法實(shí)現(xiàn)的。比如allegro不支持將一個(gè)cline畫到非Etch層去,那么用axlDBCreatePath()也無法在非Etch層Create個(gè)cline的。對(duì)于非法操作,函數(shù)的返回值都是nilo要想讓你create的對(duì)象立即顯示出來有2種方法,運(yùn)行axlDisplayFlush()命令來刷新allegro的顯示狀態(tài),或者運(yùn)行一個(gè)allegro本身的命令,否則的話你creat

15、e的對(duì)象是不會(huì)被顯示出來的。Path部分的函數(shù)Path指的是各種形狀的Line。Path總會(huì)有個(gè)起點(diǎn)有個(gè)終點(diǎn),axlPathStart函數(shù)用于確定起點(diǎn),而終點(diǎn)則是Path里面的最后一點(diǎn)。axlPathStart(l_pointsf_width)=r_path,產(chǎn)生一個(gè)path對(duì)象并確定起點(diǎn)axlPathArc(Radius/Angle/Center)=這里的三個(gè)函數(shù)都是用來生成曲線的axlPathLine()=向一個(gè)path末尾添加一個(gè)點(diǎn)axlPathGetWidth(r_path)=得到一個(gè)path的寬度,如果一個(gè)path中的各個(gè)segment的寬度都不一樣,可以使用axlPathSegGe

16、tWidth()函數(shù)。axlPathSegGetEndPoint(r_pathSeg)=得到path的最后一個(gè)點(diǎn),相關(guān)的函數(shù)還有axlPathGetLastPathSeg()用來得到path的最后一個(gè)segment。axlDBCreatePath()和axlDBCreateLine(),將不可見的path或point列表轉(zhuǎn)變成可見的實(shí)際存在的Line,Create在不同的layer,將產(chǎn)生不同的對(duì)象,比如在Etchlayer將產(chǎn)生Cline對(duì)象,在Silkscreenlayer就是些簡(jiǎn)單的Line。Shape部分函數(shù)Shape是幾何圖形,所以CreateShape通常需要先提供一個(gè)boundr

17、y(Shape的邊界/區(qū)域),而這通常有2種方式,其一是使用上面講到的Path函數(shù)來Create個(gè)閉合的區(qū)域,其二是用Polygon函數(shù)來為Shape提供一個(gè)Polygon。Polygon相關(guān)函數(shù)Polygon是多邊形的意思,其實(shí)和Shape一樣(根據(jù)Polygon生成的Shape,所以當(dāng)然是一樣的),只是Polygon是不可見的,而Shape是可見的。Polygon的操作函數(shù)之所以不并入Shape我想可能是因?yàn)槊看螌?duì)Shape形狀的改變allegro都會(huì)update整個(gè)design的shape,順便還要updateDRC(Shape和On-LineDrc沒有disable的情況下),這都是些

18、很耗時(shí)的操作Polygon的任何操作都不會(huì)影響到design,直到當(dāng)它最后呈現(xiàn)為Shape時(shí)。axlPolyFromDB(),獲得指定對(duì)象的Polygon,這是一個(gè)非常好用的函數(shù),比如有個(gè)形狀很怪異的Pad,而你必須根據(jù)這個(gè)Pad畫出個(gè)Shape,這個(gè)時(shí)候你就可以直接用這個(gè)命令直接得到那個(gè)Pad的Polygon,然后就可以生產(chǎn)Shape了,很簡(jiǎn)單。axlPolyOperation(),Polygon的一些操作,比如多個(gè)Polygon以某個(gè)規(guī)則(ANDORANDNOT)組合到一起,形成一個(gè)/多個(gè)新Polygon。axlPolyExpand(),將Polygon擴(kuò)展/壓縮一定的尺寸示例:實(shí)現(xiàn)all

19、egro的mergeshape的命令a.選擇需要被merge的Shapeb.使用axlPolyFromDB函數(shù)得到每一個(gè)Shape的Polygonc.使用axlPolyOperation函數(shù)的AND規(guī)則,將多個(gè)Polygon形成一個(gè)d.刪除選中的所有Shapee.使用下面將要提到的axlDBCreateShape命令生成新的ShapeShape相關(guān)函數(shù)axlDBCreateOpenShape,這個(gè)函數(shù)是用來Create一個(gè)Open狀態(tài)的Shape的,Open的意思是可以在Create的Shape上再添加Void。axlDBCreateCloseShape,這個(gè)函數(shù)是前一個(gè)函數(shù)的補(bǔ)充,Open狀

20、態(tài)的shape使用了這個(gè)函數(shù)就被Close了,Close意思是Shape不可以再添加Void了。axlDBCreateShape,這個(gè)函數(shù)直接Create一個(gè)Close的Shape。5.2.3和Path無關(guān)的函數(shù)axlDBCreateExternalDRC,create個(gè)用戶自定義的DRC,通常是在用戶自定義的檢查中axlDBCreatePadStack,Create一個(gè)新的Padstack,比如你想要用一種新的Via,但是Library中還沒,就可以使用該命令Create一個(gè)Padstack,然后用axlDBCreateVia命令生成一個(gè)axlDBCreateText,比如前面提到的自動(dòng)修改

21、字符的操作,這個(gè)命令就可以生成指定的字符。Property函數(shù)axlDBCreatePropDictEntry,在userdefinedproperty列表中創(chuàng)建一個(gè)新的property類型axlDBAddProp,將指定的property賦予特定的對(duì)象,比如將FixedProperty賦予一個(gè)Component,這個(gè)和allegro本身的Fixed命令是一樣的。DatabaseGroupGroup比較簡(jiǎn)單,相關(guān)的函數(shù)也不是很多。axlDBCreateGroup,create個(gè)新的Group對(duì)象axlNetClassCreate,create一個(gè)NetClass對(duì)象axlRegionCreat

22、e,create一個(gè)Region對(duì)象NetClass和Region是16.0以后新的屬性DatabaseAttachment這里說至U的Attachment是attach至Udesign的database中的。axlCreateAttachment(t_attachmentIdt_passwdx_revisions_dataFormatt_data)=Create一個(gè)名字/ID是t_attachmentId的attachment,t_password設(shè)定密碼,x_revision確定版本,s_dataFormat將決定t_data的數(shù)據(jù)類型。axlGetAllAttachmentNames()

23、=得到designDatabase中所有attachment的dbid列表。axlGetAttachment(t_attachmentIds_dataFormat)=獲得扌旨定attachment的value。DatabaseTransaction這里又有一組比較好用的函數(shù)axlDBTransactionStart()=n_Mark,得到一個(gè)mark值可以為其余Mark,Oops,Rollback,以及Commit命令所用。axlDBTransactionMark(n_Mark)=使用n_Mark來標(biāo)記該命令運(yùn)行前design的狀態(tài),方便后面的Oops和Rollback操作。axlDBTran

24、sactionOops(n_Mark)=取消最近一次的axlDBTransactionMark以來的操作,使得design返回Mark前的狀態(tài)。和allegro中的Oops命令是相似的。axlDBTransactionRollback(n_Mark)=是databaseTransaction的一次Undo操作,相當(dāng)于allegro中的Cancel操作。axlDBTransactionCommit(n_Mark)=確定一次transaction的完成,之后n_Mark將不再有效,也即不能再執(zhí)行Oops/Rollback操作了。另2個(gè)關(guān)聯(lián)的函數(shù):axlTransformObject(),早已經(jīng)在之

25、前的章節(jié)介紹了。axlDBCloak(g_funcg_mode),將一些可能會(huì)引起shapeupdate或者drcupdate之類的比較耗時(shí)的函數(shù)/命令嵌入在這個(gè)命令中運(yùn)行會(huì)比較省時(shí)。另外:舉個(gè)簡(jiǎn)單的例子說明為什么這個(gè)命令好用。假設(shè)你要編寫一個(gè)實(shí)現(xiàn)Symbol橫向或者縱向?qū)R的命令,最簡(jiǎn)單的想法就是讓用戶選擇需要移動(dòng)的Symbol,然后記錄下各個(gè)Symbol的coordinate,rotation,mirror,name,type等等參數(shù),對(duì)應(yīng)于Opps或者Cancel操作就是利用之前備份的那一大堆數(shù)據(jù)來恢復(fù)現(xiàn)場(chǎng)。這里涉及一大堆的數(shù)據(jù)管理,而且當(dāng)用戶同時(shí)選擇了n個(gè)symbol然后又去掉了部分選

26、擇,以及在done掉命令之前有做過幾次Opps和幾次transaction,這個(gè)數(shù)據(jù)的管理會(huì)很讓人傷腦筋。然而通過這里介紹的幾個(gè)命令,就很簡(jiǎn)單了,只要在transaction之前Mark一下(記錄現(xiàn)場(chǎng)),Opps,Cancel之類的操作只是簡(jiǎn)單的恢復(fù)到Mark點(diǎn)就好了,不用管Mark以后用戶是怎么個(gè)操作的,是不是很簡(jiǎn)單?DatabaseMiscellaneous舉幾個(gè)很適用的函數(shù),其它的請(qǐng)自行參考學(xué)習(xí)了。axlAirGap(),功能如同allegro中的Measure結(jié)果中的Airgap。axlDBGetLength(),功能如同allegro的ShowElement命令選擇一個(gè)Cline顯示

27、長(zhǎng)度一樣。axlGeoPointInShape(),這個(gè)命令能檢驗(yàn)一個(gè)Point是不是在特定的Shape里面。axlChangeNet(),改變指定對(duì)象的netname,不過因?yàn)橐恍┕δ芊矫娴南拗?,其?shí)適用性不強(qiáng)。allegroskillParameter操作函數(shù)正如在allegroskilldatabase對(duì)象類型中提到的,一個(gè)PCBEditer設(shè)計(jì)中會(huì)有很多的Parameter,比如在design級(jí)別就有設(shè)計(jì)的精度,設(shè)計(jì)的版面尺寸,單位等等。在AXL-Skill中有一系列相應(yīng)的函數(shù)可以直接讀取以及修改這些Parameter值。2.1獲取Parameter值的通用函數(shù)2.1.1獲取Param

28、eter值的函數(shù)axlGetParam函數(shù)定義:axlGetParam(t_parm_name)=o_paramDbid/nil參數(shù)t_parm_name要求:被查詢的parameter的名字。這個(gè)名字必須符合如下規(guī)則:paramTextBlock:where#is1-16(Example:axlGetParam(paramTextBlock:l);默認(rèn)的block只到16,對(duì)于大于16的block,如果系統(tǒng)里面有設(shè)定就可以同樣得到,比如說有block30,就可以這樣得到axlGetParam(paramTextBlock:30)paramDesignparamDisplayparamLaye

29、rGroup:wherenameislegalAllegroclassnameparamLayerGroup:/paramLayer:artworkListoffilmnamesartwork:param:107955700(返回一個(gè)param類型的dbid,該dbid包含了design的parameter信息)axlGetParam(paramLayerGroup:ETCH)=param:107955760(返回的dbid包含系統(tǒng)的ETCH相關(guān)信息,比如有幾個(gè)ETCH層)axlGetParam(paramLayerGroup:ETCH)-?二(objTypeparamLayerGroupna

30、meETCHvisiblenilnChildren4groupMembers(TOPINTIINT2BOTTOM)color-1)(說明:axlGetParam(paramLayerGroup:ETCH)將得到一個(gè)dbid,而-?操作將得到該dbid的所有直接相關(guān)屬性,objType說明該dbid的對(duì)象類型是paramLayerGroup,nChildren=4表面當(dāng)前的design有4個(gè)Etch層,groupMembers對(duì)應(yīng)了具體的4個(gè)Etch層名字)axlGetParam(paramLayerGroup:ETCH)-groupMembers=(TOPINTIINT2BOTTOM)設(shè)置Pa

31、rameter值的函數(shù)axlSetParam函數(shù)定義:axlSetParam(o_paramDbid)=o_paramDbid/nil參數(shù)o_paramDbi要求:axlGetParam函數(shù)的返回值返回值o_paramDbid:返回值類型和axlGetParam返回的一樣使用方法:Originalparam=axlGetParam(paramDesign),做一些其它的操作可能涉及到多個(gè)系統(tǒng)參數(shù)的改變,然后通過axlSetParam(Originalparam)命令來使系統(tǒng)所有的參數(shù)設(shè)置恢復(fù)之前保留的值。(參考后面提到的類型相似的axlVisibleGet和axlVisibleSet函數(shù))Co

32、lor操作函數(shù)(部分)2.2.1Allegro中的ColorAllegro支持2種訪問Color的方式,預(yù)定義的color和allegrodatabasecolor。預(yù)定義的color有black,white,red,green,yellow,blue,multivalue-usedforfieldswherevaluenotthesame,button一currentcolorofbuttonfaces(grey)databasecolor是以1一24之間的整數(shù)表示的,0被保留為背景顏色。在2.1.1的示例中,就有看到color值為-1的情況,這表示被查詢的元素當(dāng)前是不可見的。2.2.2常用

33、Color相關(guān)函數(shù)獲取Color調(diào)色板,axlColorGet(x_number/background/count/all),如axlColorGet(all)=得到系統(tǒng)的顏色設(shè)置結(jié)構(gòu)列表。對(duì)應(yīng)設(shè)置Color調(diào)色板函數(shù),axlColorSet();系統(tǒng)顏色設(shè)定的保存與重載函數(shù),axlColorSave(file)與axlColorLoad(file);用戶定制顏色來設(shè)置系統(tǒng)中的元素,axlCustomColorObject(lo_dbidg_custom_color),相應(yīng)的清除命令為axlClearObjectCustomColor(lo_dbid);其它更多的color相關(guān)函數(shù)請(qǐng)參考alg

34、roskill文檔DatabaseLayer相關(guān)操作函數(shù)這里給出一些方便操作Layer的函數(shù):axlGetXSection(),這是獲取design的crosssection(層疊結(jié)構(gòu))的函數(shù);axlLayerGet(t_layer),這是獲得指定層t_layer的dbid的函數(shù);axlIsLayer(t_layer),判斷指定的層t_layer存不存在;axlIsVisibleLayer(t_layer),判斷指定層t_layer是不是顯示狀態(tài)(visible);axlVisibleLayer(t_layerg_makeVis),設(shè)置指定層t_layer的狀態(tài)是顯示還是不顯示;axlVisi

35、bleDesign(g_makeVis),設(shè)置design的狀態(tài)是顯示還是不顯示;axlVisibleGet(),該函數(shù)的返回值是命令運(yùn)行當(dāng)前design的所有顏色顯示狀態(tài);axlVisibleSet(l_vislist),該函數(shù)使用axlVisibleGet()函數(shù)的返回結(jié)果,重置design的顯示狀態(tài)。更多相關(guān)函數(shù)請(qǐng)參考algroskill.pdf文檔DatabaseLayer相關(guān)操作函數(shù)這里給出一些方便操作Layer的函數(shù):axlGetXSection(),這是獲取design的crosssection(層疊結(jié)構(gòu))的函數(shù);axlLayerGet(t_layer),這是獲得指定層t_lay

36、er的dbid的函數(shù);axlIsLayer(t_layer),判斷指定的層t_layer存不存在;axlIsVisibleLayer(t_layer),判斷指定層t_layer是不是顯示狀態(tài)(visible);axlVisibleLayer(t_layerg_makeVis),設(shè)置指定層t_layer的狀態(tài)是顯示還是不顯示;axlVisibleDesign(g_makeVis),設(shè)置design的狀態(tài)是顯示還是不顯示;axlVisibleGet(),該函數(shù)的返回值是命令運(yùn)行當(dāng)前design的所有顏色顯示狀態(tài);axlVisibleSet(l_vislist),該函數(shù)使用axlVisibleGet

37、()函數(shù)的返回結(jié)果,重置design的顯示狀態(tài)。更多相關(guān)函數(shù)請(qǐng)參考algroskill.pdf文檔allegroskillDesign相關(guān)函數(shù)a.用來得到當(dāng)前design的名字和類型的一些函數(shù)axlCurrentDesign()得到當(dāng)前文件的名字axlDesignType();design的類型,比如LayoutaxlSaveEnable();設(shè)置File-Savemenuitem是否可用axlSaveDesign();保存designaxlDBControl();這是個(gè)很有用的函數(shù),可以設(shè)置很多的系統(tǒng)環(huán)境,比如設(shè)置On-LineDRCenable還是disable,axlDBControl(

38、drcEnablet/nil)axlIgnoreFi如果想操作Fixed的symbol一般是不可以的,但是可以通過這個(gè)命令來操作axlKillDesign();axlOpenDesign();axlGetActiveLayer();用來注冊(cè)一些skill的函數(shù)為allegro中的命令,以及設(shè)置各種工作模式axlCmdRegister();registerSkill函數(shù)為allegro的命令axlEndSkillMode();結(jié)束skill狀態(tài)axlFlushDisplay();刷新屏幕axlOKToProceed();檢測(cè)當(dāng)前是不是有另外的交互式操作命令在運(yùn)行axlUIPopupDefine(

39、);輔助用戶定義右鍵彈出menuLogic操作函數(shù)操作系統(tǒng)的一些Logic類型的信息,比如DiffPair,MatchGroup,pinpair等等axlDiffPair();生成,修改,刪除DiffpairaxlMatchGroupAdd();添加成員到某個(gè)MatchGroupaxlPinPair();PinPair操作另:axlWriteDeviceFile();輸出Device信息到相應(yīng)的文件axlDbidName();得到dbid對(duì)應(yīng)的名字axlDBCreateConceptComponent();ConstraintManager操作函數(shù)所有的ConstraintManager相關(guān)的

40、函數(shù)都會(huì)是以axlCNS開頭,如:axlCnsAddVia();axlCNSCreate();axlCNSGetPhysical();axlCNSGetSpacing();Math函數(shù)axlDistance();得到2點(diǎn)之間的距離axlGeoEqual();在當(dāng)前design精度下,比較2個(gè)浮點(diǎn)數(shù)是否相等axlIsPointInsideBox();檢查點(diǎn)是不是在Box里面axl_ol_ol2();檢查兩個(gè)線是否相交allegroskill選擇和獲取函數(shù)對(duì)Allegro中的對(duì)象進(jìn)行操作,比如移動(dòng)、刪除,都需要先選擇和獲取該對(duì)象的dbid。選擇操作包含一些選擇設(shè)置比如是只選擇Symbol還是Sym

41、bol和Via都可以選等等,然后通過axlSelect相關(guān)函數(shù)來選擇具體的對(duì)象,然后是axlGetSelSet函數(shù)來得到那些被選擇的dbid。AXL-Skill函數(shù)支持多種選擇的方式,比如單選擇一個(gè)對(duì)象,或者是框選多個(gè)對(duì)象,又或者說是使用TempGroup的方式來選擇多個(gè)對(duì)象,不過通常對(duì)象只有在當(dāng)前可見(Visible)的情況下才可以被選擇上(除非設(shè)置了invisible選項(xiàng))。選擇設(shè)置和被選擇了對(duì)象的有效性會(huì)一直持續(xù)到用戶使用其它的系統(tǒng)命令,比如allegro的AddCline命令,因?yàn)閍llegro的命令將會(huì)改變一些系統(tǒng)的dbid,所以的Skill之前獲取的bdid都會(huì)變成無效的(remo

42、ved)。通常的選擇和獲取操作如下,設(shè)置FindFilter來控制將要被選則的對(duì)象類型;選擇對(duì)象的三種模式:?jiǎn)芜x,多選或通過名字來選擇;從被選擇的對(duì)象中添加和移除對(duì)象3.1FindFilter設(shè)置函數(shù)函數(shù)定義axlSetFindFilter(?enabledlt_enabled?onButtonslt_filterOn)功能:該函數(shù)最直觀的理解是,它可以設(shè)置allegro的FindFilter。參數(shù):lt_enabled,該參數(shù)將決定哪些FindFilter中的元素可以被選擇;lt_filterOn,該參數(shù)將決定可以被選擇的元素中,哪些已經(jīng)被選中了。參數(shù)支持的類型如下:PINS,VIAS,CL

43、INES,CLINESEGS,LINES,LINESEGS,DRCS,TEXT,SHAPES,SHAPESEGS,BOUNDARY_SHAPES,VOIDS,VOIDSEGS,SYMBOLS,F(xiàn)IGURES,COMPONENTS,F(xiàn)UNCTIONS,NETS,INVISIBLE,NAMEFORM,ALLTYPES,ALL,DYNTHEMALS,GROUPS,GROUPMEMBERS用法示例:axlSetFindFilter(?enabledlist(viaspinsnets)?onButtonslist(viaspins)=設(shè)置FindFilter中的vias,pins,nets為可以被選擇的

44、,而其它的選項(xiàng)將被設(shè)置成不可操作的,默認(rèn)選擇了vias和pins。3.2點(diǎn)選函數(shù)axlSingleSelectPoint()=運(yùn)行該命令之后,allegro將提示你點(diǎn)選一個(gè)design中的對(duì)象。axlAddSelectPoint()axlSubSelectPoint()3.3框選函數(shù)axlSingleSelectBox()=在allegro中框選axlAddSelectBox()axlSubSelectBox()3.4通用選擇函數(shù)axlSelect()=支持多種選擇方式于一身,單選,框選,TempGroup3.5其它選擇函數(shù)axlAddSelectAll()=不需要用戶交互的選擇方式,只根據(jù)F

45、indFilter的條件axlSubSelectAll()axlSingleSelectName()axlAddSelectName()axlSubSelectName()axlSingleSelectObject()axlAddSelectObject()axlSubSelectObject()3.6獲取和清除函數(shù)axlGetSelSet()=獲取之前的選擇函數(shù)選擇的dbidaxlGetSelSetCount()axlClearSelSet()=清除之前選擇函數(shù)選擇的dbid(注:當(dāng)一個(gè)對(duì)象被選擇了以后,將會(huì)被自動(dòng)的以TempHighlight的方式高亮,而該函數(shù)運(yùn)行以后將會(huì)清除這個(gè)對(duì)象的選

46、擇狀態(tài),同時(shí)該對(duì)象也不再高亮)3.7示例:選擇一個(gè)Symbol,并將其移動(dòng)到另一個(gè)相對(duì)位置axlClearSelSet();清除之前可能存在的被選擇函數(shù)選擇的元素,避免引入不合適的dbid,這是個(gè)好習(xí)慣axlSetFindFilter(?enabled(noallsymbols)?onButtons(noallsymbols);設(shè)置FindFilter的Symbols選項(xiàng)處于選中狀態(tài)axlSingleSelectPoint();請(qǐng)通過點(diǎn)擊選擇的方式,選擇一個(gè)Symbol對(duì)象dSym=axlGetSelSet();=(dbid),將得到被選擇的dbid列表,盡管這個(gè)列表只有一個(gè)元素axlClea

47、rSelSet();清理掉你自己做過的選擇,避免給別的程序帶來錯(cuò)誤,同樣是個(gè)好習(xí)慣dSym=car(dSym);=dbid,的到Symbol的dbid;dSym-?;=將得到這個(gè)Symbol的相關(guān)屬性ix=100;iy=200;axlTransformObject(dSym,?moveix:iy);=將該Symbol右移lOOmil,上移200mil;axlTransformObject()函數(shù)的作用是將一個(gè)或多個(gè)symbol由一個(gè)地方移動(dòng)、翻轉(zhuǎn)、旋轉(zhuǎn)到另一個(gè)新的位置。;axlTransformObject(lo_dbid/o_dbid?moveldeltaPoint?mirrort/nil?

48、anglef_angle?originlrotatePoint?allOrNonet/nil)skill交互函數(shù)axlUI系列集錦Interface指和用戶交互,allegro給出一些Message提醒用戶進(jìn)行相關(guān)的操作,比如說PickaPoint就是讓用戶用鼠標(biāo)選擇一個(gè)點(diǎn);又比如說allegro彈出一個(gè)Confirm對(duì)話框,需要用戶選擇Yes/No的情況。在allegro的skill窗口輸入fn(axlUI)般會(huì)查到如下的函數(shù):axlUICmdPopupSetaxlUIColorDialogaxlUIConfirmaxlUIControlaxlUIDataBrowseaxlUIEditFil

49、eaxlUIGetUserDataaxlUIMenuDumpaxlUIMenuLoadaxlUIMultipleChoiceaxlUIPopupDefineaxlUIPopupSetaxlUIPromptaxlUIViewFileCreateaxlUIViewFileReuseaxlUIViewFileScrollToaxlUIWBeepaxlUIWBlockaxlUIWCloseaxlUIWDisableQuitaxlUIWExposeaxlUIWExposeByNameaxlUIWPermaxlUIWPrintaxlUIWRedrawaxlUIWSetHelpTagaxlUIWSetPar

50、entaxlUIWShowaxlUIWTimerAddaxlUIWTimerRemoveaxlUIWUpdateaxlUIYesNoaxlUIYesNoCancel這里介紹一下其中幾個(gè)很常用的函數(shù)的用法axlUIConfirm=axlUIConfirm(areyousuretodeleteallhighlightshapes?)axlUIYesNoCancel=axlUIYesNoCancel(areyousuretodeleteallhighlightshapes?DeleteShapeCommand)axlUIYesNo=axlUIYesNo(areyousuretodeleteallhi

51、ghlightshapes?DeleteShapeCommand)axlUIMultipleChoice=axlUIMultipleChoice(Pickalayer(topbottom)ViewLayer)axlUIPrompt=axlUIPrompt(EnterYourNameusername)前3個(gè)差不多,但是axlUIConfirm只是個(gè)提醒,返回值總是t,另外兩個(gè)返回值是數(shù)字0=Yes,1=No,2=Cancel。axlUIMultipleChoice的返回值也是數(shù)字,0對(duì)于這個(gè)函數(shù)中間那個(gè)列表的第一個(gè)參數(shù),順序下來。axlUIPrompt這個(gè)函數(shù)提供了用戶輸入信息的功能,返回值為字

52、符串,如果你想要數(shù)字,需要自行轉(zhuǎn)換,atoi/atof之類。axlUIPrompt示例最后還有一個(gè)axlUIWBeep(),就是一個(gè)beep提示音axlUIWDisableQuit=axlUIWDisableQuit(userDefinedForm);屏蔽掉form右上角的那個(gè)close叉叉axlUIWClose=axlUIWClose(userDefinedForm);關(guān)閉掉formaxlUIWShow=axlUIWShow(userDefinedFormoption);optionshow=顯示并激活userDefinedForm;showna顯示但不激活;hide窗口隱藏;nil顯示支持

53、的操作axlUIWPrint=axlUIWPrint(userDefinedFormthisisaprettyform);輸出字符到form的最下面窗口axlUIWPerm=axlUIWPerm(userDefinedFormt);allegro打開新的板子會(huì)默認(rèn)關(guān)閉掉當(dāng)前打開的所以的form窗口,用這個(gè)命令可以屏蔽這個(gè)功能axlUIWBlock=axlUIWBlock(userDefinedForm);強(qiáng)制用戶操作了當(dāng)前的form才可以繼續(xù)其它的工作axlUIWRedrawaxlUIWUpdate=axlUIWUpdate(nil)這個(gè)和axlUIWRedraw(nil)更適合刷新主屏幕ax

54、lUIWExposeaxlUIWExposeByName=S2個(gè)都是將選擇的窗口顯示到最前端axlUIDataBrowseaxlUIColorDialog這2個(gè)函數(shù)調(diào)用allegro系列的form,挺有用的。參考algroskill.pdf中的例子:axlUIDataBrowse(NET(RETRIEVE_NAME)hit)rgb=axlColorGetrgb=axlUIColorDialog(nilrgb)when(rgbaxlColorSet(1rgb)這里的1可以是其它的數(shù)字,16.0以上可以到192。axlUIMenuDump=axlUIMenuDump(CurrentMenu)輸出當(dāng)

55、前allegro的menu信息到當(dāng)前工作目錄的CurrentMenu.men文件axlUIMenuLoad=axlUIMenuLoad(menu.men)loadmenu.men的信息到allegro中建立新的目錄很實(shí)用的2個(gè)功能鼠標(biāo)右鍵的popupmenu:axlUIPopupDefineaxlUIPopupSetprocedure(aaprintln(I-youselectA)procedure(bbprintln(I-youselectB)pop=axlUIPopupDefine(nil(Aaa)(Bbb)axlUIPopupSet(pop)運(yùn)行了上面的程序以后在allegro中單擊鼠標(biāo)

56、右鍵就會(huì)看到一個(gè)popup,就像我們常見的Done,Cancel,Opps那個(gè)popup,只是這里的是A和B。axlUIPopupSet(nil)這個(gè)命令來將剛剛的設(shè)置清除axlUIViewFileCreateaxlUIViewFileReuseaxlUIViewFileScrollTo只讀方式打開文件,沒怎么用過,也覺得沒有啥用處。還剩下幾個(gè)除了Time可能有些作用,其它的沒有沒有什么感覺。axlUIWTimerAddaxlUIWTimerRemoveaxlUIControldonotuseaxlUIEditFileaxlUIGetUserDataaxlUIWSetHelpTagaxlUIW

57、SetParentallegroskill交互式編輯函數(shù)這里介紹一些基本的編輯命令,比如axlDeleteObject用來刪除可被刪除的系統(tǒng)對(duì)象(各種dbid),axlShowObject用來顯示被選擇對(duì)象的信息,和allegro中的ShowElement命令顯示的結(jié)果差不多。常用函數(shù)示例:axlChangeWidth();=和Allegro中的Change命令類似,該命令用來改變Cline/Line的寬度axlDBDeleteProp();=該命令可以刪除選擇對(duì)象的指定屬性,使用該命令相當(dāng)于Allegro中EditProperty命令。axlDBDeletePropDictEntry();=

58、該命令相當(dāng)于Allegro中的UserDefinedProperty命令axlLastPick();=獲得用戶鼠標(biāo)最近一次點(diǎn)擊的坐標(biāo)axlShapeChangeDynamicType();=改變選擇Shape的動(dòng)靜態(tài)屬性axlTransformObject();=移動(dòng)對(duì)象另外:axlEnterPoint();提示用戶輸入一個(gè)點(diǎn)的坐標(biāo)axlEnterString();提示用戶輸入一個(gè)字符串a(chǎn)xlCancelEnterFun();取消一個(gè)提示Enter操作的函數(shù)的作用還有一些比如axlHighlightObject();highlight對(duì)象axlMiniStatusLoad();這個(gè)函數(shù)可以讓用

59、戶定義的form顯示在OptionsTab上。allegroskillFile操作allegro有些專用的函數(shù)可以操作文件,allegro本身支持skill的那些文件操作函數(shù),比如infile,outfile函數(shù),而如下的函數(shù)都只是更多的文件操作函數(shù):axlDMOpenFile();axlDMOpenLog();axlDMClose();axlOSFileCopy();axlOSFileMove();axlOSSIash();axlTempDirectory();allegroskillShel臊作相關(guān)函數(shù)這里的函數(shù)可以用來讀取AllegroPCBEditor的環(huán)境參數(shù),比如Alias,Fun

60、cKey以及一些系統(tǒng)的參數(shù)(.psmpath)。比如:axlGetAlias()axlGetFuncKey()axlGetVariable()axlSetAlias()axlSetFunckey()axlUnsetVariable()另外:axlShell(),這個(gè)命令很有用,它支持在skill環(huán)境中運(yùn)行allegro的命令,比如allegro的status命令,在skill狀態(tài)下是不可以直接運(yùn)行的,需要通過axlShell(status)來運(yùn)行。另:設(shè)置和獲得windows/UNIX系統(tǒng)下的環(huán)境變量setShellEnvVar()getShellEnvVar()allegroskillFor

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論