| --  作者:wangxinxin --  发布时间:2010-12-8 13:34:29
 --  Cadence Allegro SKILL语言
 
 
		
			
				| 大纲: (一)、SKILL基础
 (二)、利用AXL接口操作Allegro PCB对象
 (三)、注册和使用自定义Allegro命令
 (四)、Allegro UI界面设计和响应
 
 Email: TrizDev@yahoo.cn   (以前的邮箱丢了)
 
 
 四、Allegro UI界面设计和响应
 1、简介
 界面是交互设计中不可缺少的一部分,很多时候我们无法只让程序孤芳自赏地运行
 
 2、基于文本描述的SKILL界面设计
 例子:Example.form(简单的几段文字已经勾勒出我们想要的界面)
 
 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、测试Form的方法
 Form测试接口函数axlFormTest(s_formPath)
 
 示例:
 axlFormTest("C:\\\\Example.form")
 
 功能:
 利用这个函数可以检查Form文件的语法以及Form的显示效果, 编辑界面时不断使用,使你的界面更加漂亮
 
 Tips:
 A、Allegro所有的Form文件都放在Setup - User Preferences...菜单,选择UI_Path列别中的formpath。
 查看Allegro所有界面文件,很好的界面重用资源
 
 B、将自定义的Form文件放在formpath下可以不用写绝对路径调用,不信试试
 
 4、界面工具开发ABCDE
 A、创建界面文件并使用axlFormCreate或axlMiniStatusLoad打开Form句柄(注意卸磨杀驴)
 B、使用axlFormSetField初始化界面区域
 C、axlFormDisplay显示界面
 D、在axlFormCallback中定义用户交互和区域响应
 E、使用axlFormClose关闭界面窗口
 
 /*
 功能:通过选择界面列表框中的器件名称浏览器件
 命令:OverviewComps
 */
 
 ;注册命令
 axlCmdRegister("OverviewComps"  \'TestFormAppMainModule)
 
 ;创建界面文件并显示界面(主模块)
 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)
 
 ;创建界面句柄,删除界面文件(卸磨杀驴...)
 fw = axlFormCreate(gensym()  FileName  \'("E"  "OUTER")  \'TestFormAppCallBack  t)
 deleteFile(FileName)
 
 ;界面区域初始化
 TestFormFieldInit(fw)
 
 ;显示界面
 axlFormDisplay(fw)
 
 return(t)
 
 ))
 
 ;界面区域初始化
 procedure( TestFormFieldInit(fw)
 prog( (CompsNameList)
 ;获取所有的器件名称
 CompsNameList = axlDBGetDesign()->components~>name
 
 ;设置器件列表区域
 axlFormSetField(fw  "ComponentList"  CompsNameList)
 
 return(t)
 ))
 
 ;界面区域响应回调函数
 procedure( TestFormAppCallBack(fw)
 prog( (CompName  CompId)
 case(fw->curField
 ("ComponentList"
 CompName = fw->curValue
 CompId = axlSelectByName("COMPONENT"  CompName)
 
 ;定位到对象
 axlZoomToDbid(CompId  t)
 
 ;显示对象详细信息
 axlShowObject(CompId)
 )
 
 ("Quit"
 ;清理现场
 axlClearSelSet()
 axlSetFindFilter(?enabled "NOALL"  ?onButtons "NOALL")
 
 axlFormClose(fw)
 )
 )
 
 return(t)
 
 ))
 
 5、参考文档
 %CDSROOT%\\doc
 
 例子:
 D:\\DesignAdvance\\Cadence\\SPB_15.2\\doc
 
 参考手册列表:
 algroskill          AXL接口函数参考手册
 
 Tips:
 看看下面的路径下是什么东西,保证乐死你... ...
 %CDSROOT%\\share\\pcb\\example\\skill
 
 6、课后习题
 搞懂%CDSROOT%\\share\\pcb\\example\\skill路径下所有的程序代码,然后恭喜你入门了... ...
 |  
 |