EDA365电子论坛网

标题: 如下,请帮忙看下为什么点击关闭后按钮不变黑色 [打印本页]

作者: 1621142761    时间: 2022-4-7 23:46
标题: 如下,请帮忙看下为什么点击关闭后按钮不变黑色
如下,请帮忙看下为什么点击关闭后按钮不变黑色,需要怎样处理呢,
付源码axlCmdRegister( "ViewLayer" 'ViewLayer ?cmdType "general")
defun( ViewLayer ()
let((f h)
        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 "PORT 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("PACKAGE GEOMETRY/SILKSCREEN_TOP")->color)
                axlFormSetField(w,"SilkT_color_P",axlLayerGet("PACKAGE 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(w,"SilkT_color_R",axlLayerGet("REF DES/SILKSCREEN_TOP")->visible)
                axlFormSetField(w,"SilkT_color_P",axlLayerGet("PACKAGE GEOMETRY/SILKSCREEN_TOP")->visible)
                axlFormSetField(w,"SilkT_color_B",axlLayerGet("BOARD GEOMETRY/SILKSCREEN_TOP")->visible)
                axlVisibleUpdate(t))
               ("SilkT_color_R"
                axlVisibleLayer("REF DES/SILKSCREEN_TOP" ,h->curValue)
                axlVisibleUpdate(t))
              ("SilkT_color_P"
                axlVisibleLayer("PACKAGE GEOMETRY/SILKSCREEN_TOP" ,h->curValue)
                axlVisibleUpdate(t))
              ("SilkT_color_B"
                axlVisibleLayer("BOARD GEOMETRY/SILKSCREEN_TOP" ,h->curValue)
                axlVisibleUpdate(t))
        )
)


动画.gif (122.71 KB, 下载次数: 1)

动画.gif

作者: 1621142761    时间: 2022-4-8 09:30
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))
        )
)


非常感谢,晚上回去试一下^O^

作者: 1621142761    时间: 2022-4-8 21:43
zs_king 发表于 2022-4-8 07:58
第二个函数,替换一下。。你有的关键的值填错了。
第一个地方  case( h -> curField
第二个地方  这个Cal ...

非常感谢,可以了,我又在里面加了TAB+GROUP命令,就打不开了,感觉没有加错,能不能再帮忙看下

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 "TABSET \"TAB\"\n")
                fprintf(h "OPTIONS tabsetDispatch\n")
                fprintf(h "FLOC 2 0\n")
                fprintf(h "FSIZE 41 15\n")

                fprintf(h "TAB \"layers\"\n")
                fprintf(h "GROUP \"layers\"\n")
                fprintf(h "FLOC 2 2\n")
                fprintf(h "FSIZE 40 14\n")
                fprintf(h "ENDGROUP\n")
                fprintf(h "ENDTAB\n")

                fprintf(h "TAB \"other\"\n")
                fprintf(h "GROUP \"other\"\n")
                fprintf(h "FLOC 4 2\n")
                fprintf(h "FSIZE 40 14\n")
                fprintf(h "ENDGROUP\n")
                fprintf(h "ENDTAB\n")

        fprintf(h "FIELD SilkT\n")
        fprintf(h "FLOC 2 4\n")
        fprintf(h "CHECKLIST \"SilkT\"\n")
        fprintf(h "ENDFIELD\n")

        fprintf(h "FIELD SilkT_color_B\n")
        fprintf(h "FLOC 2 6\n")
        fprintf(h "COLOR 2 1\n")
        fprintf(h "ENDFIELD\n")

        fprintf(h "FIELD SilkT_color_P\n")
        fprintf(h "FLOC 2 8\n")
        fprintf(h "COLOR 2 1\n")
        fprintf(h "ENDFIELD\n")

        fprintf(h "FIELD SilkT_color_R\n")
        fprintf(h "FLOC 2 10\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("CKAGE GEOMETRY/SILKSCREEN_TOP")->color)
                axlFormSetField(w,"SilkT_color_P",axlLayerGet("CKAGE 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))
        )
)


作者: hyper311    时间: 2022-4-9 17:45
zs_king 发表于 2022-4-9 11:44
非常感谢,可以了,我又在里面加了TAB+GROUP命令,就打不开了,感觉没有加错,能不能再帮忙看下

a ...

哈哈,这是要接力么,我改正常了你们继续
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 "PORT 41 15\n")
        fprintf(h "HEADER \"EDA365 skill\"\n")
        fprintf(h "TILE\n")

        fprintf(h "TABSET \"TAB\"\n")
        fprintf(h "OPTIONS tabsetDispatch\n")
        fprintf(h "FLOC 2 0\n")
        fprintf(h "FSIZE 41 15\n")

            fprintf(h "TAB \"layers\"\n")

                fprintf(h "GROUP \"layers\"\n")
                fprintf(h "GLOC 2 2\n")
                fprintf(h "GSIZE 40 14\n")
                fprintf(h "ENDGROUP\n")

                fprintf(h "FIELD SilkT\n")
                fprintf(h "FLOC 2 4\n")
                fprintf(h "CHECKLIST \"SilkT\"\n")
                fprintf(h "ENDFIELD\n")

                fprintf(h "FIELD SilkT_color_B\n")
                fprintf(h "FLOC 2 6\n")
                fprintf(h "COLOR 2 1\n")
                fprintf(h "ENDFIELD\n")

                fprintf(h "FIELD SilkT_color_P\n")
                fprintf(h "FLOC 2 8\n")
                fprintf(h "COLOR 2 1\n")
                fprintf(h "ENDFIELD\n")

                fprintf(h "FIELD SilkT_color_R\n")
                fprintf(h "FLOC 2 10\n")
                fprintf(h "COLOR 2 1\n")
                fprintf(h "ENDFIELD\n")

            fprintf(h "ENDTAB\n")

            fprintf(h "TAB \"other\"\n")
                fprintf(h "GROUP \"other\"\n")
                fprintf(h "GLOC 4 2\n")
                fprintf(h "GSIZE 40 14\n")
                fprintf(h "ENDGROUP\n")

            fprintf(h "ENDTAB\n")

        fprintf(h "ENDTABSET\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("CKAGE GEOMETRY/SILKSCREEN_TOP")->color)
        axlFormSetField(w,"SilkT_color_P",axlLayerGet("CKAGE 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))
      )
    )




作者: 1621142761    时间: 2022-4-10 13:35
zs_king 发表于 2022-4-9 11:44
非常感谢,可以了,我又在里面加了TAB+GROUP命令,就打不开了,感觉没有加错,能不能再帮忙看下

a ...

应该是将ENDGROUP和ENDTAB放在这些按钮之后吧,但试了下还是不行,报错打不开
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 45\n")
        fprintf(h "HEADER \"EDA365 skill\"\n")
        fprintf(h "TILE\n")

                fprintf(h "TABSET \"tab\"\n")
                fprintf(h "OPTIONS tabsetDispatch\n")
                fprintf(h "FLOC 2 0\n")
                fprintf(h "FSIZE 41 15\n")

                fprintf(h "TAB \" layers\"\n")
                fprintf(h "GROUP \" layers\"\n")
                fprintf(h "FLOC 2 2\n")
                fprintf(h "FSIZE 35 14\n")

        fprintf(h "FIELD SilkT\n")
        fprintf(h "FLOC 2 4\n")
        fprintf(h "CHECKLIST \"SilkT\"\n")
        fprintf(h "ENDFIELD\n")

        fprintf(h "FIELD SilkT_color_B\n")
        fprintf(h "FLOC 2 6\n")
        fprintf(h "COLOR 2 1\n")
        fprintf(h "ENDFIELD\n")

        fprintf(h "FIELD SilkT_color_P\n")
        fprintf(h "FLOC 2 8\n")
        fprintf(h "COLOR 2 1\n")
        fprintf(h "ENDFIELD\n")

        fprintf(h "FIELD SilkT_color_R\n")
        fprintf(h "FLOC 2 10\n")
        fprintf(h "COLOR 2 1\n")
        fprintf(h "ENDFIELD\n")

                fprintf(h "ENDGROUP\n")
                fprintf(h "ENDTAB\n")

                fprintf(h "TAB \" other\"\n")
                fprintf(h "GROUP \" other\"\n")
                fprintf(h "FLOC 2 2\n")
                fprintf(h "FSIZE 35 14\n")
                fprintf(h "ENDGROUP\n")

                fprintf(h "ENDTAB\n")

        fprintf(h "ENDTILE\n")
        fprintf(h "ENDFORM\n")
        close(h)


作者: 1621142761    时间: 2022-4-11 11:44
hyper311 发表于 2022-4-9 17:45
哈哈,这是要接力么,我改正常了你们继续
axlCmdRegister( "ViewLayer" 'ViewLayer ?cmdType "general") ...

感谢两位大佬,我不懂得太多了,就会上来问

作者: db-_-    时间: 2022-4-11 12:01
form多参考cadence自带的例子。\share\pcb\examples\skill\form\basic
axlform.il教科书般的存在,你会受益良多的。
作者: 1621142761    时间: 2022-4-11 12:55
zs_king 发表于 2022-04-11 12:09:03
[quote]1621142761 发表于 2022-4-10 13:35
应该是将ENDGROUP和ENDTAB放在这些按钮之后吧,但试了下还是不行,报错打不开
defun( ViewLayer ()
l ...

这个缺少一行  ENDTABSET
[/quote]

感谢感谢,是少个结束语^O^

作者: 1621142761    时间: 2022-4-11 12:56
db-_- 发表于 2022-04-11 12:01:13
form多参考cadence自带的例子。\share\pcb\examples\skill\form\basic
axlform.il教科书般的存在,你会受益良多的。


嗯嗯,还不知道有这个东西,有时间去看下^O^





欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2