Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1622|回复: 5

[求助] 重金求助///iy 跟随格点大小变化

[复制链接]
发表于 2023-4-7 11:20:25 | 显示全部楼层 |阅读模式
alias up iy 5/中的5这个数据,可以跟随格点的变化而变化,比如现在我的格点是5,当我执行一次up快捷键时,就往上走5个格点,当我格点设置成10的时候,我执行一次up命令,就可以往上走10个格点
 楼主| 发表于 2023-4-10 08:53:41 | 显示全部楼层
有没有人会呀 重金求助  
使用skill语言实现
发表于 2023-4-10 11:24:56 | 显示全部楼层
andyzhanglidan 发表于 2023-4-10 08:53
有没有人会呀 重金求助  
使用skill语言实现

哈哈,什么情况,没人回啊
发表于 2023-4-23 14:23:57 | 显示全部楼层
本帖最后由 skny2011 于 2023-4-23 14:25 编辑

第一步:获取当前格点,分ETCH和Non-ETCH
第二步:选择对象
第三步:判定对象是根据哪 种格点移动
第四步:移动即可

上下左右需要各定义一个函数
发表于 2023-4-23 14:26:27 | 显示全部楼层
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"))
发表于 2024-1-11 18:29:08 | 显示全部楼层
本帖最后由 zwzlove 于 2024-1-11 18:38 编辑

以前在网上下载的大佬的skill,自己修改了一下。
;原程序每步移动值默认为1,修改需要额外运行程序。
;更改后每步移动值跟随当前Top的Grid设置。


文件名:z_move_screen.il
加载方式:load("z_move_screen.il")
调用命令:无,启动自动加载。
功能介绍:
按栅格移动屏幕。按键盘上的方向键进行上下左右移动,每一次移动距离为当前GridTOP所设置的值。在Move命令下,按键盘上的方向键可以实现按照格点连续移动器件等。例如: 格点设置为5,在Move命令下,选中器件后,按键盘的向下键,器件向下移动,每一步移动距离为5,移动到目的位置后按鼠标左键放下器件。更改格点设置,每一步移动的距离也跟着格点更改。移动时Point需选择User Pick

z_move_screen.rar

1.01 KB, 下载次数: 0, 下载积分: 贡献 1

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

本版积分规则

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

GMT+8, 2024-4-25 05:30 , Processed in 0.144505 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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