Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4333|回复: 8

快速切换层面的skill

[复制链接]
发表于 2022-6-20 11:28:25 | 显示全部楼层 |阅读模式
以下源码是可以按空格快速按顺序切换单个层面的skill,我想要在走线命令下运行这个skill,请问我应该如何修改源码

axlSetAlias("EDA_switch_up" "EDA365_SwitchLayer nil")
axlSetAlias("EDA_switch_down" "EDA365_SwitchLayer")

axlCmdRegister( "EDA365_SwitchLayer" 'EDA365_SwitchLayer ?cmdType "interactive")
defun( EDA365_SwitchLayer (@optional (prev nil))
prog((lEtchLayer sCurLayerName iNextLayerNo sNextLayer)
        lEtchLayer = setof(layer axlGetParam("paramLayerGroup:ETCH")->groupmembers nequal(axlDBGetLayerType(strcat("ETCH/" layer)) "PLANE"))
        sCurLayerName = cadr(parseString(axlGetActiveLayer() "/"))
        if( member(sCurLayerName lEtchLayer) then
                if(prev then
                        iNextLayerNo = length(lEtchLayer) - length(member(sCurLayerName lEtchLayer))
                        when(iNextLayerNo < 1 iNextLayerNo = length(lEtchLayer))
                else
                        iNextLayerNo = length(lEtchLayer) - length(member(sCurLayerName lEtchLayer)) + 2
                        when(iNextLayerNo > length(lEtchLayer) iNextLayerNo = 1)
                )
        else
                iNextLayerNo = 1
        )
      
        sNextLayer = nthelem(iNextLayerNo lEtchLayer)
        axlMsgPut("Current Layer:%L" sNextLayer)
        axlVisibleDesign(nil)
    axlVisibleLayer( strcat("ETCH/" sNextLayer) t )
        axlVisibleLayer( strcat("PIN/" sNextLayer) t )
        axlVisibleLayer( strcat("VIA CLASS/" sNextLayer) t )
        axlVisibleLayer( strcat("DRC ERROR CLASS/" sNextLayer) t )
    axlVisibleLayer( "BOARD GEOMETRY/OUTLINE" t )
        axlSetActiveLayer(strcat("ETCH/" sNextLayer))
        axlUIWRedraw(nil)
)
)
 楼主| 发表于 2022-6-21 10:43:49 | 显示全部楼层
找到一个能实现需求的skill,但是加密了,看不到源码

快速换层Skill.zip

7.82 KB, 下载次数: 19, 下载积分: 贡献 1

售价: 1 SKILL币  [记录]

 楼主| 发表于 2022-6-21 10:47:36 | 显示全部楼层
skill说明如图
20220621104634.png
发表于 2022-6-22 09:38:23 | 显示全部楼层
顶一下,这不是骗子,实测可用
发表于 2022-6-23 22:41:36 | 显示全部楼层
我能说你tm是个骗子么
 楼主| 发表于 2022-7-20 17:24:32 | 显示全部楼层

把defun()函数换成procedure()就可以在任何模式下,快速换层了
 楼主| 发表于 2022-7-20 17:27:04 | 显示全部楼层
axlSetAlias("gup" "SwitchLayer nil")ageUp切换上一层
axlSetFunckey("gdown" "skill SwitchLayer");PageDown切换上一层


axlCmdRegister( "SwitchLayer" 'SwitchLayer ?cmdType "interactive")
procedure(SwitchLayer(@optional (prev nil))
prog((lEtchLayer sCurLayerName iNextLayerNo sNextLayer)
        lEtchLayer = setof(layer axlGetParam("paramLayerGroup:ETCH")->groupMembers nequal(axlDBGetLayerType(strcat("ETCH/" layer)) "LANE"))
        sCurLayerName = cadr(parseString(axlGetActiveLayer() "/"))
        if( member(sCurLayerName lEtchLayer) then
                if(prev then
                        iNextLayerNo = length(lEtchLayer) - length(member(sCurLayerName lEtchLayer))
                        when(iNextLayerNo < 1 iNextLayerNo = length(lEtchLayer))
                else
                        iNextLayerNo = length(lEtchLayer) - length(member(sCurLayerName lEtchLayer)) + 2
                        when(iNextLayerNo > length(lEtchLayer) iNextLayerNo = 1)
                )
        else
                iNextLayerNo = 1
        )
      
        sNextLayer = nthelem(iNextLayerNo lEtchLayer)
        axlMsgPut("Current Layer:%L" sNextLayer)
        axlVisibleDesign(nil)
    axlVisibleLayer( strcat("ETCH/" sNextLayer) t )
        axlVisibleLayer( strcat("IN/" sNextLayer) t )
        axlVisibleLayer( strcat("VIA CLASS/" sNextLayer) t )
        axlVisibleLayer( strcat("DRC ERROR CLASS/" sNextLayer) t )
    axlVisibleLayer( "BOARD GEOMETRY/OUTLINE" t )
        axlSetActiveLayer(strcat("ETCH/" sNextLayer))
        axlUIWRedraw(nil)
)
);end procedure

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号 )

GMT+8, 2024-4-24 01:26 , Processed in 0.164308 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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