找回密码
 注册
查看: 1482|回复: 36
打印 上一主题 下一主题

求大神帮忙,在帖子里找到一个skill,想修改一下,但能力太差

[复制链接]
  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2022-3-25 23:37 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

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

    x
    如下图描述
    源码如下,改到一半不会了
    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 outline_color\n")
            fprintf(h "FLOC 2 1\n")
            fprintf(h "COLOR 2 1\n")
            fprintf(h "ENDFIELD\n")

            fprintf(h "FIELD outline_check\n")
            fprintf(h "FLOC 4 1\n")
            fprintf(h "CHECKLIST \"Board Geometry/Outline\"\n")
            fprintf(h "ENDFIELD\n")


            fprintf(h "FIELD SilkT_color\n")
            fprintf(h "FLOC 2 4\n")
            fprintf(h "COLOR 2 1\n")
            fprintf(h "ENDFIELD\n")

            fprintf(h "FIELD SilkT_check\n")
            fprintf(h "FLOC 4 4\n")
            fprintf(h "CHECKLIST \"SilkT\"\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,"outline_color",axlLayerGet("BOARD GEOMETRY/OUTLINE")->color)
            axlFormSetField(w,"outline_check",axlLayerGet("BOARD GEOMETRY/OUTLINE")->visible)
            axlFormDisplay(w)
            axlFormSetField(w,"SilkT_color",axlLayerGet("REF DES/SILKSCREEN_TOP")->color)
            axlFormSetField(w,"SilkT_check",axlLayerGet("REF DES/SILKSCREEN_TOP")->visible)
            axlFormDisplay(w)
    ))

    defun( ViewLayer_Callback (h)
            case( h -> cuRField
                    ("outline_check"
                            axlVisibleLayer("BOARD GEOMETRY/OUTLINE" ,h->curValue)
                            axlVisibleUpdate(t)




                    )
            )
    )


    希望添加如下多个层面
    "REF DES/SILKSCREEN_TOP" "PACKAGE GEOMETRY/SILKSCREEN_TOP" "BOARD GEOMETRY/SILKSCREEN_TOP" "BOARD GEOMETRY/DESIGN_OUTLINE" "BOARD GEOMETRY/CUTOUT" "BOARD GEOMETRY/OUTLINE"

    谢谢!
  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    推荐
    发表于 2022-3-26 17:56 | 只看该作者
    上面不变。改一下这个函数就行。
    功能点击一个check,开启/关闭三个层。颜色没有意义,忽略即可。

    1. defun( ViewLayer_Callback (h)
    2.         case( h -> curField
    3.                 ("outline_check"
    4.                         axlVisibleLayer("BOARD GEOMETRY/OUTLINE" ,h->curValue)
    5.                                                 axlVisibleLayer("BOARD GEOMETRY/DESIGN_OUTLINE" ,h->curValue)
    6.                                                 axlVisibleLayer("BOARD GEOMETRY/CUTOUT" ,h->curValue)
    7.                         axlVisibleUpdate(t)
    8.                 )
    9.                                 ("SilkT_check"
    10.                         axlVisibleLayer("REF DES/SILKSCREEN_TOP" ,h->curValue)
    11.                                                 axlVisibleLayer("PACKAGE GEOMETRY/SILKSCREEN_TOP" ,h->curValue)
    12.                                                 axlVisibleLayer("BOARD GEOMETRY/SILKSCREEN_TOP" ,h->curValue)
    13.                         axlVisibleUpdate(t)
    14.                 )
    15.         )
    16. )
    复制代码
  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    推荐
     楼主| 发表于 2022-4-2 23:28 | 只看该作者
    aarom 发表于 2022-3-29 08:12
    顯示一齊選或不選......
    defun( ViewLayer_Callback (h)
            case( h -> curField

    您好,请问按照这个做了,但是点击颜色按钮关闭,这个按钮不能变成黑色,能否帮忙看下是哪的原因,谢谢!如下源码
    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_P",axlLayerGet("PACKAGE GEOMETRY/SILKSCREEN_TOP")->color)
                    axlFormSetField(w,"SilkT_color_B",axlLayerGet("BOARD GEOMETRY/SILKSCREEN_TOP")->color)
                    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)
            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))
            )
    )

    头像被屏蔽
  • TA的每日心情
    开心
    2025-1-23 15:05
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    推荐
    发表于 2022-3-29 08:12 | 只看该作者
    提示: 作者被禁止或删除 内容自动屏蔽
  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
     楼主| 发表于 2022-3-25 23:45 | 只看该作者
    图片不知怎么的看不到,重新上图

    11.png (104.08 KB, 下载次数: 0)

    11.png

    222.png (9.51 KB, 下载次数: 1)

    222.png
  • TA的每日心情
    奋斗
    2025-4-27 15:26
  • 签到天数: 81 天

    [LV.6]常住居民II

    6#
    发表于 2022-3-26 01:36 | 只看该作者
    复制粘贴不就好了。
    form里面一份
    初值一份
    form相应函数一份

    callback里面再复制这一份就好了。
    1.                                 ("SilkT_check"
    2.                                                 axlVisibleLayer("REF DES/SILKSCREEN_TOP" ,h->curValue)
    3.                                                 axlVisibleUpdate(t)
    4.                                 )
    复制代码

    点评

    有人幫就好! 1.defun 下 Callback 只是預設值. 2.他只有傳回值, 少了開關層面的判斷和指令.  发表于 2022-3-26 10:50
    这个复制试过,不知的哪里出了问题,就是没反应,打不开层面  详情 回复 发表于 2022-3-26 08:50
    头像被屏蔽
  • TA的每日心情
    开心
    2025-1-23 15:05
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    7#
    发表于 2022-3-26 01:40 | 只看该作者
    提示: 作者被禁止或删除 内容自动屏蔽
  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    8#
     楼主| 发表于 2022-3-26 08:49 | 只看该作者
    aarom 发表于 2022-03-26 01:40:31
    本帖最后由 aarom 于 2022-3-26 02:03 编辑

    他的寫法是在 form 裡,單獨控制每層的"顏色"及"是否顯示".

    你異想天開不改form, 想利用二個選項,

    1."BOARD GEOMETRY/OUTLINE" 選項同時控制"BOARD GEOMETRY/DESIGN_OUTLINE" "BOARD GEOMETRY/CUTOUT" "BOARD GEOMETRY/OUTLINE".

    2."SilkT"選項同時控制"REF DES/SILKSCREEN_TOP" "ACKAGE GEOMETRY/SILKSCREEN_TOP" "BOARD GEOMETRY/SILKSCREEN_TOP"

    問題他是單獨層的控制! 你要你列出的層面一層一層選嗎??
    你想清楚再說, 這裡應該有人會幫. (不一定會是我.)
    還是只要選項不管顏色,就能一齊控.
    ----------------------------------------
    例如:這是他 form 的"BOARD GEOMETRY/OUTLINE" 單獨控制. 每增加一個層,就要增加一組,及改Y軸數字, 判斷名稱.(你框的是判斷完要的結果.)
            fprintf(h "FIELD outline_color\n")
            fprintf(h "FLOC 2 1\n")
            fprintf(h "COLOR 2 1\n")
            fprintf(h "ENDFIELD\n")

            fprintf(h "FIELD outline_check\n")
            fprintf(h "FLOC 4 1\n")
            fprintf(h "CHECKLIST \"Board Geometry/Outline\"\n")
            fprintf(h "ENDFIELD\n")


    嗯嗯,是想将skilT这个选项控制多个层面(最后列出来的那几个层面),不知如何修改,outline的那个选项按照现在单独一个层面就可以,有时间能否帮忙改下,非常感谢!

    “来自电巢APP”

  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    9#
     楼主| 发表于 2022-3-26 08:50 | 只看该作者
    db-_- 发表于 2022-03-26 01:36:59
    复制粘贴不就好了。
    form里面一份
    初值一份
    form相应函数一份

    callback里面再复制这一份就好了。
    1.                                 ("SilkT_check"
    2.                                                 axlVisibleLayer("REF DES/SILKSCREEN_TOP" ,h->curValue)
    3.                                                 axlVisibleUpdate(t)
    4.                                 )
    复制代码


    这个复制试过,不知的哪里出了问题,就是没反应,打不开层面

    “来自电巢APP”

  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    10#
     楼主| 发表于 2022-3-26 08:52 | 只看该作者
    aarom 发表于 2022-03-26 01:40:31
    本帖最后由 aarom 于 2022-3-26 02:03 编辑

    他的寫法是在 form 裡,單獨控制每層的"顏色"及"是否顯示".

    你異想天開不改form, 想利用二個選項,

    1."BOARD GEOMETRY/OUTLINE" 選項同時控制"BOARD GEOMETRY/DESIGN_OUTLINE" "BOARD GEOMETRY/CUTOUT" "BOARD GEOMETRY/OUTLINE".

    2."SilkT"選項同時控制"REF DES/SILKSCREEN_TOP" "ACKAGE GEOMETRY/SILKSCREEN_TOP" "BOARD GEOMETRY/SILKSCREEN_TOP"

    問題他是單獨層的控制! 你要你列出的層面一層一層選嗎??
    你想清楚再說, 這裡應該有人會幫. (不一定會是我.)
    還是只要選項不管顏色,就能一齊控.
    ----------------------------------------
    例如:這是他 form 的"BOARD GEOMETRY/OUTLINE" 單獨控制. 每增加一個層,就要增加一組,及改Y軸數字, 判斷名稱.(你框的是判斷完要的結果.)
            fprintf(h "FIELD outline_color\n")
            fprintf(h "FLOC 2 1\n")
            fprintf(h "COLOR 2 1\n")
            fprintf(h "ENDFIELD\n")

            fprintf(h "FIELD outline_check\n")
            fprintf(h "FLOC 4 1\n")
            fprintf(h "CHECKLIST \"Board Geometry/Outline\"\n")
            fprintf(h "ENDFIELD\n")


    就是想这一个按钮控制多个层面,所以颜色就不能用了,就想去掉就可以了

    “来自电巢APP”

  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    11#
     楼主| 发表于 2022-3-26 20:00 | 只看该作者
    db-_- 发表于 2022-03-26 17:56:58
    上面不变。改一下这个函数就行。
    功能点击一个check,开启/关闭三个层。颜色没有意义,忽略即可。

    1. defun( ViewLayer_Callback (h)
    2.         case( h -> curField
    3.                 ("outline_check"
    4.                         axlVisibleLayer("BOARD GEOMETRY/OUTLINE" ,h->curValue)
    5.                                                 axlVisibleLayer("BOARD GEOMETRY/DESIGN_OUTLINE" ,h->curValue)
    6.                                                 axlVisibleLayer("BOARD GEOMETRY/CUTOUT" ,h->curValue)
    7.                         axlVisibleUpdate(t)
    8.                 )
    9.                                 ("SilkT_check"
    10.                         axlVisibleLayer("REF DES/SILKSCREEN_TOP" ,h->curValue)
    11.                                                 axlVisibleLayer("PACKAGE GEOMETRY/SILKSCREEN_TOP" ,h->curValue)
    12.                                                 axlVisibleLayer("BOARD GEOMETRY/SILKSCREEN_TOP" ,h->curValue)
    13.                         axlVisibleUpdate(t)
    14.                 )
    15.         )
    16. )
    复制代码


    可以了可以了,非常感谢!

    “来自电巢APP”

  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    12#
     楼主| 发表于 2022-3-26 21:35 | 只看该作者
    zs_king 发表于 2022-03-26 20:50:01
    [quote]db-_- 发表于 2022-03-26 17:56:58
    上面不变。改一下这个函数就行。
    功能点击一个check,开启/关闭三个层。颜色没有意义,忽略即可。

    1. defun( ViewLayer_Callback (h)
    2.         case( h -> curField
    3.                 ("outline_check"
    4.                         axlVisibleLayer("BOARD GEOMETRY/OUTLINE" ,h->curValue)
    5.                                                 axlVisibleLayer("BOARD GEOMETRY/DESIGN_OUTLINE" ,h->curValue)
    6.                                                 axlVisibleLayer("BOARD GEOMETRY/CUTOUT" ,h->curValue)
    7.                         axlVisibleUpdate(t)
    8.                 )
    9.                                 ("SilkT_check"
    10.                         axlVisibleLayer("REF DES/SILKSCREEN_TOP" ,h->curValue)
    11.                                                 axlVisibleLayer("PACKAGE GEOMETRY/SILKSCREEN_TOP" ,h->curValue)
    12.                                                 axlVisibleLayer("BOARD GEOMETRY/SILKSCREEN_TOP" ,h->curValue)
    13.                         axlVisibleUpdate(t)
    14.                 )
    15.         )
    16. )
    复制代码


    活跃,耐心,热心。
    [/quote]

    高手无处不在,想问下按钮和旁边的字的字号怎么调,能不能调大点

    “来自电巢APP”

    头像被屏蔽
  • TA的每日心情
    开心
    2025-1-23 15:05
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    13#
    发表于 2022-3-27 20:04 | 只看该作者
    提示: 作者被禁止或删除 内容自动屏蔽
  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    14#
     楼主| 发表于 2022-3-27 21:05 | 只看该作者
    aarom 发表于 2022-3-27 20:04
    建議勾選和顏色要分開.
    可以一起選或單獨選開關, 不然就只留勾選.
    只是建議

    嗯嗯,这个看着挺舒服,我想做一些快捷开关层面,太多了,所以就简化了,只留了主要的,包含的就不用显示了

    点评

    因為顏色只能對應單獨層面的開關, 所以自我練功了一下, 都寫好了, 顏色單獨層面的開關, 也會變黑色或實際顏色了.  发表于 2022-3-28 12:30
  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    15#
     楼主| 发表于 2022-3-28 19:17 | 只看该作者
    aarom 发表于 2022-3-27 20:04
    建議勾選和顏色要分開.
    可以一起選或單獨選開關, 不然就只留勾選.
    只是建議

    做成这样了,不过我又有问题了,做了个on和off,这两个不知道怎么做,能不能帮忙添加一下,想让点ON的时候打开面板上所有加载的层,而且所有选项都打上勾,点OFF的时候,关闭所有层,且所有选项都去掉勾,

    点评

    重新上传附件  详情 回复 发表于 2022-3-28 19:20
  • TA的每日心情
    开心
    2021-10-26 15:48
  • 签到天数: 1 天

    [LV.1]初来乍到

    16#
     楼主| 发表于 2022-3-28 19:20 | 只看该作者
    1621142761 发表于 2022-3-28 19:17
    做成这样了,不过我又有问题了,做了个on和off,这两个不知道怎么做,能不能帮忙添加一下,想让点ON的时 ...

    重新上传附件

    layers.zip

    1.41 KB, 下载次数: 0, 下载积分: 贡献 -30 , 威望 -10

    头像被屏蔽
  • TA的每日心情
    开心
    2025-1-23 15:05
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    17#
    发表于 2022-3-28 22:11 | 只看该作者
    提示: 作者被禁止或删除 内容自动屏蔽
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-5-31 00:16 , Processed in 0.140625 second(s), 30 queries , Gzip On.

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

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

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