快速切换层面的skill
以下源码是可以按空格快速按顺序切换单个层面的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)
)
) 找到一个能实现需求的skill,但是加密了,看不到源码
skill说明如图
顶一下,这不是骗子,实测可用 我能说你tm是个骗子么
把defun()函数换成procedure()就可以在任何模式下,快速换层了 axlSetAlias("Pgup" "SwitchLayer nil");PageUp切换上一层
axlSetFunckey("Pgdown" "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)) "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)
)
);end procedure
..
亲测可用
页:
[1]