找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

哪位有导出库封装源码的skill,不是加密的那种,有源码的

[复制链接]

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
跳转到指定楼层
1#
发表于 2016-4-7 17:03 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您!

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

x
哪位有导出库封装源码的skill,不是加密的那种,有源码的
给传一份吧
谢谢啦
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏1 支持!支持! 反对!反对!

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
推荐
发表于 2016-4-11 10:52 | 只看该作者
soswelcome 发表于 2016-4-11 09:02
你好,我想了一下,第二步思路大概有两种方法:第一种
在skill中,对某个文件夹下的dra文件读取,然后删 ...

以下的代碼你試試看,主要是第一和第二步,其第三步驟,請你自行寫,或是手動更新

  1. axlCmdRegister("sm" 'fnSymbolMain)
  2. procedure(fnSymbolMain()
  3.         let((tSymbolDir lLayers)
  4.                 unless(axlGetVariable("noconfirm")
  5.                         axlSetVariable("noconfirm" t)
  6.                 )
  7.                 ;Symbols要存放的目錄
  8.                 tSymbolDir = "./symbols" ;此目錄名稱必須自行變更
  9.                 ;要刪除資料的層面名稱
  10.                 lLayers = list("PACKAGE GEOMETRY/ASSEMBLY_TOP" "PACKAGE GEOMETRY/ASSEMBLY_BOTTOM")
  11.                
  12.                 fnDumpLibrary(tSymbolDir)
  13.                 fnSymbolsProcess(tSymbolDir lLayers)
  14.         )
  15. )       
  16. procedure(fnDumpLibrary(tExportDir)
  17.         let((tSymDir tFile tDir tCmd)
  18.                 tSymDir = simplifyFilename(tExportDir)
  19.                 tFile = axlGetVariable("module")
  20.                 tDir = getWorkingDir()
  21.                 changeWorkingDir(tSymDir)
  22.                 sprintf(tCmd "dump_libraries %L" strcat(tDir "/" tFile))
  23.                 axlRunBatchDBProgram("dump_libraries" tCmd ?silent nil ?noUnload t ?reloadDB nil)
  24.                 changeWorkingDir(tDir)
  25.         )
  26. )
  27. procedure(fnSymbolsProcess(tSymbolDir lLayers)
  28.         let((lNewFiles tFile)
  29.                 lNewFiles = fnGetSymbolFile(tSymbolDir)
  30.                 foreach(tOne lNewFiles ;tOne = nth(0 lNewFiles)
  31.                         ;讀取資料
  32.                         tFile = simplifyFilename(strcat(tSymbolDir "/" tOne))
  33.                         axlOpenDesign(?design tFile ?mode "w")
  34.                         ;刪除某一層資料
  35.                         fnSymbolsDeleteData(lLayers)
  36.                         ;儲存資料
  37.                         axlSaveDesign(?design tFile ?mode "nocheck")
  38.                 )
  39.         )
  40. )
  41. procedure(fnGetSymbolFile(tSymbolDir)
  42.         let((tDir lAllPathFiles lFiles tName lNewFiles)
  43.                 tDir = simplifyFilename(tSymbolDir)
  44.                 ;取Package Symbols的檔案名稱(*.psm)
  45.                 when(isDir(tDir)
  46.                         lAllPathFiles = getDirFiles(tDir)
  47.                         lFiles = setof(x lAllPathFiles index(x ".psm"))
  48.                         foreach(tOne lFiles ;tOne = nth(0 lFiles)
  49.                                 tName = cadr(axlDMFileParts(tOne))
  50.                                 lNewFiles = cons(strcat(tName ".dra") lNewFiles)
  51.                         )
  52.                 )
  53.                 lNewFiles
  54.         )
  55. )
  56. procedure(fnSymbolsDeleteData(lLayers)
  57.         let((lSaveVisible lCSSaveArea lAllObject)
  58.                 lSaveVisible = axlVisibleGet()
  59.                 lSaveArea = axlWindowBoxGet()
  60.                 when(lLayers
  61.                         axlVisibleDesign(nil)
  62.                         foreach(tLayer lLayers
  63.                                 axlVisibleLayer(sprintf(nil "%s" tLayer) t)
  64.                         )
  65.                         axlVisibleUpdate(t)
  66.                         axlClearSelSet()
  67.                         axlSetFindFilter(?enabled list("lines" "shapes") ?onButtons list("lines" "shapes"))
  68.                         axlAddSelectAll()
  69.                         lAllObject = axlGetSelSet()
  70.                         axlClearSelSet()
  71.                         axlDeleteObject(lAllObject)
  72.                 )
  73.                 axlVisibleSet(lSaveVisible)
  74.                 axlWindowBoxSet(lSaveArea)
  75.                 axlVisibleUpdate(t)
  76.         )
  77. )
复制代码


57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
推荐
发表于 2016-4-14 09:55 | 只看该作者
soswelcome 发表于 2016-4-13 12:36
可否在进行删除某一层信息之前,把所有的.psm文件读删除了,对.dra文件进行操作,然后在保存一份.psm文件 ...

你更新下面的函數,再試試看

  1. procedure(fnSymbolsProcess(tSymbolDir lLayers)
  2.         let((lNewFiles tFile)
  3.                 lNewFiles = fnGetSymbolFile(tSymbolDir)
  4.                 foreach(tOne lNewFiles ;tOne = nth(0 lNewFiles)
  5.                         ;讀取資料
  6.                         tFile = simplifyFilename(strcat(tSymbolDir "/" tOne))
  7.                         axlOpenDesign(?design tFile ?mode "w")
  8.                         ;刪除某一層資料
  9.                         fnSymbolsDeleteData(lLayers)
  10.                         ;刪除舊的*.psm檔案
  11.                         rexCompile(".dra$")
  12.                         tSymbol = rexReplace(tFile "" 0)
  13.                         tPsmFile = strcat(tSymbol ".psm")
  14.                         when(isFile(tPsmFile)
  15.                                 deleteFile(tPsmFile)
  16.                         )
  17.                         ;產生新的*.psm檔案
  18.                         axlCompileSymbol(?symbol tSymbol ?type "package")
  19.                         ;儲存資料
  20.                         axlSaveDesign(?design tFile ?mode "nocheck")
  21.                 )
  22.         )
  23. )
复制代码


57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
推荐
发表于 2016-4-8 11:36 | 只看该作者
    Usage:
        dump_libraries -[pdamsflcx] <layout>

    Options:
        -p - dump all padstacks
        -d - dump all device files        (run create_devices)
        -a - dump all package symbols     (.dra only)
        -m - dump all mechanical symbols  (.dra only)
        -s - dump all shape/flash symbols (.dra only)
        -f - dump all format symbols      (.dra only)
        -l - dump all signoise device models
        -c - create .psm, .bsm, fsm, and .ssm files when dumping symbols
        -x - do not dump dependencies
        <no options> - dump all elements  (equivalent to -pdamsflc)

    Notes:
     1) The dependencies of each dumped item will also be dumped.  For
        example, when dumping padstacks, all shape symbols required by
        the padstacks will also be created.

     2) The -x option prevents dumping dependancies. By default padstacks
        that a dra requires are dumped.

     3) The -b option is used by APD to send information from the APD to
        the dump_libraries program about the symbol to be dumped. The -b
        option causes only one padstack and one particular symbol to be dumped
.
        The -b options have three values:
            dump_libraries -b component_refdes -b symbol_name -b padstack_name
        This option is quite different from normal behavior.

点评

这个源码太高深了,没有看懂,请问在这个源代码中,什么位置,加上package/silkscreen_top,指定我导出哪一层元器件封装信息?或者指定不导出某一层信息?或者指定删除某一层信息?  详情 回复 发表于 2016-4-8 12:34
牛人,这个函数在skill帮助文档中,在哪个pdf文档里,可以告知一下吗?或者给传一份文档手册 谢谢!  详情 回复 发表于 2016-4-8 12:27
非常感谢,果然是牛人。 但是导出来和allegro菜单一样,有没有一个参数选项,可以指定我导出来哪一层哪一层信息的?  详情 回复 发表于 2016-4-8 12:25

5

主题

50

帖子

260

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
260
42#
发表于 2018-4-10 14:23 | 只看该作者
牛,没有做不到,只有想不到!!

0

主题

530

帖子

318

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
318
41#
发表于 2018-1-3 16:44 | 只看该作者

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
40#
 楼主| 发表于 2016-4-14 14:06 | 只看该作者
XYX365 发表于 2016-4-14 13:37
你試試看此函數 axlRefreshSymbol()

试了一下,就是这个函数。
非常感谢

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
39#
 楼主| 发表于 2016-4-14 13:56 | 只看该作者
XYX365 发表于 2016-4-14 13:37
你試試看此函數 axlRefreshSymbol()

好的,我试试看。谢谢

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
38#
发表于 2016-4-14 13:37 | 只看该作者
soswelcome 发表于 2016-4-14 13:32
手动place/update symbols命令可以更新封装,
在skill的axl中有没有相关的函数,可以给提供一下吗?
我 ...

你試試看此函數 axlRefreshSymbol()

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
37#
 楼主| 发表于 2016-4-14 13:32 | 只看该作者
XYX365 发表于 2016-4-14 09:55
你更新下面的函數,再試試看

手动place/update symbols命令可以更新封装,
在skill的axl中有没有相关的函数,可以给提供一下吗?
我在把后续的自动更新实现一下。
谢谢啦


本帖子中包含更多资源

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

x

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
36#
 楼主| 发表于 2016-4-14 12:34 | 只看该作者
XYX365 发表于 2016-4-14 09:55
你更新下面的函數,再試試看

非常感谢,代码是正确的,我把封装路径设置错了。从您的代码上,可以看出来您的skill功底很牛,代码规范也比做纯软件的规范多了

再次表示感谢!




267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
35#
 楼主| 发表于 2016-4-14 11:44 | 只看该作者
XYX365 发表于 2016-4-14 09:55
你更新下面的函數,再試試看

谢谢!手动place/update后还是存在的,吃完饭,下午接着搞

11

主题

292

帖子

337

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
337
33#
发表于 2016-4-13 15:27 | 只看该作者
学习

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
32#
 楼主| 发表于 2016-4-13 12:36 | 只看该作者
XYX365 发表于 2016-4-11 10:52
以下的代碼你試試看,主要是第一和第二步,其第三步驟,請你自行寫,或是手動更新

可否在进行删除某一层信息之前,把所有的.psm文件读删除了,对.dra文件进行操作,然后在保存一份.psm文件

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
31#
 楼主| 发表于 2016-4-13 11:52 | 只看该作者
XYX365 发表于 2016-4-13 11:35
有可能*.psm沒更新,

在这一步lFiles = setof(x lAllPathFiles index(x ".psm")),对.psm进行查找,可否对源文件.dra文件进行查找修改,删除所有的.psm文件,然后通过对.dra文件更新保存.psm文件?

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
30#
 楼主| 发表于 2016-4-13 11:46 | 只看该作者
XYX365 发表于 2016-4-13 11:35
有可能*.psm沒更新,

我知道在allegro窗口中,打开的.dra文件save命令后,会自动进行.psm更新保存。
那这个在什么地方添加函数进行更新保存呢?

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
29#
发表于 2016-4-13 11:35 | 只看该作者
soswelcome 发表于 2016-4-13 11:18
我手工修改的,和skill获取查看的一样的。这个是什么原因呢,有没有可能是.psm文件有问题?还是.dra文件 ...

有可能*.psm沒更新,


您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-4-17 13:51 , Processed in 0.075487 second(s), 40 queries , Gzip On.

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

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

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