找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 4095|回复: 11
打印 上一主题 下一主题

Cadence Allegro SKILL语言讨论和交流(七)

  [复制链接]

9

主题

46

帖子

873

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
873
跳转到指定楼层
1#
发表于 2009-2-22 20:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
大纲:
    (一)、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路径下所有的程序代码,然后恭喜你入门了... ...

评分

参与人数 1贡献 +2 收起 理由
cherry5767 + 2

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏8 支持!支持!1 反对!反对!
Mathew

42

主题

222

帖子

1513

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1513
2#
发表于 2009-2-22 21:46 | 只看该作者
写的不错!给你顶起来呵呵!
[img][/img]

95

主题

1309

帖子

4219

积分

EDA365版主(50)

Rank: 5

积分
4219
3#
发表于 2009-2-24 22:28 | 只看该作者
2# wg2005
好文章,顶,学习啦,谢谢!

35

主题

115

帖子

979

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
979
4#
发表于 2009-3-2 13:53 | 只看该作者
建议写本书吧。加上一些例子。想那些国外经典的c语言的书籍那样的。

21

主题

282

帖子

2217

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2217
5#
发表于 2009-3-5 11:47 | 只看该作者
是啊,如果你有空的话就写本书
真不错,谢谢

0

主题

15

帖子

-8962

积分

未知游客(0)

积分
-8962
6#
发表于 2010-1-3 15:41 | 只看该作者
好文章真不错,谢谢

4

主题

9

帖子

-8961

积分

未知游客(0)

积分
-8961
7#
发表于 2010-7-14 13:59 | 只看该作者
好文章,还有吗?

8

主题

109

帖子

128

积分

二级会员(20)

Rank: 2Rank: 2

积分
128
8#
发表于 2012-8-10 23:21 | 只看该作者
终于看完了 系列帖子有营养啊~

12

主题

413

帖子

1845

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1845
9#
发表于 2012-9-23 23:16 | 只看该作者
正需要,下了顶一下!

3

主题

37

帖子

199

积分

二级会员(20)

Rank: 2Rank: 2

积分
199
10#
发表于 2012-9-25 00:08 | 只看该作者
谢谢楼主,分享得很不错。

3

主题

157

帖子

2697

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2697
11#
发表于 2012-12-18 09:56 | 只看该作者
顶。。。。。。。。。。。。。

7

主题

351

帖子

348

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
348
12#
发表于 2017-6-8 14:32 | 只看该作者
搞懂所有才入门,也是忧伤呀。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-26 06:47 , Processed in 0.061486 second(s), 33 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表