找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
楼主: soswelcome
打印 上一主题 下一主题

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

[复制链接]

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
16#
发表于 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

16

主题

111

帖子

325

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
325
17#
发表于 2016-4-11 11:34 | 只看该作者
牛人 ! 帮顶

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
18#
 楼主| 发表于 2016-4-11 11:58 | 只看该作者
XYX365 发表于 2016-4-11 09:41
對 ,流程就是你說的方式,

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

谢谢,没有试成功,我一直在试

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
19#
 楼主| 发表于 2016-4-11 11:58 | 只看该作者
XYX365 发表于 2016-4-11 09:41
對 ,流程就是你說的方式,

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

谢谢,没有试成功,我一直在试

93

主题

645

帖子

3395

积分

五级会员(50)

Rank: 5

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

你是没懂我的意思,我的意思是不可能在brd文件里删除所有的package assembly层信息然后导出封装,封装里就没有package assembly层信息,封装里的信息只能在dra文件里处理。这个只能先把所有的封装导出 然后用skill或者手动一个一个处理dra里的package assembly层信息。之前的帖子我也已经给你提供了方法,你自己看不懂,怪我喽?

点评

抱歉,那是我的理解错误喽。不过牛人已经给出了源码,我消化一下就可以使用了 不过还是非常感谢你的答复。  详情 回复 发表于 2016-4-11 13:36

93

主题

645

帖子

3395

积分

五级会员(50)

Rank: 5

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

在brd里无论怎么对封装操作都改变不了dra里的信息,你再怎么修改删除也只是改了brd而已,dra文件是不会变的。

点评

对的  详情 回复 发表于 2016-4-11 13:36

267

主题

1684

帖子

2608

积分

四级会员(40)

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

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

牛,成功了。正解
非常感谢!

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
23#
 楼主| 发表于 2016-4-11 13:36 | 只看该作者
GSO_library 发表于 2016-4-11 12:34
你是没懂我的意思,我的意思是不可能在brd文件里删除所有的package assembly层信息然后导出封装,封装里 ...

抱歉,那是我的理解错误喽。不过牛人已经给出了源码,我消化一下就可以使用了
不过还是非常感谢你的答复。

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
24#
 楼主| 发表于 2016-4-11 13:36 | 只看该作者
GSO_library 发表于 2016-4-11 13:12
在brd里无论怎么对封装操作都改变不了dra里的信息,你再怎么修改删除也只是改了brd而已,dra文件是不会变 ...

对的

267

主题

1684

帖子

2608

积分

四级会员(40)

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

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

你好,虽然可以得到dra和psm文件,但是在allegro中PLACE/Update Symbols没有效果啊

267

主题

1684

帖子

2608

积分

四级会员(40)

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

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

你好,我把封装路径更改了现在的symbols后,在目录下面的封装没有assembly层了。但是在allegro的brd文件中还是存在的啊?如何更新让它是没有的呢?place/update symbol命令为什么不行呢?

点评

是不是Library的路徑設定錯誤, 你已修改過的symbol是放在那一個目錄?  详情 回复 发表于 2016-4-13 10:31

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

积分
7919
27#
发表于 2016-4-13 10:31 | 只看该作者
soswelcome 发表于 2016-4-13 10:20
你好,我把封装路径更改了现在的symbols后,在目录下面的封装没有assembly层了。但是在allegro的brd文件 ...

是不是Library的路徑設定錯誤,
你已修改過的symbol是放在那一個目錄?



点评

我手工修改的,和skill获取查看的一样的。这个是什么原因呢,有没有可能是.psm文件有问题,还是brd文件需要通过axl函数更新什么的。内部机理不是很明白啊。 .dra文件缺失删除了某一层,为什么手动更新place/update  详情 回复 发表于 2016-4-13 11:18

267

主题

1684

帖子

2608

积分

四级会员(40)

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

积分
2608
28#
 楼主| 发表于 2016-4-13 11:18 | 只看该作者
本帖最后由 soswelcome 于 2016-4-13 11:21 编辑
XYX365 发表于 2016-4-13 10:31
是不是Library的路徑設定錯誤,
你已修改過的symbol是放在那一個目錄?

我手工修改的,和skill获取查看的一样的。这个是什么原因呢,有没有可能是.psm文件有问题?还是.dra文件要通过另一种axl进行保存转换?还是brd文件需要通过axl函数更新什么的。内部机理不是很明白啊。
.dra文件确实是删除了某一层,为什么手动更新place/update symbol 不成功呢?你可以操作一下看看






本帖子中包含更多资源

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

x

点评

有可能*.psm沒更新,  详情 回复 发表于 2016-4-13 11:35

57

主题

1857

帖子

7919

积分

六级会员(60)

Rank: 6Rank: 6

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

有可能*.psm沒更新,


点评

在这一步lFiles = setof(x lAllPathFiles index(x ".psm")),对.psm进行查找,可否对源文件.dra文件进行查找修改,删除所有的.psm文件,然后通过对.dra文件更新保存.psm文件?  详情 回复 发表于 2016-4-13 11:52
我知道在allegro窗口中,打开的.dra文件save命令后,会自动进行.psm更新保存。 那这个在什么地方添加函数进行更新保存呢?  详情 回复 发表于 2016-4-13 11:46

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更新保存。
那这个在什么地方添加函数进行更新保存呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-12-5 03:24 , Processed in 0.076021 second(s), 38 queries , Gzip On.

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

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

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