vivienluo 发表于 2013-11-13 22:58:31

自动导出封装焊盘、DEVICE、SYMBOL的SKILL

当在allegro中调入第三方网表的时候,需要指定器件的封装、焊盘、device。方可调入到PCB EDITOR中。
该SKILL可以直接将器件封装的焊盘、DEVICE、SYMBOL一次性导出,device、symbol名与封装名一致。
导出方法:
执行命令:create_device
可导出当前器件封装的焊盘、DEVICE、SYMBOL

执行命令:create_device_batch
可导出当前封装目录下所有封装的焊盘、DEVICE、SYMBOL

以下是SKILL源码,仅供各位参考:/********************************************************/
/*               Title :Create Device                      */
/*   Execute Command :create_device               */
/*                        create_device_batch         */
/*            Author :VivienLuo                     */
/*       Creation Date :2013-07-16                  */
/*            Update :                              */
/********************************************************/

axlCmdRegister("create_device" 'add_value_device ?cmdType "general")
axlCmdRegister("create_device_batch" 'create_device_batch ?cmdType "general")

defun( create_device_batch ()
        libFiles = getDirFiles("./")
        draFiles = nil
        foreach(libFile libFiles
                when(car(last(parseString(libFile ".")))== "dra"
                        draFiles = cons(libFile draFiles)
                )
        )
        foreach(draFile draFiles
                axlOpenDesign(?design draFile ?mode "wf")
                add_value_device()
        );end foreach       
        axlShell("unset noconfirm")
);end defun

defun( add_value_device ()
        axlShell("set noconfirm")
        designType = axlDesignType(t)
        case(designType
                ("PACKAGE"
                        crete_device_run(strcat(axlCurrentDesign() ".psm"))
                        axlPadstackToDisk()
                )
                ("MECHANICAL"
                        crete_device_run(strcat(axlCurrentDesign() ".bsm"))
                )
                ("FORMAT"
                        crete_device_run(strcat(axlCurrentDesign() ".osm"))
                )
                ("SHAPE"
                        crete_device_run(strcat(axlCurrentDesign() ".ssm"))
                )
                ("FLASH"
                        crete_device_run(strcat(axlCurrentDesign() ".fsm"))
                )
        )               
        axlShell("replay \"./create_device.scr\"")               
        axlSaveDesign(?design axlCurrentDesign())       
        axlShell("unset noconfirm")
);end defun

defun( crete_device_run (fileName)
        saveScript = outfile("./create_device.scr")
        fprintf(saveScript "scriptmode +i +n\n")
        fprintf(saveScript "version 15.51\n")
        fprintf(saveScript "setwindow pcb\n")
        fprintf(saveScript "trapsize 666\n")
        fprintf(saveScript "create device\n")
        fprintf(saveScript "setwindow form.crdevice\n")
        fprintf(saveScript "FORM crdevice done\n")
        fprintf(saveScript "create symbol\n")
        fprintf(saveScript "fillin %s\n" fileName)
        close(saveScript)
);end defun


minger2008 发表于 2016-8-3 10:02:34

chuchiwolong 发表于 2014-6-27 16:00
请问这个错误怎么解决?

E- Cannot open script file; 'E:/pcb01/create_device.scr' does not exist.


同问            

遊樂天空 发表于 2013-11-22 13:49:57

为啥我的找不到create_device命令,座求大虾指点:)谢谢

375259768 发表于 2013-11-22 16:04:32

allegro自带的好像也可以

遊樂天空 发表于 2013-11-22 16:39:24

allegro自带的不能单独到处一个封装

vivienluo 发表于 2013-11-22 18:36:39

375259768 发表于 2013-11-22 16:04 static/image/common/back.gif
allegro自带的好像也可以

是不是因为你没加载成功的原因?

vivienluo 发表于 2013-11-22 18:37:14

375259768 发表于 2013-11-22 16:04 static/image/common/back.gif
allegro自带的好像也可以

allegro 本身就可以创建DEVICE,这个功能只是方便一次性创建出来。不用手动去创建。

這侽孓譙悴丶 发表于 2014-4-13 17:46:42

不错、感谢分享···

chuchiwolong 发表于 2014-6-27 16:00:49

请问这个错误怎么解决?

E- Cannot open script file; 'E:/pcb01/create_device.scr' does not exist.
Performing a partial database check before saving.
Writing database to disk.

bingshuihuo 发表于 2015-12-23 14:04:17

allegro自带的好像也可以

一线之间 发表于 2016-1-8 23:18:50

很好用,比我公司更好用
页: [1] 2 3 4
查看完整版本: 自动导出封装焊盘、DEVICE、SYMBOL的SKILL