找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 1129|回复: 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. )
复制代码


点评

可否在进行删除某一层信息之前,把所有的.psm文件读删除了,对.dra文件进行操作,然后在保存一份.psm文件  详情 回复 发表于 2016-4-13 12:36
你好,我把封装路径更改了现在的symbols后,在目录下面的封装没有assembly层了。但是在allegro的brd文件中还是存在的啊?如何更新让它是没有的呢?place/update symbol命令为什么不行呢?  详情 回复 发表于 2016-4-13 10:20
你好,虽然可以得到dra和psm文件,但是在allegro中PLACE/Update Symbols没有效果啊  详情 回复 发表于 2016-4-13 10:03
牛,成功了。正解 非常感谢!  详情 回复 发表于 2016-4-11 13:33

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. )
复制代码


点评

手动place/update symbols命令可以更新封装, 在skill的axl中有没有相关的函数,可以给提供一下吗? 我在把后续的自动更新实现一下。 谢谢啦 [attachimg]111395[/attachimg]  详情 回复 发表于 2016-4-14 13:32
非常感谢,代码是正确的,我把封装路径设置错了。从您的代码上,可以看出来您的skill功底很牛,代码规范也比做纯软件的规范多了 再次表示感谢!  详情 回复 发表于 2016-4-14 12:34
谢谢!手动place/update后还是存在的,吃完饭,下午接着搞  详情 回复 发表于 2016-4-14 11:44

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

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
2#
发表于 2016-4-8 10:31 | 只看该作者
下面的函數你試試看
  1. procedure(fnDumpLibrary() ;導出Library的資料到目前的工作目錄下
  2.         let((tFile tDir tCmd)
  3.                 tFile = axlGetVariable("module")
  4.                 tDir = getWorkingDir()
  5.                 sprintf(tCmd "dump_libraries -p %L" strcat(tDir "/" tFile))
  6.                 axlRunBatchDBProgram("dump_libraries" tCmd ?silent nil ?noUnload t ?reloadDB nil)
  7.         )
  8. )
复制代码


点评

非常感谢,但是导出来的都是焊盘管脚的封装,不是元器件的封装 有没有可以导出元器件的封装的skill,我想在brd文件中删除package assembly层信息后,导出元器件封装没有这层信息 而菜单可以导出元器件封装,但是  详情 回复 发表于 2016-4-8 11:32

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
3#
 楼主| 发表于 2016-4-8 11:32 | 只看该作者
XYX365 发表于 2016-4-8 10:31
下面的函數你試試看

非常感谢,但是导出来的都是焊盘管脚的封装,不是元器件的封装
有没有可以导出元器件的封装的skill,我想在brd文件中删除package assembly层信息后,导出元器件封装没有这层信息

而菜单可以导出元器件封装,但是还是包含了这一层信息

点评

將這一行 sprintf(tCmd "dump_libraries -p %L" strcat(tDir "/" tFile)) 改為 sprintf(tCmd "dump_libraries %L" strcat(tDir "/" tFile)) 再試試看[/backcolor]  详情 回复 发表于 2016-4-8 11:35

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
4#
发表于 2016-4-8 11:35 | 只看该作者
soswelcome 发表于 2016-4-8 11:32
非常感谢,但是导出来的都是焊盘管脚的封装,不是元器件的封装
有没有可以导出元器件的封装的skill,我 ...

將這一行

sprintf(tCmd "dump_libraries -p %L" strcat(tDir "/" tFile))


改為


sprintf(tCmd "dump_libraries %L" strcat(tDir "/" tFile))


再試試看

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
6#
 楼主| 发表于 2016-4-8 12:25 | 只看该作者
XYX365 发表于 2016-4-8 11:36
Usage:
        dump_libraries -

非常感谢,果然是牛人。
但是导出来和allegro菜单一样,有没有一个参数选项,可以指定我导出来哪一层哪一层信息的?

点评

这个是和Allegro菜单里导出封装是一样的 对于你来说并没有用  详情 回复 发表于 2016-4-8 12:40

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
7#
 楼主| 发表于 2016-4-8 12:27 | 只看该作者
XYX365 发表于 2016-4-8 11:36
Usage:
        dump_libraries -

牛人,这个函数在skill帮助文档中,在哪个pdf文档里,可以告知一下吗?或者给传一份文档手册
谢谢!

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
8#
 楼主| 发表于 2016-4-8 12:34 | 只看该作者
XYX365 发表于 2016-4-8 11:36
Usage:
        dump_libraries -

这个源码太高深了,没有看懂,请问在这个源代码中,什么位置,加上package/silkscreen_top,指定我导出哪一层元器件封装信息?或者指定不导出某一层信息?或者指定删除某一层信息?

点评

这个是不可能的,只能在dra文件里单独处理  详情 回复 发表于 2016-4-8 12:39

93

主题

645

帖子

3395

积分

五级会员(50)

Rank: 5

积分
3395
9#
发表于 2016-4-8 12:39 | 只看该作者
soswelcome 发表于 2016-4-8 12:34
这个源码太高深了,没有看懂,请问在这个源代码中,什么位置,加上package/silkscreen_top,指定我导出哪 ...

这个是不可能的,只能在dra文件里单独处理

93

主题

645

帖子

3395

积分

五级会员(50)

Rank: 5

积分
3395
10#
发表于 2016-4-8 12:40 | 只看该作者
soswelcome 发表于 2016-4-8 12:25
非常感谢,果然是牛人。
但是导出来和allegro菜单一样,有没有一个参数选项,可以指定我导出来哪一层哪 ...

这个是和Allegro菜单里导出封装是一样的 对于你来说并没有用

点评

这个问题你一直在回复,看看之前的,你也不提供函数,也不提供方法,而且一直说,不可能。楼上的楼上不是提供了函数吗? 只不过暂时没有找到方法。 在allegro中,没有解决不了的问题,只是我们现在无法解决。肯  详情 回复 发表于 2016-4-8 13:28

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
11#
 楼主| 发表于 2016-4-8 13:28 | 只看该作者
GSO_library 发表于 2016-4-8 12:40
这个是和Allegro菜单里导出封装是一样的 对于你来说并没有用

这个问题你一直在回复,看看之前的,你也不提供函数,也不提供方法,而且一直说,不可能。楼上的楼上不是提供了函数吗?
只不过暂时没有找到方法。

在allegro中,没有解决不了的问题,只是我们现在无法解决。肯定会有方法的。你若不知道方法,请不要说不可能。
因为以我4级会员的资格,近5年的在群里,我深深的知道,这个群里高手很多,而且有时候只是不屑回答问题而已!!

点评

在brd里无论怎么对封装操作都改变不了dra里的信息,你再怎么修改删除也只是改了brd而已,dra文件是不会变的。  详情 回复 发表于 2016-4-11 13:12
你是没懂我的意思,我的意思是不可能在brd文件里删除所有的package assembly层信息然后导出封装,封装里就没有package assembly层信息,封装里的信息只能在dra文件里处理。这个只能先把所有的封装导出 然后用skill或  详情 回复 发表于 2016-4-11 12:34
不要生氣, 你的問題其處理流程如下: 1.導出所有Library的資料 2.一個一個讀取symbol,並刪除不需要的層面資料,再存檔 3.更新所有變更的symbol 第一步已經完成,再來就是要朝第二步前進, 我有空就會的提供  详情 回复 发表于 2016-4-8 13:38

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
12#
发表于 2016-4-8 13:38 | 只看该作者
soswelcome 发表于 2016-4-8 13:28
这个问题你一直在回复,看看之前的,你也不提供函数,也不提供方法,而且一直说,不可能。楼上的楼上不是 ...

不要生氣,

你的問題其處理流程如下:
1.導出所有Library的資料
2.一個一個讀取symbol,並刪除不需要的層面資料,再存檔
3.更新所有變更的symbol


第一步已經完成,再來就是要朝第二步前進,
我有空就會的提供方法.

点评

你好,我想了一下,第二步思路大概有两种方法:第一种 在skill中,对某个文件夹下的dra文件读取,然后删除某一层的封装信息,比如package/assembly层吧,然后保存。这样循环把该文件夹下面的所有dra文件读取一遍更  详情 回复 发表于 2016-4-11 09:02
谢谢确实是第一步已经成功 接下来第二步就是提取元器件的dra封装,删除某一层信息,现在假如就是删除PACKAGE GEOMETRY下面的SILKSCREEN_TOP层。然后保存,保存axl有函数,这个我是知道的 第三步更新,我可以手动  详情 回复 发表于 2016-4-8 14:48

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
13#
 楼主| 发表于 2016-4-8 14:48 | 只看该作者
XYX365 发表于 2016-4-8 13:38
不要生氣,

你的問題其處理流程如下:

谢谢确实是第一步已经成功
接下来第二步就是提取元器件的dra封装,删除某一层信息,现在假如就是删除PACKAGE GEOMETRY下面的SILKSCREEN_TOP层。然后保存,保存axl有函数,这个我是知道的

第三步更新,我可以手动进行place/update symbol进行。

现在就是第二步,进行遍历一个文件夹下面所有的当然封装,然后进行删除某一层信息。然后保存啦

还希望您能有空,给提供一种方法



267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
14#
 楼主| 发表于 2016-4-11 09:02 | 只看该作者
XYX365 发表于 2016-4-8 13:38
不要生氣,

你的問題其處理流程如下:

你好,我想了一下,第二步思路大概有两种方法:第一种
在skill中,对某个文件夹下的dra文件读取,然后删除某一层的封装信息,比如package/assembly层吧,然后保存。这样循环把该文件夹下面的所有dra文件读取一遍更改一遍保存一遍。skill删除某一层的信息的axl函数是什么呢?
第二种
在window下面批处理

可是两种方法我都不会啊

点评

以下的代碼你試試看,主要是第一和第二步,其第三步驟,請你自行寫,或是手動更新  详情 回复 发表于 2016-4-11 10:52
對 ,流程就是你說的方式, 下面函數是取得symbol的目錄下之Package 的檔案名稱  详情 回复 发表于 2016-4-11 09:41

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

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

對 ,流程就是你說的方式,

下面函數是取得symbol的目錄下之Package 的檔案名稱

  1. procedure(fnGetSymbolFile()
  2.         let((tSymbolDir lAllPathFiles lFiles tName lNewFiles)
  3.                 ;Symbols的目錄
  4.                 tSymbolDir = "./symbols"
  5.                 tSymbolDir = simplifyFilename(tSymbolDir)
  6.                
  7.                 ;取Package Symbols的檔案名稱(*.psm)
  8.                 when(isDir(tSymbolDir)
  9.                         lAllPathFiles = getDirFiles(tSymbolDir)
  10.                         lFiles = setof(x lAllPathFiles index(x ".psm"))
  11.                         foreach(tOne lFiles ;tOne = nth(0 lFiles)
  12.                                 tName = cadr(axlDMFileParts(tOne))
  13.                                 lNewFiles = cons(strcat(tName ".dra") lNewFiles)
  14.                         )
  15.                 )
  16.                 lNewFiles
  17.         )
  18. )
复制代码


点评

谢谢,没有试成功,我一直在试  详情 回复 发表于 2016-4-11 11:58
谢谢,没有试成功,我一直在试  详情 回复 发表于 2016-4-11 11:58
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-13 07:58 , Processed in 0.086616 second(s), 51 queries , Gzip On.

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

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

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