动画.gif (122.71 KB, 下载次数: 1)
zs_king 发表于 2022-04-08 09:01:58
我改好的版本。底下几个按钮的联动 也给你做了。
axlCmdRegister( "ViewLayer" 'ViewLayer ?cmdType "general")
defun( ViewLayer ()
let((f h w)
f = axlTempFile()
h = outfile(f "w")
fprintf(h "FILE_TYPE=FORM_DEFN VERSION=2\n")
fprintf(h "FORM\n")
fprintf(h "FIXED\n")
fprintf(h "ORT 41 15\n")
fprintf(h "HEADER \"EDA365 skill\"\n")
fprintf(h "TILE\n")
fprintf(h "FIELD SilkT\n")
fprintf(h "FLOC 2 0\n")
fprintf(h "CHECKLIST \"SilkT\"\n")
fprintf(h "ENDFIELD\n")
fprintf(h "FIELD SilkT_color_B\n")
fprintf(h "FLOC 2 2\n")
fprintf(h "COLOR 2 1\n")
fprintf(h "ENDFIELD\n")
fprintf(h "FIELD SilkT_color_P\n")
fprintf(h "FLOC 2 4\n")
fprintf(h "COLOR 2 1\n")
fprintf(h "ENDFIELD\n")
fprintf(h "FIELD SilkT_color_R\n")
fprintf(h "FLOC 2 6\n")
fprintf(h "COLOR 2 1\n")
fprintf(h "ENDFIELD\n")
fprintf(h "ENDTILE\n")
fprintf(h "ENDFORM\n")
close(h)
w = axlFormCreate(gensym() f nil 'ViewLayer_Callback t)
axlFormSetField(w,"SilkT_color_R",axlLayerGet("REF DES/SILKSCREEN_TOP")->color)
axlFormSetField(w,"SilkT_color_R",axlLayerGet("REF DES/SILKSCREEN_TOP")->visible)
axlFormDisplay(w)
axlFormSetField(w,"SilkT_color_P",axlLayerGet("ACKAGE GEOMETRY/SILKSCREEN_TOP")->color)
axlFormSetField(w,"SilkT_color_P",axlLayerGet("ACKAGE GEOMETRY/SILKSCREEN_TOP")->visible)
axlFormDisplay(w)
axlFormSetField(w,"SilkT_color_B",axlLayerGet("BOARD GEOMETRY/SILKSCREEN_TOP")->color)
axlFormSetField(w,"SilkT_color_B",axlLayerGet("BOARD GEOMETRY/SILKSCREEN_TOP")->visible)
axlFormDisplay(w)
))
defun( ViewLayer_Callback (h)
case( h->curField
("SilkT"
axlVisibleLayer("REF DES/SILKSCREEN_TOP" ,h->curValue)
axlVisibleLayer("PACKAGE GEOMETRY/SILKSCREEN_TOP" ,h->curValue)
axlVisibleLayer("BOARD GEOMETRY/SILKSCREEN_TOP" ,h->curValue)
axlFormSetField(h,"SilkT_color_R",if(h->curValue then axlLayerGet("REF DES/SILKSCREEN_TOP")->color else 0))
axlFormSetField(h,"SilkT_color_P",if(h->curValue then axlLayerGet("REF DES/SILKSCREEN_TOP")->color else 0))
axlFormSetField(h,"SilkT_color_B",if(h->curValue then axlLayerGet("REF DES/SILKSCREEN_TOP")->color else 0))
axlColorShadowSet('mode nil)
axlVisibleUpdate(t))
("SilkT_color_R"
axlVisibleLayer("REF DES/SILKSCREEN_TOP" ,h->curValue)
axlFormSetField(h,"SilkT_color_R",if(h->curValue then axlLayerGet("REF DES/SILKSCREEN_TOP")->color else 0))
axlVisibleUpdate(t))
("SilkT_color_P"
axlVisibleLayer("PACKAGE GEOMETRY/SILKSCREEN_TOP" ,h->curValue)
axlFormSetField(h,"SilkT_color_P",if(h->curValue then axlLayerGet("REF DES/SILKSCREEN_TOP")->color else 0))
axlVisibleUpdate(t))
("SilkT_color_B"
axlVisibleLayer("BOARD GEOMETRY/SILKSCREEN_TOP" ,h->curValue)
axlFormSetField(h,"SilkT_color_B",if(h->curValue then axlLayerGet("REF DES/SILKSCREEN_TOP")->color else 0))
axlVisibleUpdate(t))
)
)
zs_king 发表于 2022-4-8 07:58
第二个函数,替换一下。。你有的关键的值填错了。
第一个地方 case( h -> curField
第二个地方 这个Cal ...

ORT 41 15\n")
CKAGE GEOMETRY/SILKSCREEN_TOP")->color)
CKAGE GEOMETRY/SILKSCREEN_TOP")->visible)zs_king 发表于 2022-4-9 11:44
非常感谢,可以了,我又在里面加了TAB+GROUP命令,就打不开了,感觉没有加错,能不能再帮忙看下
a ...
zs_king 发表于 2022-4-9 11:44
非常感谢,可以了,我又在里面加了TAB+GROUP命令,就打不开了,感觉没有加错,能不能再帮忙看下
a ...

ORT 41 45\n")hyper311 发表于 2022-4-9 17:45
哈哈,这是要接力么,我改正常了你们继续
axlCmdRegister( "ViewLayer" 'ViewLayer ?cmdType "general") ...

zs_king 发表于 2022-04-11 12:09:03
[quote]1621142761 发表于 2022-4-10 13:35
应该是将ENDGROUP和ENDTAB放在这些按钮之后吧,但试了下还是不行,报错打不开
defun( ViewLayer ()
l ...
db-_- 发表于 2022-04-11 12:01:13
form多参考cadence自带的例子。\share\pcb\examples\skill\form\basic
axlform.il教科书般的存在,你会受益良多的。
| 欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) | Powered by Discuz! X3.2 |