找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: mmmmyuitian

如何实现form里面根据层面分别显示routekeepout 和constriant region

[复制链接]
 楼主| 发表于 2014-12-2 22:00:13 | 显示全部楼层
vivienluo 发表于 2014-12-1 13:00
你的%s没法传递值啊。

希望您帮忙看下 代码 只要举例一个可以分层控制就行
发表于 2014-12-2 22:09:08 | 显示全部楼层
mmmmyuitian 发表于 2014-12-2 22:00
希望您帮忙看下 代码 只要举例一个可以分层控制就行

有那么纠结吗,我帮你看看。。。。
发表于 2014-12-2 23:10:14 | 显示全部楼层
给你个参考!随便写的,代码不是很优化,多注意下。
subColor.png

subColor-01.png
subColor.rar (1.17 KB, 下载次数: 9, 售价: 1 SKILL币)


  1. ;subColor Test
  2. ;BY Vivien Luo
  3. ;2014/12/02 23:40
  4. axlCmdRegister("aaa" 'subColor)

  5. defun( subColor ()
  6.         subColorformcreate()
  7.         form = axlFormCreate(gensym() "./subColor.form" nil 'subColorAction  nil)
  8.         axlFormSetField(form "RteKoAll"  if(axlIsVisibleLayer("ROUTE KEEPOUT/ALL"), axlLayerGet("ROUTE KEEPOUT/ALL") ->color, 'black))
  9.         axlFormSetField(form "RteKoAll"  axlIsVisibleLayer("ROUTE KEEPOUT/ALL"))
  10.         foreach(layer axlGetParam("paramLayerGroup:ETCH")->groupMembers
  11.                 fieldColor = strcat("RteKo" layer)
  12.                 colorLayer = strcat("ROUTE KEEPOUT/" layer)
  13.                 axlFormSetField(form fieldColor  if(axlIsVisibleLayer(colorLayer), axlLayerGet(colorLayer) ->color, 'black))
  14.                 axlFormSetField(form fieldColor  axlIsVisibleLayer(colorLayer))
  15.         )
  16.         axlFormDisplay(form)
  17. )

  18. defun(subColorAction (form)
  19. case(form->curField
  20.         ("RteKoAll"
  21.                 layer = "ROUTE KEEPOUT/ALL"
  22.                 axlVisibleLayer(layer, !axlIsVisibleLayer(layer))
  23.                 axlVisibleUpdate(t)
  24.                 axlFormSetField(form "RteKoAll"  axlIsVisibleLayer("ROUTE KEEPOUT/ALL"))
  25.                 axlFormSetField(form "RteKoAll"  if(axlIsVisibleLayer("ROUTE KEEPOUT/ALL"), axlLayerGet("ROUTE KEEPOUT/ALL") ->color, 'black))
  26.         )
  27.         (t
  28.                 ;axlUIConfirm("ttt")
  29.                 curField = form->curField
  30.                 foreach(layer axlGetParam("paramLayerGroup:ETCH")->groupMembers
  31.                 fieldColor = strcat("RteKo" layer)
  32.                 when(curField == fieldColor               
  33.                 colorLayer = strcat("ROUTE KEEPOUT/" layer)
  34.                 axlVisibleLayer(colorLayer, !axlIsVisibleLayer(colorLayer))
  35.                 axlVisibleUpdate(t)
  36.                 axlFormSetField(form fieldColor  if(axlIsVisibleLayer(colorLayer), axlLayerGet(colorLayer) ->color, 'black))
  37.                 axlFormSetField(form fieldColor  axlIsVisibleLayer(colorLayer))
  38.                 )
  39.                 );end when
  40.         )
  41. );end case
  42. );end defun

  43. defun( subColorformcreate ()
  44. let((subColorPort)
  45.         subColorPort = outfile("./subColor.form")
  46.         fprintf(subColorPort "FILE_TYPE=FORM_DEFN VERSION=2\n")
  47.         fprintf(subColorPort "FORM\n")
  48.         fprintf(subColorPort "FIXED\n")
  49.         fprintf(subColorPort "PORT 30 5\n")
  50.         fprintf(subColorPort "HEADER "SubColor Test"\n")
  51.         fprintf(subColorPort "TILE\n")
  52.         
  53.         fprintf(subColorPort "TEXT RteKo\n")
  54.         fprintf(subColorPort "TLOC 10 0\n")
  55.         fprintf(subColorPort "ENDTEXT\n")
  56.         Layers=(axlGetParam("paramLayerGroup:ETCH")->groupMembers)
  57.         Tloc = 0
  58.         foreach(layer Layers
  59.                 Tloc = Tloc + 2
  60.                 fprintf(subColorPort "TEXT %s\n" layer)
  61.                 fprintf(subColorPort "TLOC 1 %d\n" Tloc)
  62.                 fprintf(subColorPort "ENDTEXT\n")
  63.                
  64.                 fprintf(subColorPort "FIELD RteKo%s\n" layer)
  65.                 fprintf(subColorPort "FLOC 10 %d\n" Tloc)
  66.                 fprintf(subColorPort "COLOR 2 1\n")
  67.                 fprintf(subColorPort "ENDFIELD\n")
  68.         );end foreach
  69.         
  70.         fprintf(subColorPort "TEXT ALL\n")
  71.         fprintf(subColorPort "TLOC 1 %d\n" Tloc + 2)
  72.         fprintf(subColorPort "ENDTEXT\n")
  73.         
  74.         fprintf(subColorPort "FIELD RteKoAll\n")
  75.         fprintf(subColorPort "FLOC 10 %d\n" Tloc + 2)
  76.         fprintf(subColorPort "COLOR 2 1\n")
  77.         fprintf(subColorPort "ENDFIELD\n")
  78.         
  79.         fprintf(subColorPort "ENDTILE\n")
  80.         fprintf(subColorPort "ENDFORM\n")
  81.         close(subColorPort)
  82.         ;debug form file
  83.         ;axlFormTest("./subColor.form")
  84. );end let
  85. );end defun
复制代码



 楼主| 发表于 2014-12-3 19:49:35 | 显示全部楼层
谢谢楼主 万分感谢 呵呵
发表于 2014-12-3 20:49:45 来自手机 | 显示全部楼层
希望对你有帮助。
 楼主| 发表于 2014-12-4 12:04:09 | 显示全部楼层
已經ok了 我可以以這個類推其他的 謝謝
 楼主| 发表于 2015-1-6 11:50:49 | 显示全部楼层
这里如何实现 一个checklist框, 选择展开内层或者关闭内层(gnd ,pwr)
 楼主| 发表于 2015-1-6 11:52:01 | 显示全部楼层
vivienluo 发表于 2014-12-2 23:10
给你个参考!随便写的,代码不是很优化,多注意下。

这里如何实现 一个checklist框, 选择展开内层或者关闭内层(gnd ,pwr)
 楼主| 发表于 2015-1-6 12:03:18 | 显示全部楼层
;subColor Test
;BY Vivien Luo
;2014/12/02 23:40
axlCmdRegister("aaa" 'subColor)

defun( subColor ()
        subColorformcreate()
        form = axlFormCreate(gensym() "./subColor.form" nil 'subColorAction  nil)
        axlFormSetField(form "RteKoAll"  if(axlIsVisibleLayer("ROUTE KEEPOUT/ALL"), axlLayerGet("ROUTE KEEPOUT/ALL") ->color, 'black))
        axlFormSetField(form "RteKoAll"  axlIsVisibleLayer("ROUTE KEEPOUT/ALL"))
        foreach(layer axlGetParam("paramLayerGroup:ETCH")->groupMembers
                fieldColor = strcat("RteKo" layer)
                colorLayer = strcat("ROUTE KEEPOUT/" layer)
                axlFormSetField(form fieldColor  if(axlIsVisibleLayer(colorLayer), axlLayerGet(colorLayer) ->color, 'black))
                axlFormSetField(form fieldColor  axlIsVisibleLayer(colorLayer))
        )
        axlFormDisplay(form)
)

defun(subColorAction (form)
case(form->curField
        ("RteKoAll"
                layer = "ROUTE KEEPOUT/ALL"
                axlVisibleLayer(layer, !axlIsVisibleLayer(layer))
                axlVisibleUpdate(t)
                axlFormSetField(form "RteKoAll"  axlIsVisibleLayer("ROUTE KEEPOUT/ALL"))
                axlFormSetField(form "RteKoAll"  if(axlIsVisibleLayer("ROUTE KEEPOUT/ALL"), axlLayerGet("ROUTE KEEPOUT/ALL") ->color, 'black))
        )

("Planecheck"


)



        (t
                ;axlUIConfirm("ttt")
                curField = form->curField
                foreach(layer axlGetParam("paramLayerGroup:ETCH")->groupMembers
                fieldColor = strcat("RteKo" layer)
                when(curField == fieldColor               
                colorLayer = strcat("ROUTE KEEPOUT/" layer)
                axlVisibleLayer(colorLayer, !axlIsVisibleLayer(colorLayer))
                axlVisibleUpdate(t)
                axlFormSetField(form fieldColor  if(axlIsVisibleLayer(colorLayer), axlLayerGet(colorLayer) ->color, 'black))
                axlFormSetField(form fieldColor  axlIsVisibleLayer(colorLayer))
                )
                );end when
        )
);end case
);end defun

defun( subColorformcreate ()
let((subColorPort)
        subColorPort = outfile("./subColor.form")
        fprintf(subColorPort "FILE_TYPE=FORM_DEFN VERSION=2\n")
        fprintf(subColorPort "FORM\n")
        fprintf(subColorPort "FIXED\n")
        fprintf(subColorPort "PORT 30 5\n")
        fprintf(subColorPort "HEADER \"SubColor Test\"\n")
        fprintf(subColorPort "TILE\n")
        
        fprintf(subColorPort "TEXT RteKo\n")
        fprintf(subColorPort "TLOC 1 0\n")
        fprintf(subColorPort "ENDTEXT\n")

        fprintf(subColorPort "FIELD Planecheck\n")
        fprintf(subColorPort "FLOC 10 0\n")
       fprintf(subColorPort "CHECKLIST\n")
        fprintf(subColorPort "ENDFIELD\n")
        Layers=(axlGetParam("paramLayerGroup:ETCH")->groupMembers)
        Tloc = 0
        foreach(layer Layers
         typelayer = strcat("ETCH/" layer)
         layertype=axlDBGetLayerType(typelayer)

if(layertype=="CONDUCTOR"
       then

                Tloc = Tloc + 2
                fprintf(subColorPort "TEXT %s\n" layer)
                fprintf(subColorPort "TLOC 1 %d\n" Tloc)
                fprintf(subColorPort "ENDTEXT\n")
               
                fprintf(subColorPort "FIELD RteKo%s\n" layer)
                fprintf(subColorPort "FLOC 10 %d\n" Tloc)
                fprintf(subColorPort "COLOR 2 1\n")
                fprintf(subColorPort "ENDFIELD\n")

);end else
        );end foreach
        
        fprintf(subColorPort "TEXT ALL\n")
        fprintf(subColorPort "TLOC 1 %d\n" Tloc + 2)
        fprintf(subColorPort "ENDTEXT\n")
        
        fprintf(subColorPort "FIELD RteKoAll\n")
        fprintf(subColorPort "FLOC 10 %d\n" Tloc + 2)
        fprintf(subColorPort "COLOR 2 1\n")
        fprintf(subColorPort "ENDFIELD\n")
        
        fprintf(subColorPort "ENDTILE\n")
        fprintf(subColorPort "ENDFORM\n")
        close(subColorPort)
        ;debug form file
        ;axlFormTest("./subColor.form")
);end let
);end defun  
特发出改了的skill, 请帮忙看下 "planecheck"怎么填写
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备2026063727号 )

GMT+8, 2026-10-24 08:22 , Processed in 0.060001 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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