mmmmyuitian 发表于 2014-12-2 22:00:13

vivienluo 发表于 2014-12-1 13:00
你的%s没法传递值啊。

希望您帮忙看下 代码 只要举例一个可以分层控制就行

vivienluo 发表于 2014-12-2 22:09:08

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

有那么纠结吗,我帮你看看。。。。:lol

vivienluo 发表于 2014-12-2 23:10:14

给你个参考!随便写的,代码不是很优化,多注意下。






;subColor Test
;BY Vivien Luo
;2014/12/02 23:40
axlCmdRegister("aaa" 'subColor)

defun( subColor ()
      subColorformcreate()
      form = axlFormCreate(gensym() "./subColor.form" nil 'subColorActionnil)
      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 fieldColorif(axlIsVisibleLayer(colorLayer), axlLayerGet(colorLayer) ->color, 'black))
                axlFormSetField(form fieldColoraxlIsVisibleLayer(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))
      )
      (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 fieldColorif(axlIsVisibleLayer(colorLayer), axlLayerGet(colorLayer) ->color, 'black))
                axlFormSetField(form fieldColoraxlIsVisibleLayer(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 10 0\n")
      fprintf(subColorPort "ENDTEXT\n")
      Layers=(axlGetParam("paramLayerGroup:ETCH")->groupMembers)
      Tloc = 0
      foreach(layer Layers
                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 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


mmmmyuitian 发表于 2014-12-3 19:49:35

谢谢楼主 万分感谢 呵呵

vivienluo 发表于 2014-12-3 20:49:45

希望对你有帮助。

mmmmyuitian 发表于 2014-12-4 12:04:09

已經ok了 我可以以這個類推其他的 謝謝

mmmmyuitian 发表于 2015-1-6 11:50:49

这里如何实现 一个checklist框, 选择展开内层或者关闭内层(gnd ,pwr)

mmmmyuitian 发表于 2015-1-6 11:52:01

vivienluo 发表于 2014-12-2 23:10
给你个参考!随便写的,代码不是很优化,多注意下。

这里如何实现 一个checklist框, 选择展开内层或者关闭内层(gnd ,pwr)

mmmmyuitian 发表于 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 'subColorActionnil)
      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 fieldColorif(axlIsVisibleLayer(colorLayer), axlLayerGet(colorLayer) ->color, 'black))
                axlFormSetField(form fieldColoraxlIsVisibleLayer(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 fieldColorif(axlIsVisibleLayer(colorLayer), axlLayerGet(colorLayer) ->color, 'black))
                axlFormSetField(form fieldColoraxlIsVisibleLayer(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"怎么填写

墨客的秋天 发表于 2016-5-9 20:40:39

学习了
页: 1 [2] 3
查看完整版本: 如何实现form里面根据层面分别显示routekeepout 和constriant region