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

有人能帮我合并一下在PCB上直接增加REF 的代码吗?附件为原代码?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-23 09:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
大家好
有人能帮我合并一下在PCB上直接增加REF 的代码吗?附件为原代码, 我对skill 不是很专业,合并了很多次,都是不成功,求大神帮改一下。

功能目的;  在PCB上直接增加REF(因为PCB 从别的软件上转过来,定义的层不一样,所以没有REF)
运行SKILL 先亮亮没有REF 的器件,然后对没有REF 的器件直接在PCB上增加ERF

在PCB 上高亮无REF 的器件代码:

axlCmdRegister( "Check_No_Refdes" 'Check_No_Refdes)
defun( Check_No_Refdes ()
  axlVisibleDesign(nil)
  axlVisibleLayer( "BOARD GEOMETRY/OUTLINE" t )
axlVisibleLayer( "PIN/TOP" t )
axlVisibleLayer( "PIN/BOTTOM" t )
axlVisibleLayer( "REF DES/SILKSCREEN_TOP" t )
axlVisibleLayer( "REF DES/SILKSCREEN_BOTTOM" t )
axlVisibleLayer( "PACKAGE GEOMETRY/SILKSCREEN_TOP" t )
axlVisibleLayer( "PACKAGE GEOMETRY/SILKSCREEN_BOTTOM" t )
logfile = axlDMOpenLog("no_refdes.log")
fprintf(logfile "#Check the component without refdes . \n\n")
fprintf(logfile "REF_DES  COORDIRATION\n")
setq(allsym axlDBGetDesign()->symbols)
axlDehighlightObject(allsym)
noref = nil
norefcnt = 0
foreach(symbol allsym
  text= axlDBGetAttachedText(symbol)
  txt = nil
  foreach(find text
   if(find->layer == "REF DES/SILKSCREEN_TOP" ||
   find->layer == "REF DES/SILKSCREEN_BOTTOM" then         
    txt = find   
   )        
  )
  if(txt == nil && symbol->refdes != nil then
   axlHighlightObject(symbol)
   fprintf(logfile "%-8s %L\n" symbol->refdes symbol->xy)
   ;noref = cons(symbol->refdes noref)
   ++norefcnt
  )
);foreach-end
fprintf(logfile "\nTotal of no refdes: %d\n" norefcnt)
axlDMClose(logfile)

axlMsgPut("Total component without refdes: %d\n" norefcnt)
axlMsgPut("Components without refdes , please view logfile.")        
);defun_end

在PCB 上增加REF 的代码:
if(car(n0->violations)->isMirrored then
layer = "BOTTOM"
else
layer = "TOP"
)
textstru = make_axlTextOrientation(?textBlock 1 ?mirrored car(n0->violations)->isMirrored ?justify "center")
tt = setof(x0 axlDBGetAttachedText(car(n0->violations)) rexMatchp("REF DES/SILKSCREEN_+" x0->layer))
unless(tt
axlDBCreateText(car(n0->violations)->refdes car(n0->violations)->xy textstru strcat("REF DES/SILKSCREEN_" layer) car(n0->violations))
)
tt = setof(x0 axlDBGetAttachedText(car(n0->violations)) rexMatchp("REF DES/ASSEMBLY_+" x0->layer))
unless(tt
axlDBCreateText(car(n0->violations)->refdes car(n0->violations)->xy textstru strcat("REF DES/ASSEMBLY_" layer) car(n0->violations))
)

谢谢 大家帮我合并一下。


  • TA的每日心情
    开心
    2025-5-26 15:52
  • 签到天数: 97 天

    [LV.6]常住居民II

    2#
    发表于 2020-3-25 09:19 | 只看该作者
    我尽量保持你的原码风格
    ;############################################################
    ;Description
    roject name:AddRef
    ;Version: 1.0
    ;Release date:2020.03.25
    ;Designer: Ken Wang
    ;Mail: 6771877@qq.com
    ;
    ;----------------------------------------
    ;Version record:
    ;
    ;V1.0
    ;Original version
    ;----------------------------------------
    ;EndDes
    ;############################################################


    ;############################################################
    ;Command
    axlCmdRegister( "spm add ref" 'SPM_AddRef)
    ;EndCom
    ;############################################################


    ;############################################################
    (defun SPM_AddRef ()
    "Add ref"

    ;**************************************************
    ;Declare and initialize local variables
    let((norefcnt noref txt)
    ;**************************************************

    ;==================================================
    axlVisibleDesign(nil)
    axlVisibleLayer( "BOARD GEOMETRY/OUTLINE" t )
    axlVisibleLayer( "IN/TOP" t )
    axlVisibleLayer( "IN/BOTTOM" t )
    axlVisibleLayer( "REF DES/SILKSCREEN_TOP" t )
    axlVisibleLayer( "REF DES/SILKSCREEN_BOTTOM" t )
    axlVisibleLayer( "PACKAGE GEOMETRY/SILKSCREEN_TOP" t )
    axlVisibleLayer( "PACKAGE GEOMETRY/SILKSCREEN_BOTTOM" t )
    logfile = axlDMOpenLog("no_refdes.log")
    fprintf(logfile "#Check the component without refdes . \n\n")
    fprintf(logfile "REF_DES  COORDIRATION\n")
    setq(allsym axlDBGetDesign()->symbols)
    axlDehighlightObject(allsym)
    noref = nil
    norefcnt = 0

    foreach(symbol allsym
            textstru = make_axlTextOrientation(?textBlock 1 ?mirrored symbol->isMirrored ?justify "center")
            text= axlDBGetAttachedText(symbol)
            txt = nil
            foreach(find text
                    if(find->layer == "REF DES/SILKSCREEN_TOP" || find->layer == "REF DES/SILKSCREEN_BOTTOM" then         
                            txt = find   
                    )      
            )
           
            if(symbol->isMirrored then
                    layer = "BOTTOM"
            else
                    layer = "TOP"
            )
            if(txt == nil && symbol->refdes != nil then
                    axlHighlightObject(symbol)
                    axlDBCreateText(symbol->refdes symbol->xy textstru strcat("REF DES/SILKSCREEN_" layer) symbol)
                    fprintf(logfile "%-8s %L\n" symbol->refdes symbol->xy)
                    ;noref = cons(symbol->refdes noref)
                    ++norefcnt
            )
    );foreach-end
    fprintf(logfile "\nTotal of no refdes: %d\n" norefcnt)
    axlDMClose(logfile)

    axlMsgPut("Total component without refdes: %d\n" norefcnt)
    axlMsgPut("Components without refdes , please view logfile.")        
    ;==================================================
    );end let
    );EndDef SPM_AddRef
    ;############################################################
  • TA的每日心情
    开心
    2025-5-26 15:52
  • 签到天数: 97 天

    [LV.6]常住居民II

    3#
    发表于 2020-3-25 09:21 | 只看该作者
    直接加载即可

    SPMAddref.zip

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

    点评

    可以加你好友一下吗  详情 回复 发表于 2020-3-31 09:19

    该用户从未签到

    4#
     楼主| 发表于 2020-3-31 09:19 | 只看该作者

    可以加你好友一下吗
  • TA的每日心情
    开心
    2025-5-26 15:52
  • 签到天数: 97 天

    [LV.6]常住居民II

    5#
    发表于 2020-3-31 15:46 | 只看该作者
    好的,平时我只是偶尔上上网
  • TA的每日心情
    开心
    2025-5-26 15:52
  • 签到天数: 97 天

    [LV.6]常住居民II

    6#
    发表于 2020-4-14 15:17 | 只看该作者
    Password:Ken
    难得今天有一点,你自己修改的判断 txt = find  部分,逻辑有错,我做了一个最简单的FORM,供选择,比你使用的YES or NO 选择方便些,原代码我发你邮箱好了

    SPM_AddRef.zip

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

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-19 16:39 , Processed in 0.109375 second(s), 31 queries , Gzip On.

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

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

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