重金求助///iy 跟随格点大小变化
alias up iy 5/中的5这个数据,可以跟随格点的变化而变化,比如现在我的格点是5,当我执行一次up快捷键时,就往上走5个格点,当我格点设置成10的时候,我执行一次up命令,就可以往上走10个格点 有没有人会呀 重金求助使用skill语言实现 andyzhanglidan 发表于 2023-4-10 08:53
有没有人会呀 重金求助
使用skill语言实现
哈哈,什么情况,没人回啊 本帖最后由 skny2011 于 2023-4-23 14:25 编辑
第一步:获取当前格点,分ETCH和Non-ETCH
第二步:选择对象
第三步:判定对象是根据哪 种格点移动
第四步:移动即可
上下左右需要各定义一个函数
skny2011 发表于 2023-4-23 14:23
第一步:获取当前格点,分ETCH和Non-ETCH
第二步:选择对象
第三步:判定对象是根据哪 种格点移动
代码看是否能满足你所需求
axlCmdRegister("moveUpByGrid" 'moveUpByGrid)
axlCmdRegister("moveDownByGrid" 'moveDownByGrid)
axlCmdRegister("moveLeftByGrid" 'moveLeftByGrid)
axlCmdRegister("moveRightByGrid" 'moveRightByGrid)
procedure(moveByGridStart(mode)
prog(( grid etchDx etchDy nEtchDx nEtchDy)
grid = axlDBGridGet("TOP")
etchDx=car(grid->xGrids)
etchDy=car(grid->yGrids)
grid = axlDBGridGet("non-etch")
nEtchDx=car(grid->xGrids)
nEtchDy=car(grid->yGrids)
done=nil
dx = 0 dy = 0
filterList=list("noall" "Symbols" "Vias" "Clines" "Lines" "Shapes" "Text")
axlSetFindFilter( ?enabled filterList ?onButtons filterList)
mark = axlDBTransactionStart()
while( !done
axlClearSelSet()
axlSelect()
dbSelList = axlGetSelSet()
when(dbSelList
axlDBTransactionMark(mark)
foreach(dbSel dbSelList
if( axlDBIsFixed(dbSel) then
printf("FIXED, Ignore...\n")
else
dbType=dbSel->objType
when(dbType=="path" && !dbSel->isEtch dbType="line")
case(dbType
(("line" "text")
case(mode
("UP" dx=0 dy=nEtchDy)
("DOWN" dx=0 dy=-nEtchDy)
("LEFT" dx=-nEtchDx dy=0)
("RIGHT" dx=nEtchDx dy=0)
)
)
(t
case(mode
("UP" dx=0 dy=etchDy)
("DOWN" dx=0 dy=-etchDy)
("LEFT" dx=-etchDx dy=0)
("RIGHT" dx=etchDx dy=0)
)
)
)
axlTransformObject( dbSel ?move dx:dy )
)
)
)
case( axlUIGetUserData()->doneState
(done done=t funUserDone(mark) axlUIWPrint(nil "Done!"))
(cancel done=t funUserCancel(mark) axlUIWPrint(nil "Cancel!"))
)
)
)
)
procedure(moveUpByGrid() moveByGridStart("UP"))
procedure(moveDownByGrid() moveByGridStart("DOWN"))
procedure(moveLeftByGrid() moveByGridStart("LEFT"))
procedure(moveRightByGrid() moveByGridStart("RIGHT")) 本帖最后由 zwzlove 于 2024-1-11 18:38 编辑
以前在网上下载的大佬的skill,自己修改了一下。
;原程序每步移动值默认为1,修改需要额外运行程序。
;更改后每步移动值跟随当前Top的Grid设置。
文件名:z_move_screen.il加载方式:load("z_move_screen.il")调用命令:无,启动自动加载。功能介绍:按栅格移动屏幕。按键盘上的方向键进行上下左右移动,每一次移动距离为当前Grid中TOP所设置的值。在Move命令下,按键盘上的方向键可以实现按照格点连续移动器件等。例如: 格点设置为5,在Move命令下,选中器件后,按键盘的向下键,器件向下移动,每一步移动距离为5,移动到目的位置后按鼠标左键放下器件。更改格点设置,每一步移动的距离也跟着格点更改。移动时Point需选择User Pick。
66666666666666
页:
[1]