找回密码
 注册
查看: 489|回复: 16
打印 上一主题 下一主题

发现了小工具,应该是挖洞的打加载上不能用,报错,哪位大佬帮忙看下

[复制链接]
  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2022-4-10 13:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

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

    x
    发现了小工具,应该是挖洞的打加载上不能用,报错,哪位大佬帮忙看下

    clear_RF.zip

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

    点评

    不是挖洞, 是有可能是避銅, 就是挖銅.........  发表于 2022-4-10 21:37

    该用户从未签到

    2#
    发表于 2022-4-11 09:27 | 只看该作者
    搭车同问     
  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
     楼主| 发表于 2022-4-11 09:55 | 只看该作者


    我还以为大佬来了呢⊙▽⊙

    “来自电巢APP”

  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    4#
    发表于 2022-4-11 10:57 | 只看该作者
    下载太贵了。应该分花不完的人才会去下载吧

    点评

    不好意思,如下源码,请求大佬查看 axlCmdRegister("clear_RF" `clear_RF) axlSetAlias( "~R" "clear_RF") defun( clear_RF () clear_RF_form() axlSetFindFilter(?enabled `("NOALL" "CLINES" "  详情 回复 发表于 2022-4-11 11:37
  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
     楼主| 发表于 2022-4-11 11:37 | 只看该作者
    db-_- 发表于 2022-4-11 10:57
    下载太贵了。应该分花不完的人才会去下载吧

    不好意思,如下源码,请求大佬查看
    axlCmdRegister("clear_RF" `clear_RF)
    axlSetAlias( "~R" "clear_RF")

    defun( clear_RF ()
        clear_RF_form()
        axlSetFindFilter(?enabled `("NOALL" "CLINES" "pins" "vias" )        ?onButtons `("CLINES"))
        axlClearSelSet()

        cline_list=nil
        while( axlSelect()
            ls=axlGetSelSet()
            a=car(ls)
            if( a->objType=="path" then
                a=nthelem(2 parseString(a->layer "/"))
            else
                a=nthelem(2 parseString(car(a->startEnd) "/"))
            )
            if( a=="TOP" then
                layer=nthelem(2 layer_list)
                axlFormListSelect(fs "layer_name" layer)        
            else
                if( a=="BOTTOM" then
                    layer=nthelem(length(layer_list)-1 layer_list)
                    axlFormListSelect(fs "layer_name" layer)        
                )
            )
        )
        axlFinishEnterFun()
    )

    defun( clear_RF_form ()
       clear_RF_file="./clesr_RF_file.form"
       p=outfile(clear_RF_file "w")
        if( car(axlDBGetDesignUnits())=="mils" then
            s="mil"
        else
            s="mm"
        )
        if(p != nil then
            fprintf(p "FILE_TYPE=FORM_DEFN VERSION=2\n")
            fprintf(p "FORM\n")
            fprintf(p "FIXED\n")
            fprintf(p "ORT 40 60\n")
            fprintf(p "HEADER \"fanout BBvia\"\n")
            fprintf(p "TILE\n")
            fprintf(p "\n")

            fprintf(p "TEXT \"clear layer\"\n")
            fprintf(p "TLOC 1 1\n")
            fprintf(p "ENDTEXT\n")
            fprintf(p "\n")

            fprintf(p "FIELD layer_name\n")
            fprintf(p "FLOC 9 1\n")
            fprintf(p "LIST \" 12 5\n")
            fprintf(p "ENDFIELD\n")
            fprintf(p "\n")


                fprintf(p "GROUP \"clear space\"\n")
            fprintf(p "GLOC 1 11\n")
            fprintf(p "GSIZE 20 7\n")
            fprintf(p "ENDGROUP\n")
            fprintf(p "\n")
            fprintf(p "FIELD xws\n")
            fprintf(p "FLOC 2 13\n")
            fprintf(p "CHECKLIST \"1\"\n")
            fprintf(p "ENDFIELD\n")
            fprintf(p "\n")
            fprintf(p "FIELD width\n")
            fprintf(p "FLOC 2 15\n")
            fprintf(p "CHECKLIST \"1\"\n")
            fprintf(p "ENDFIELD\n")
            fprintf(p "\n")

            fprintf(p "FIELD xw\n")
            fprintf(p "FLOC 5 13\n")
            fprintf(p "REALFILLIN 6 3\n")
            fprintf(p "ENDFIELD\n")
            fprintf(p "\n")

            fprintf(p "FIELD um\n")
            fprintf(p "FLOC 5 15\n")
            fprintf(p "REALFILLIN 6 6\n")
            fprintf(p "ENDFIELD\n")
            fprintf(p "\n")

            fprintf(p "TEXT \"W\"\n")
            fprintf(p "TLOC 13 13\n")
            fprintf(p "ENDTEXT\n")
            fprintf(p "\n")

            fprintf(p "TEXT \"%s\"\n" s)
            fprintf(p "TLOC 13 15\n")
            fprintf(p "ENDTEXT\n")
            fprintf(p "\n")

            fprintf(p "FIELD add_s\n")
            fprintf(p "FLOC 1 19\n")
            fprintf(p "MENUBUTTON \"add keepout\" 15 3\n")
            fprintf(p "ENDFIELD\n")
            fprintf(p "\n")

            fprintf(p "FIELD add_L\n")
            fprintf(p "FLOC 1 22\n")
            fprintf(p "MENUBUTTON \"add line keepout\" 15 3\n")
            fprintf(p "ENDFIELD\n")
            fprintf(p "\n")

            fprintf(p "ENDTILE\n")
            fprintf(p "ENDFORM\n")
        else
            printf("ERROR,can't create form file!")
    )
        close(p)
        ;axlFormCreate('fs clear_RF_file '("msgLines" 0) 'do_clear_RF nil nil )
        axlMiniStatusLoad( 'fs clear_RF_file  'do_clear_RF t )

       a=axlLayerGet("ETCH/TOP")
        s=""
        layer_list=nil
        while( s!=nil
            s=a->name
            layer_list=append1(layer_list s)
            s=a->nextLayer
            if( s!=nil then
                nextlayer=strcat("ETCH" "/" s)
               a=axlLayerGet(nextlayer)
            )
        )


        layer=nthelem(2 layer_list)
        axlFormListDeleteAll(fs "layer_name")
        axlFormSetField(fs "layer_name" layer_list)
        axlFormListSelect(fs "layer_name" layer)        
        axlFormSetField(fs "xws" t)
        if( boundp('xs)==nil then
            xs="2.0"
            xum="0.6"
        )
        axlFormSetField(fs "xw" xs)
        axlFormSetField(fs "um" xum)
        axlFormDisplay(fs)
       if(isFile( clear_RF_file) then
            deleteFile(clear_RF_file)
        )
    )
    defun( do_clear_RF (fs)
        case( fs->curField
        ("layer_name"
            layer=fs->curValue
        )
        ("xw"
            xs=fs->curValue
        )
        ("um"
            xum=fs->curValue
        )
        ("add_s"
            if( ls!=nil then
                foreach(a ls
                    polydbid = axlPolyFromDB(a, ?layer car(a->startEnd) ?padType 'REGULAR)
                    if( axlFormGetField( fs "xws")=="1" then
                        i=1
                        while( nthelem(i ls)->objType!="path" && i<length(ls)
                            i=i+1
                        )
                        b=nthelem(i ls)
                        if( b->objType=="path" then
                            if( b->isSameWidth==t then
                                s=car(b->segments)->width*atof(xs)
                            else
                                s=0
                                foreach(c b->segments
                                    if( c->width>s then s=c->width)
                                )
                                s=s*atof(xs)
                            )
                        else
                            s=atof(xum)
                            axlFormSetField(fs "width" t)
                        )

                    else
                        s=atof(xum)
                    )
                    exp_poly = (axlPolyExpand polydbid s 'ACU_ARC)
                    axlDBCreateShape(car(exp_poly) t strcat("ROUTE KEEPOUT/" layer))
                    sprintf(xum "%f" s)
                    axlFormSetField(fs "um" xum)
                )
            )
        )
        ("add_L"
            if( length(ls)==2 then
                if( car(ls)->objType="pin" && cadr(ls)->objType=="pin" then
                    s=atof(xum)
                    polydbid = axlPolyFromDB(car(ls), ?layer car(car(ls)->startEnd) ?padType 'REGULAR)
                    exp_poly = (axlPolyExpand polydbid s 'NONE)
                    a=car(exp_poly)->bBox
                    w1=abs(caar(a)-caadr(a))/2
                    h1=abs(cadar(a)-cadadr(a))/2

                    polydbid = axlPolyFromDB(cadr(ls), ?layer car(cadr(ls)->startEnd) ?padType 'REGULAR)
                    exp_poly = (axlPolyExpand polydbid s 'NONE)
                    a=car(exp_poly)->bBox
                    w2=abs(caar(a)-caadr(a))/2
                    h2=abs(cadar(a)-cadadr(a))/2

                    s=atof(xum)
                    a=car(ls)->xy
                    b=cadr(ls)->xy
                    if( abs(car(a)-car(b))>abs(cadr(a)-cadr(b)) then
                        path = axlPathStart( list(car(a):cadr(a)-h1 car(a):cadr(a)+h1 car(b):cadr(b)+h2 car(b):cadr(b)-h2 car(a):cadr(a)-h1 ))
                    else
                        path = axlPathStart( list(car(a)-w1:cadr(a) car(a)+w1:cadr(a) car(b)+w2:cadr(b) car(b)-w2:cadr(b) car(a)-w1:cadr(a)))
                    )
                    axlDBCreateShape(path t strcat("ROUTE KEEPOUT/" layer))
                else
                    print("Select two pins.")
                )
            else
                print("Select two pins.")
            )
        )
        )

    )

  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    6#
    发表于 2022-4-11 11:39 | 只看该作者
    把加载错误的打印放上来吧。

    点评

    报如下错误: Failed to open form ./clesr_RF_file.form. *Error* eval: unbound variable - fs ERROR  详情 回复 发表于 2022-4-11 13:01
  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    7#
     楼主| 发表于 2022-4-11 13:01 | 只看该作者
    db-_- 发表于 2022-4-11 11:39
    把加载错误的打印放上来吧。

    报如下错误:
    Failed to open form ./clesr_RF_file.form.
    *Error* eval: unbound variable - fs
    ERROR

  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    8#
    发表于 2022-4-11 13:51 | 只看该作者
    fprintf(p "; PORT 40 60\n")

    把这一行的封号去掉

    点评

    额,源码中没有这个分号,是在这个帖子上贴码后出现的小表情,不是这的问题,应该是拷下来后转成的分号  详情 回复 发表于 2022-4-11 14:43
  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    9#
     楼主| 发表于 2022-4-11 14:43 | 只看该作者
    db-_- 发表于 2022-4-11 13:51
    fprintf(p "; PORT 40 60\n")

    把这一行的封号去掉

    额,源码中没有这个分号,是在这个帖子上贴码后出现的小表情,不是这的问题,应该是拷下来后转成的分号



  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    10#
    发表于 2022-4-11 16:51 | 只看该作者
    fprintf(p "LIST \" 12 5\n") 改成
    fprintf(p "LIST \"\" 12 5\n")

    fprintf(p "CHECKLIST \"1\"\n") 改成
    fprintf(p "CHECKLIST \" \" \"1\"\n")
    这个有两处。
  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    11#
     楼主| 发表于 2022-4-11 20:24 | 只看该作者
    db-_- 发表于 2022-04-11 16:51:43
    fprintf(p "LIST \" 12 5\n") 改成
    fprintf(p "LIST \"\" 12 5\n")

    fprintf(p "CHECKLIST \"1\"\n") 改成
    fprintf(p "CHECKLIST \" \" \"1\"\n")
    这个有两处。


    可以了,非常感谢!^O^

    “来自电巢APP”

    该用户从未签到

    12#
    发表于 2022-5-2 13:13 | 只看该作者
    不错,我用了,特来致谢,不过add line keepout 那个好像没啥屁用啊,我把界面删掉了
  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    13#
     楼主| 发表于 2022-5-2 16:13 | 只看该作者
    zgtsang 发表于 2022-05-02 13:13:55
    不错,我用了,特来致谢,不过add line keepout 那个好像没啥屁用啊,我把界面删掉了


    那个可以两个PIN合并挖空,不过是取得pin中心为边缘,还需要挖两边的pin,然后合并

    “来自电巢APP”

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-5-29 18:45 , Processed in 0.109375 second(s), 34 queries , Gzip On.

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

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

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