找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 310|回复: 2
打印 上一主题 下一主题

论坛下载的SKILL包的问题:为何更改了text设置值没有起作用?如何增加自定义功能?

[复制链接]

604

主题

2859

帖子

1万

积分

EDA365版主(50)

Rank: 5

积分
13638
跳转到指定楼层
1#
发表于 2015-8-4 20:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

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

x
使用的是论坛下载的skill打包中的quick_textset.il文件
尝试修改里面的数值貌似没有起作用

axlCmdRegister("quick_textset" 'quicktext)


;get the old layer display,for recover


defun( quicktext ()
let( (curdsnunit)
                  curdsnunit = axlGetParam("paramDesign")->units
                   case(curdsnunit
                ("mils"  du = 1)
                    ("millimeters" du = 0.0254 )
                        ;(u can add other units)
                      )


old_visList = axlVisibleGet()

setTextSize()
axlVisibleSet(old_visList)
))


;load("quick_textset.il")

defun( setTextSize ()
      let(()
          ;1,GET 字体
          Text_need = '("1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15"

"16")
          
          foreach(text_block Text_need
                    p = axlGetParam(strcat("paramTextBlock:" text_block))
                    block_pl = atoi(text_block) ;change string to num   (1.0/du)
                    p->width = (15 + 5*block_pl)*(1.0/du)
                     p->height = (20 + 5*block_pl)*(1.0/du)
                     p->lineSpace = 25*(1.0/du)
                    p->photoWidth = 4*(1.0/du)
                    p->charSpace = 5*(1.0/du)
                    axlSetParam(p)       
                    )
          ;set the textblock size
          


          
          axlVisibleDesign(nil)
          axlVisibleLayer("REF DES/SILKSCREEN_TOP" t)
          axlVisibleLayer("REF DES/SILKSCREEN_BOTTOM" t)
          ;if u need other text ,please add below:
          ;axlVisibleLayer("REF DES/assembly_TOP" t)
          
          
          axlClearSelSet()
          axlSetFindFilter( ?enabled (list "noall" "text" "clinesegs") , ?onButtons (list

"text"))
          allrefs = axlGetSelSet(axlAddSelectAll())
          foreach(i allrefs   
                  axlDBChangeText(i nil 2)为何我更改这里的数值,没有按照设置的值进行变化?例如我更改为4,为何变更的不是第4号字体?
                  )
          ;change the resdes
          
          axlVisibleDesign(nil)
          axlVisibleLayer("PACKAGE GEOMETRY/SILKSCREEN_TOP" t)
          ; axlVisibleLayer("BOARD GEOMETRY/SILKSCREEN_TOP" t)
          axlVisibleLayer("PACKAGE GEOMETRY/SILKSCREEN_BOTTOM" t)
          ; axlVisibleLayer("BOARD GEOMETRY/SILKSCREEN_BOTTOM" t)
          axlClearSelSet()
          axlSetFindFilter( ?enabled (list "noall" "text" "clinesegs") , ?onButtons (list

"text"))
          alloth_text = axlGetSelSet(axlAddSelectAll())
          foreach(i alloth_text
          axlDBChangeText(i nil 1))
          ;change all other text
          ))


如果实现如下的效果:
[1]新建的文件,通过skill自动按照预设的字体格式设置,并且增加上name说明(name里面增加一些字体格式说明,方便在实际选择的时候灵活应用,总比记数字选择方便);同时能以窗口方便点选的方式进行修改需要变化的字符大小;能通过划选统一修改字符大小(划选的时候可以分别选择位号或者value)
[2]能将元件value自动归中




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏1 支持!支持! 反对!反对!

604

主题

2859

帖子

1万

积分

EDA365版主(50)

Rank: 5

积分
13638
2#
 楼主| 发表于 2015-8-4 21:05 | 只看该作者
下面是quick_display的源代码;我希望增加这样的效果:
[1] 顶层丝印+顶层布线/ 底层丝印+底层布线/顶层丝印+顶层布线(隐藏铜皮)/ 底层丝印+底层布线(隐藏铜皮)/顶层丝印+顶层布线+底层丝印+底层布线
[2]希望隐藏铜皮的选择可以是一种勾选项,方便切换
[3]希望同时显示丝印与走线时一种勾选项目,方便切换

这样的效果如何在下面的代码基础上进行修改呢?


axlCmdRegister( "quick_display" `Quick_Display)
axlCmdRegister( "Quick_Displaymini" `Quick_Displaymini)

axlSetFunckey("ssq" "quick_display")
axlSetFunckey("sq" "quick_displaymini")

/* ---------------------------------
define all the layers
--------------------------------- */


defun( crlistneed ()
      let((fixlayerfirst etchlayerlistneed)
fixlayerfirst = list(
                          list("TOP_SILK" "VIA CLASS/TOP" "PIN/TOP" "PACKAGE GEOMETRY/SILKSCREEN_TOP"
                           "BOARD GEOMETRY/SILKSCREEN_TOP" "REF DES/SILKSCREEN_TOP" "BOARD GEOMETRY/OUTLINE")
                                          
                      list("BOTTOM_SILK" "VIA CLASS/BOTTOM" "PIN/BOTTOM" "PACKAGE GEOMETRY/SILKSCREEN_BOTTOM"
                                           "BOARD GEOMETRY/SILKSCREEN_BOTTOM" "REF DES/SILKSCREEN_BOTTOM" "BOARD GEOMETRY/OUTLINE")

                      list("TOP_PLACE" "PIN/TOP" "VIA CLASS/TOP" "PACKAGE GEOMETRY/SILKSCREEN_TOP" "PACKAGE GEOMETRY/PLACE_BOUND_TOP"
                       "PACKAGE KEEPIN/ALL" "PACKAGE KEEPOUT/ALL" "PACKAGE KEEPOUT/TOP" "BOARD GEOMETRY/OUTLINE")
                                          
                      list("BOTTOM_PLACE" "PIN/BOTTOM" "VIA CLASS/BOTTOM" "PACKAGE GEOMETRY/SILKSCREEN_BOTTOM" "PACKAGE GEOMETRY/PLACE_BOUND_BOTTOM"
                                           "PACKAGE KEEPIN/ALL" "PACKAGE KEEPOUT/ALL" "PACKAGE KEEPOUT/BOTTOM" "BOARD GEOMETRY/OUTLINE")
                                          
                      list("ALL_PLACE" "PIN/TOP" "VIA CLASS/TOP" "PACKAGE GEOMETRY/SILKSCREEN_TOP" "PACKAGE GEOMETRY/PLACE_BOUND_TOP"
                       "PACKAGE KEEPIN/ALL" "PACKAGE KEEPOUT/ALL" "PACKAGE KEEPOUT/TOP" "BOARD GEOMETRY/OUTLINE"
                                           "PIN/BOTTOM" "VIA CLASS/BOTTOM" "PACKAGE GEOMETRY/SILKSCREEN_BOTTOM" "PACKAGE GEOMETRY/PLACE_BOUND_BOTTOM" "PACKAGE KEEPOUT/BOTTOM")                          
                                          
                      list("ALL_VIEW" "PACKAGE GEOMETRY/SILKSCREEN_TOP" "PACKAGE GEOMETRY/SILKSCREEN_BOTTOM" "PACKAGE GEOMETRY/PLACE_BOUND_BOTTOM"  
                                          "PACKAGE GEOMETRY/PLACE_BOUND_TOP" "REF DES/SILKSCREEN_TOP" "BOARD GEOMETRY/SILKSCREEN_TOP" "BOARD GEOMETRY/SILKSCREEN_BOTTOM" "REF DES/SILKSCREEN_BOTTOM"
                                          "ETCH/TOP" "VIA CLASS/TOP" "ETCH/BOTTOM" "VIA CLASS/BOTTOM" "ROUTE KEEPIN/ALL" "ROUTE KEEPOUT/ALL" "ROUTE KEEPOUT/TOP" "ROUTE KEEPOUT/BOTTOM" "PIN/TOP"
                                          "PIN/TOP" "PIN/BOTTOM" "BOARD GEOMETRY/OUTLINE"
                                           )       
                      list("TB_LAYOUT" "ETCH/TOP" "VIA CLASS/TOP" "PACKAGE GEOMETRY/SILKSCREEN_TOP" "ETCH/BOTTOM" "VIA CLASS/BOTTOM" "PACKAGE GEOMETRY/SILKSCREEN_BOTTOM"
                                          "ROUTE KEEPIN/ALL" "ROUTE KEEPOUT/ALL" "ROUTE KEEPOUT/TOP" "ROUTE KEEPOUT/BOTTOM" "PIN/TOP" "PIN/BOTTOM" "BOARD GEOMETRY/OUTLINE"
                                           )                                                                       
                                           )                                          
                etchlayerlist = axlGetParam("paramLayerGroup:ETCH")->groupMembers
                etchlayerlistneed = list()
                foreach(onel etchlayerlist
                                curetchlayer = list(list(strcat(onel "_LAYOUT") strcat("ETCH/" onel) strcat("VIA CLASS/" onel) strcat("ROUTE KEEPOUT/" onel) strcat("PIN/" onel)
                                strcat("Drc Error Class/" onel) strcat("PACKAGE GEOMETRY/SILKSCREEN_" onel) "BOARD GEOMETRY/OUTLINE" "ROUTE KEEPIN/ALL" "ROUTE KEEPOUT/ALL"))
                                                          
                            etchlayerlistneed = append(etchlayerlistneed curetchlayer)
                                )
                aaa = append(fixlayerfirst etchlayerlistneed)
        ))
       
        ; load("quick_display.il")
       
/* ---------------------------------
define other layers
--------------------------------- */
defun( onofflistneed ()
      let((fixlayerfirst1 AllEtchlist AllDRClist AllAntlist Etchlist)       
          fixlayerfirst1 = list(
                     '("SilkT" "BOARD GEOMETRY/SILKSCREEN_TOP" "PACKAGE GEOMETRY/SILKSCREEN_TOP" "REF DES/SILKSCREEN_TOP")
                                 '("SilkB" "BOARD GEOMETRY/SILKSCREEN_BOTTOM" "PACKAGE GEOMETRY/SILKSCREEN_BOTTOM" "REF DES/SILKSCREEN_BOTTOM")
                                 '("PlacT" "PACKAGE GEOMETRY/PLACE_BOUND_TOP")
                                 '("PlacB" "PACKAGE GEOMETRY/PLACE_BOUND_BOTTOM")
                                 ; AllAntlist
                                 ; AllDRClist
                                 ; AllEtchlist
                                 )
               
        AllEtchlist = list("AllEtch")
        AllDRClist = list("AllDrc" "Drc Error Class/ALL" "Drc Error Class/PASTEMASK_BOTTOM" "Drc Error Class/PASTEMASK_TOP" "Drc Error Class/WIRE" "Drc Error Class/SOLDERMASK_BOTTOM"
                           "Drc Error Class/SOLDERMASK_TOP" "Drc Error Class/PACKAGE_BOTTOM" "Drc Error Class/PACKAGE_TOP")                  
                AllAntlist = list("Allant" "ANTI ETCH/ALL")
               
                Etchlist = list()
               
                foreach(onel etchlayerlist
                        curEtchl =  list(strcat("ETCH/" onel) strcat("PIN/" onel) strcat("VIA CLASS/" onel))
                                AllEtchlist = append(AllEtchlist curEtchl)
                        )                               
                foreach(onel etchlayerlist
                        curDrcl =  strcat("Drc Error Class/" onel)
                                AllDRClist = append1(AllDRClist curDrcl)
                        )
                foreach(onel etchlayerlist
                        curAntl =  strcat("ANTI ETCH/" onel)
                                AllAntlist = append1(AllAntlist curAntl)
                        )
                               
                foreach(onel etchlayerlist
                           curetchlayer = list(list(onel strcat("ETCH/" onel) strcat("VIA CLASS/" onel)  strcat("PIN/" onel) strcat("ANTI ETCH/" onel)))
                                Etchlist = append(Etchlist curetchlayer)
                                )                               
                          onoffalllist = append(append(append(append(fixlayerfirst1 list(AllAntlist)) list(AllDRClist)) list(AllEtchlist)) Etchlist)
          ))

       
       
       
/* ---------------------------------
Create the main function
--------------------------------- */

defun(Quick_Display ()
          Quick_Displayform()
          
          )


defun(Quick_Displaymini ()
          Quick_Displayformmini()
          
          )          
          
defun(Quick_Displayformmini ()
disetchlayerlist = crlistneed()
        DisplayFormfile = "artformcreat.form"
                formport = outfile(DisplayFormfile "w")
                fprintf(formport "FILE_TYPE=FORM_DEFN VERSION=2\n")
        fprintf(formport "FORM\n")
        fprintf(formport "FIXED\n")
        fprintf(formport "PORT 20 6\n")
        fprintf(formport "HEADER \"Quick Display - kevin\"\n")
        fprintf(formport "TILE\n")          
               
                fprintf(formport "\n")
                fprintf(formport "TEXT \"Please Choose The\"\n")
                fprintf(formport "TLOC 3 1\n")
                fprintf(formport "ENDTEXT\n")
               
                fprintf(formport "\n")
                fprintf(formport "TEXT \"Layers Below:\"\n")   
                fprintf(formport "TLOC 3 2\n")
                fprintf(formport "ENDTEXT\n")
               
        a = 4
                foreach(curlayerlist disetchlayerlist  
                        cur_checklist = car(curlayerlist)
        fprintf(formport "FIELD %L\n" cur_checklist)
        fprintf(formport "FLOC 3 %d\n" a)
        fprintf(formport "FGROUP \"displayl\"\n")
        fprintf(formport "CHECKLIST %L\"displayl\"\n" cur_checklist)
        fprintf(formport "ENDFIELD\n")
                a = a+2
                       )

                          
                fprintf(formport "ENDTILE\n")
        fprintf(formport "ENDFORM\n")
        close(formport)
                displayform = axlFormCreate((gensym) DisplayFormfile '(se inner) 'Display_currentmini t)
                axlFormDisplay(displayform)
                axlUIWPrint(displayform "Kevin Wong")
                deleteFile("artformcreat.form")
)
          

defun( Display_currentmini (displayform)
      let(()
disetchlayerlist = crlistneed()
        if(displayform->curField
        then
        axlUIWPrint(displayform "Kevin Wong")
                foreach(onec disetchlayerlist
                       if(displayform->curField == car(onec)
                            ; axlUIWPrint(displayform car(onec))                           
                       Display_currentls(displayform->curField)
                          
                         )
                       )
          )
     ))
          
          


defun(Quick_Displayform ()
disetchlayerlist = crlistneed()
onofflistneed()
        DisplayFormfile = "artformcreat.form"
                formport = outfile(DisplayFormfile "w")
                fprintf(formport "FILE_TYPE=FORM_DEFN VERSION=2\n")
        fprintf(formport "FORM\n")
        fprintf(formport "FIXED\n")
        fprintf(formport "PORT 40 6\n")
        fprintf(formport "HEADER \"Quick Display\"\n")
        fprintf(formport "TILE\n")          
               
                fprintf(formport "\n")
                fprintf(formport "TEXT \"Please Choose The\"\n")
                fprintf(formport "TLOC 3 1\n")
                fprintf(formport "ENDTEXT\n")
               
                fprintf(formport "\n")
                fprintf(formport "TEXT \"Layers Below:\"\n")   
                fprintf(formport "TLOC 3 2\n")
                fprintf(formport "ENDTEXT\n")
               
        a = 4
                foreach(curlayerlist disetchlayerlist  
                        cur_checklist = car(curlayerlist)
        fprintf(formport "FIELD %L\n" cur_checklist)
        fprintf(formport "FLOC 3 %d\n" a)
        fprintf(formport "FGROUP \"displayl\"\n")
        fprintf(formport "CHECKLIST %L\"displayl\"\n" cur_checklist)
        fprintf(formport "ENDFIELD\n")
                a = a+2
                       )
            ;buttons       
                fprintf(formport "\n")
                fprintf(formport "TEXT \"You can on/off the\"\n")
                fprintf(formport "TLOC 22 1\n")
                fprintf(formport "ENDTEXT\n")
               
                fprintf(formport "\n")
                fprintf(formport "TEXT \"layers below\"\n")
                fprintf(formport "TLOC 22 2\n")
                fprintf(formport "ENDTEXT\n")               
               
        fprintf(formport "FIELD SilkT\n")
        fprintf(formport "FLOC 22 4\n")
        fprintf(formport "MENUBUTTON \"SilkTop_On/Off\" 15 2\n")
        fprintf(formport "ENDFIELD \n\n")
                          
        fprintf(formport "FIELD SilkB\n")
        fprintf(formport "FLOC 22 6\n")
        fprintf(formport "MENUBUTTON \"SilkBot_On/Off\" 15 2\n")
        fprintf(formport "ENDFIELD \n\n")

        fprintf(formport "FIELD PlacT\n")
        fprintf(formport "FLOC 22 8\n")
        fprintf(formport "MENUBUTTON \"PlacTop_On/Off\" 15 2\n")
        fprintf(formport "ENDFIELD \n\n")
                          
        fprintf(formport "FIELD PlacB\n")
        fprintf(formport "FLOC 22 10\n")
        fprintf(formport "MENUBUTTON \"PlacBot_On/Off\" 15 2\n")
        fprintf(formport "ENDFIELD \n\n")               

        fprintf(formport "FIELD Allant\n")
        fprintf(formport "FLOC 22 12\n")
        fprintf(formport "MENUBUTTON \"AllAnt_On/Off\" 15 2\n")
        fprintf(formport "ENDFIELD \n\n")
                          
        fprintf(formport "FIELD AllDrc\n")
        fprintf(formport "FLOC 22 14\n")
        fprintf(formport "MENUBUTTON \"AllDRC_On/Off\" 15 2\n")
        fprintf(formport "ENDFIELD \n\n")                                          
                          
        fprintf(formport "FIELD AllEtch\n")
        fprintf(formport "FLOC 22 16\n")
        fprintf(formport "MENUBUTTON \"AllEtch_On/Off\" 15 2\n")
        fprintf(formport "ENDFIELD \n\n")                                          
                          
            b = 18
                foreach(curlayer etchlayerlist
                         curbtn = strcat(curlayer "_On/Off")
        fprintf(formport "FIELD %s\n" curlayer)  ;top
        fprintf(formport "FLOC 22 %d\n" b)
        fprintf(formport "MENUBUTTON \"%s\" 15 2\n" curbtn)               
        fprintf(formport "ENDFIELD\n\n")
                b = b+2
                       )

                        ; printf("FIELD %s\n" cur_checklist)
                        ; printf("FIELD %s\n" curlayer)

                          
                fprintf(formport "ENDTILE\n")
        fprintf(formport "ENDFORM\n")
        close(formport)
               
                displayform = axlFormCreate((gensym) DisplayFormfile '("NE" "Outer" "Canvas" "NoBorder" "msglines" 1) 'Display_current t)
                axlFormDisplay(displayform)
                axlUIWPrint(displayform "Kevin Wong")
                deleteFile("artformcreat.form")
)

/* ---------------------------------
Display_current layer
--------------------------------- */

; load("quick_dis.il")


defun( Display_current (displayform)
      let(()  
    disetchlayerlist = crlistneed()

       
       
        if( or((car(reverse(parseString(displayform->curField "_"))) == "LAYOUT") (car(reverse(parseString(displayform->curField "_"))) == "SILK")
        (car(reverse(parseString(displayform->curField "_"))) == "PLACE") (car(reverse(parseString(displayform->curField "_"))) == "VIEW"))
       
           then
           if(displayform->curField
       then
           axlUIWPrint(displayform "Kevin Wong")
                foreach(onec disetchlayerlist
                       if(displayform->curField == car(onec)                  
                            ; axlUIWPrint(displayform car(onec))
                           then
                   ; axlDBDisplayControl('filledPadsEnable nil)
                   ; axlDBDisplayControl('endcapsEnable t)                          
                       Display_currentls(displayform->curField)          
           )))
           else
           if(displayform->curField
       then
           axlUIWPrint(displayform "Kevin Wong")
                foreach(onec onoffalllist
                       if(displayform->curField == car(onec)
                            ; axlUIWPrint(displayform car(onec))
                           then
                       OporCllayer(cdr(onec))
                   ; axlDBDisplayControl('filledPadsEnable nil)
                   ; axlDBDisplayControl('endcapsEnable t)                          
                           ; axlUIWRedraw(nil)       
                           axlVisibleUpdate(t)
                          
                          
                           ))
             ))
                 ))
         
/* ---------------------------------
open/close the layer
--------------------------------- */          
defun( OporCllayer (onelayerlist)

          if(axlIsVisibleLayer(car(onelayerlist))
             then
                 foreach(onelayer onelayerlist
                 axlVisibleLayer(onelayer nil)
                 )
                 else
                 foreach(onelayer onelayerlist
                 axlVisibleLayer(onelayer t)
                 )                 
                 )
      )
          
          
          
          
          
/* ---------------------------------
Create the display layer list
--------------------------------- */

defun( Display_currentls (curlayers)
      let(()
    disetchlayerlist = crlistneed()
        axlVisibleDesign(nil)
        foreach(one disetchlayerlist
                if(
                    curlayers == car(one)
                    then
                    willdl = cdr(one)
                      foreach(dl willdl
                      axlVisibleLayer(dl t)
                                     )
                   ; axlDBDisplayControl('filledPadsEnable nil)
                   ; axlDBDisplayControl('endcapsEnable t)                                         
                          axlUIWRedraw(nil)                         
                  )
                  )
     ))

604

主题

2859

帖子

1万

积分

EDA365版主(50)

Rank: 5

积分
13638
3#
 楼主| 发表于 2015-8-4 21:11 | 只看该作者


附件是论坛里面下载的skill集成包,有些效果如果能更好改进效果就会更好一些

像skill有没有好的编辑与调试环境,自带的文档看起来总是感觉有点难度大

有没有针对常见的功能能说说如何实现比较好的自动化参数设置?


希望能以一定类似菜单的方式定义,一次性设置搞出
[1]自定义板框,字体等常见习惯性设置
[2]自定义板层(4层,6层或者更多层的常规勾选执行自动设置)
[3]自定义gerber层设置(4层,6层或者更多层的常规勾选执行自动设置)[3]常用的电气,安全间距规则定义设置
等等
希望可以实现模板化规则设置



本帖子中包含更多资源

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

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

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-2-23 01:06 , Processed in 0.057759 second(s), 34 queries , Gzip On.

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

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

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