-- 作者:wangxinxin
-- 發(fā)布時(shí)間:2010-12-8 13:34:29
-- Cadence Allegro SKILL語(yǔ)言
大綱: (一)、SKILL基礎(chǔ) (二)、利用AXL接口操作Allegro PCB對(duì)象 (三)、注冊(cè)和使用自定義Allegro命令 (四)、Allegro UI界面設(shè)計(jì)和響應(yīng)
Email: TrizDev@yahoo.cn (以前的郵箱丟了)
四、Allegro UI界面設(shè)計(jì)和響應(yīng) 1、簡(jiǎn)介 界面是交互設(shè)計(jì)中不可缺少的一部分,很多時(shí)候我們無法只讓程序孤芳自賞地運(yùn)行 2、基于文本描述的SKILL界面設(shè)計(jì) 例子:Example.form(簡(jiǎn)單的幾段文字已經(jīng)勾勒出我們想要的界面) FILE_TYPE=FORM_DEFN VERSION=2 FORM FIXED PORT 26 20 HEADER "FINDER..." TILE TEXT "COMPONENT LIST" TLOC 1 1 FSIZE 25 3 ENDTEXT FIELD Placed_List FLOC 1 3 LIST "" 24 16 OPTION sort ENDFIELD FIELD done FLOC 9 33 MENUBUTTON " OK " 10 3 ENDFIELD ENDTILE ENDFORM 3、測(cè)試Form的方法 Form測(cè)試接口函數(shù)axlFormTest(s_formPath) 示例: axlFormTest("C:\\\\Example.form") 功能: 利用這個(gè)函數(shù)可以檢查Form文件的語(yǔ)法以及Form的顯示效果, 編輯界面時(shí)不斷使用,使你的界面更加漂亮 Tips: A、Allegro所有的Form文件都放在Setup - User Preferences...菜單,選擇UI_Path列別中的formpath。 查看Allegro所有界面文件,很好的界面重用資源 B、將自定義的Form文件放在formpath下可以不用寫絕對(duì)路徑調(diào)用,不信試試 4、界面工具開發(fā)ABCDE A、創(chuàng)建界面文件并使用axlFormCreate或axlMiniStatusLoad打開Form句柄(注意卸磨殺驢) B、使用axlFormSetField初始化界面區(qū)域 C、axlFormDisplay顯示界面 D、在axlFormCallback中定義用戶交互和區(qū)域響應(yīng) E、使用axlFormClose關(guān)閉界面窗口 /* 功能:通過選擇界面列表框中的器件名稱瀏覽器件 命令:OverviewComps */ ;注冊(cè)命令 axlCmdRegister("OverviewComps" \'TestFormAppMainModule) ;創(chuàng)建界面文件并顯示界面(主模塊) procedure( TestFormAppMainModule() prog( (FileName FilePort) ;寫文件生成界面文件 FileName = "TestForm.form" FilePort = outfile(FileName "w") fprintf(FilePort "FILE_TYPE=FORM_DEFN VERSION=2\\n") fprintf(FilePort "FORM\\n") fprintf(FilePort "FIXED\\n") fprintf(FilePort "PORT 26 20\\n\\n") fprintf(FilePort "HEADER \\"FORM TEST...\\"\\n\\n") fprintf(FilePort "TILE\\n\\n") fprintf(FilePort "TEXT \\"ComponentList:\\"\\n\\n") fprintf(FilePort "TLOC 1 1\\n") fprintf(FilePort "FSIZE 25 3\\n") fprintf(FilePort "ENDTEXT\\n\\n") fprintf(FilePort "FIELD ComponentList\\n") fprintf(FilePort "FLOC 1 3\\n") fprintf(FilePort "LIST \\"\\" 24 16\\n") fprintf(FilePort "OPTION sort\\n") fprintf(FilePort "ENDFIELD\\n\\n") fprintf(FilePort "FIELD Quit\\n") fprintf(FilePort "FLOC 9 33\\n") fprintf(FilePort "MENUBUTTON \\"EXIT\\" 10 3\\n") fprintf(FilePort "ENDFIELD\\n\\n") fprintf(FilePort "ENDTILE\\n\\n") fprintf(FilePort "ENDFORM\\n\\n") close(FilePort) ;創(chuàng)建界面句柄,刪除界面文件(卸磨殺驢...) fw = axlFormCreate(gensym() FileName \'("E" "OUTER") \'TestFormAppCallBack t) deleteFile(FileName) ;界面區(qū)域初始化 TestFormFieldInit(fw) ;顯示界面 axlFormDisplay(fw) return(t) )) ;界面區(qū)域初始化 procedure( TestFormFieldInit(fw) prog( (CompsNameList) ;獲取所有的器件名稱 CompsNameList = axlDBGetDesign()->components~>name ;設(shè)置器件列表區(qū)域 axlFormSetField(fw "ComponentList" CompsNameList) return(t) )) ;界面區(qū)域響應(yīng)回調(diào)函數(shù) procedure( TestFormAppCallBack(fw) prog( (CompName CompId) case(fw->curField ("ComponentList" CompName = fw->curValue CompId = axlSelectByName("COMPONENT" CompName) ;定位到對(duì)象 axlZoomToDbid(CompId t) ;顯示對(duì)象詳細(xì)信息 axlShowObject(CompId) ) ("Quit" ;清理現(xiàn)場(chǎng) axlClearSelSet() axlSetFindFilter(?enabled "NOALL" ?onButtons "NOALL") axlFormClose(fw) ) ) return(t) )) 5、參考文檔 %CDSROOT%\\doc 例子: D:\\DesignAdvance\\Cadence\\SPB_15.2\\doc 參考手冊(cè)列表: algroskill AXL接口函數(shù)參考手冊(cè) Tips: 看看下面的路徑下是什么東西,保證樂死你... ... %CDSROOT%\\share\\pcb\\example\\skill 6、課后習(xí)題 搞懂%CDSROOT%\\share\\pcb\\example\\skill路徑下所有的程序代碼,然后恭喜你入門了... ... |
|