找回密码
 注册
关于网站域名变更的通知
查看: 1790|回复: 15
打印 上一主题 下一主题

高手帮忙写个简单的Skill,或者教下我也行,谢谢啦!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2015-1-21 17:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10金币
  大神你好,我需要将allegro里的位号第一个数字前加一个字符(如R123,FB123 修改后:R-123,FB-123),其它字符都不变,然后可以反标到原理图,不知道是否能实现,在这先谢谢啦! 如果可以愿意出RMB。

最佳答案

查看完整内容

临时写了一个,请下载附件中的Skill使用,执行命令为EDA365_APP001,另外Rename的同时会在当前目录下生成一个file.swp文件,用于在OrCAD中进行反标,PS:OrCAD下未测试。欢迎反馈意见。 代码如下:

该用户从未签到

2#
发表于 2015-1-21 17:03 | 只看该作者
临时写了一个,请下载附件中的Skill使用,执行命令为EDA365_APP001,另外Rename的同时会在当前目录下生成一个file.swp文件,用于在OrCAD中进行反标,PS:OrCAD下未测试。欢迎反馈意见。
代码如下:
  1. ;*********************************************************************
  2. ;Function:                                EDA365_APP001
  3. ;Description:                            Rename Refdes
  4. ;Company:                              EDA365.COM
  5. ;E-Mail:                                     myeda@qq.com
  6. ;Release Date :                         2015-01-22
  7. ;*********************************************************************
  8. axlCmdRegister( "EDA365_APP001" 'EDA365_APP001 ?cmdType "interactive");general/interactive
  9. defun( EDA365_APP001 ()
  10. prog(()
  11.         sFile = "./File.swp"
  12.         pFile = axlDMOpenFile("TEMP" sFile "w")
  13.         rexCompile("\\([a-zA-Z]+\\)\\([0-9]+\\)")
  14.         fprintf(pFile ".Section1 GateAndPinSwap\n")
  15.         foreach(dbComp axlDBGetDesign()->components
  16.                 sRefDes = dbComp->name
  17.                 when(rexExecute(sRefDes) && (sNewRefDes = rexSubstitute("\\1-\\2")) && axlRenameRefdes(sRefDes sNewRefDes)
  18.                         fprintf(pFile "CHANGEREF %s %s\n" sRefDes sNewRefDes)
  19.                 )
  20.         )
  21.         fprintf(pFile ".End\n")
  22.         axlDMClose(pFile)
  23.         axlUIWExpose(axlUIViewFileCreate(sFile "Swap File" nil list(56 32)))
  24. )
  25. )
复制代码


EDA365_APP001.zip

641 Bytes, 阅读权限: 9, 下载次数: 4, 下载积分: 贡献 -30 , 威望 -10

点评

有个问题想请教一下版主大人,我写了一个修改位号的程序,分别在板A和B中使用,A和B是相同的,只是在不同的时间修改了原理图后导出的不同版本,几乎没什么区别,但是程序的运行时间相差巨大。基本上A板每秒可以修改  详情 回复 发表于 2015-8-22 12:00

评分

参与人数 1威望 +2 收起 理由
yangmingen + 2 很给力!

查看全部评分

该用户从未签到

3#
发表于 2015-1-21 17:15 | 只看该作者
用正则表达式分离出字符和数字,然后再加上你需要的字符就可以了

该用户从未签到

4#
 楼主| 发表于 2015-1-21 19:12 | 只看该作者

RE: 高手帮忙写个简单的Skill,或者教下我也行,谢谢啦!

hoo 发表于 2015-1-21 17:15
用正则表达式分离出字符和数字,然后再加上你需要的字符就可以了

你好,还是不会,能帮我写下吗?谢谢啦

该用户从未签到

5#
发表于 2015-1-22 09:42 | 只看该作者
本帖最后由 hoo 于 2015-1-22 09:45 编辑

关键函数:rexCompile rexExecute rexSubstitute,会一点编程,有了关键的思路和函数,多试一试肯定可以的。

评分

参与人数 1威望 +2 收起 理由
yangmingen + 2 支持!

查看全部评分

该用户从未签到

6#
发表于 2015-1-22 14:01 | 只看该作者
之前看过附件里的修改位号的办法,还是蛮好用的,至于批量修改,你可以先用excel实现替换,最后按照pdf的步骤去实现。至于skill么我也不会写~~
有人写了的话求分享

修改PCB上丝印位号的方法.pdf

598.83 KB, 下载次数: 19, 下载积分: 贡献 -30 , 威望 -10

该用户从未签到

7#
 楼主| 发表于 2015-1-22 14:27 | 只看该作者
hoo 发表于 2015-1-22 09:42
关键函数:rexCompile rexExecute rexSubstitute,会一点编程,有了关键的思路和函数,多试一试肯定可以的 ...

谢谢啦,还是比较难实现的
  • TA的每日心情
    开心
    2023-12-4 15:58
  • 签到天数: 1 天

    [LV.1]初来乍到

    8#
    发表于 2015-1-22 15:56 | 只看该作者
    不需要和原理图中的位号保持一致么?
  • TA的每日心情
    开心
    2023-12-4 15:58
  • 签到天数: 1 天

    [LV.1]初来乍到

    9#
    发表于 2015-1-22 15:57 | 只看该作者
    以后不方便检查啊,如果这是必须的操作的话,直接在原理图里面处理好不就行了么?
    再说了,如果添加了这么一个符号,那么在调整丝印的时候,这个不是特别必要的字符就会额外占用一个字节,增加长度,反而会增加调整丝印的难度。

    该用户从未签到

    10#
     楼主| 发表于 2015-1-22 16:51 | 只看该作者
    霹雳风雷 发表于 2015-1-22 15:57
    以后不方便检查啊,如果这是必须的操作的话,直接在原理图里面处理好不就行了么?
    再说了,如果添加了这么 ...

    对我来说是有帮助的,加好后需要反标到原理图里去。

    该用户从未签到

    11#
     楼主| 发表于 2015-1-23 17:57 | 只看该作者
    deargds 发表于 2015-1-21 17:03
    临时写了一个,请下载附件中的Skill使用,执行命令为EDA365_APP001,另外Rename的同时会在当前目录下生成一 ...

    版主,非常感谢,太好用啦 !   牛!!!

    该用户从未签到

    12#
    发表于 2015-1-27 21:43 | 只看该作者
    怎样反标到原理图中去呢,求指导?

    点评

    通过OrCAD中的Back annotate来进行反标  详情 回复 发表于 2015-1-28 13:00

    该用户从未签到

    13#
    发表于 2015-1-28 13:00 | 只看该作者
    墨客的秋天 发表于 2015-1-27 21:43
    怎样反标到原理图中去呢,求指导?

    通过OrCAD中的Back annotate来进行反标

    该用户从未签到

    14#
    发表于 2015-8-20 15:21 | 只看该作者
    好东西!谢谢分享!

    该用户从未签到

    15#
    发表于 2015-8-22 12:00 | 只看该作者
    本帖最后由 scc_yangy 于 2015-8-22 12:05 编辑
    deargds 发表于 2015-1-21 17:03
    临时写了一个,请下载附件中的Skill使用,执行命令为EDA365_APP001,另外Rename的同时会在当前目录下生成一 ...

    有个问题想请教一下版主大人,我写了一个修改位号的程序,分别在板A和B中使用,A和B是相同的,只是在不同的时间修改了原理图后导出的不同版本,几乎没什么区别,但是程序的运行时间相差巨大。基本上A板每秒可以修改几十上百个器件,而B板只能修改几个;如果把B板中的器件完全删除,再运行这个程序,运行时间就会很快,或者把B板中所有器件的位号重排以后换个前缀再重排一次,运行也很快。始终想不明白为什么会出现这种情况,请版主指点一下,非常感谢。下面附上程序代码:
    1. axlCmdRegister("test",'RenameRef ?cmdType "general")
    2. (defun RenameRef ()
    3. (prog () allComp = axlDBGetDesign()->components
    4.             n_comp = length(allComp)
    5.             i = 1
    6.             foreach( comp allComp
    7.                         refdes = sprintf(nil "SYM%d" i)
    8.                         axlRenameRefdes( comp refdes)
    9.                         axlUIWPrint(nil "%d / %d complete..." i n_comp)
    10.                         i++                                 
    11.             );foreach                 
    12. );prog
    13. );defun
    复制代码




    点评

    这个可能需要A B板的文件来做调试分析  详情 回复 发表于 2015-8-22 13:50
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-21 22:02 , Processed in 0.093750 second(s), 35 queries , Gzip On.

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

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

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