在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3057|回复: 8

[求助] SKILL/Bindkey,如何在一句命令中指定多个目标?

[复制链接]
发表于 2021-4-18 12:18:42 | 显示全部楼层 |阅读模式
50资产
请问在写bindkey或者skill语言的时候,有没有什么办法能指定多个目标?

举个栗子1,我想设置数字键盘1的功能为,PO层和POC层可见,于是连续使用2次pteSetVisible:
list("<Key>KP_1" "pteSetVisible(\"PO drawing\" t \"layers\") pteSetVisible(\"POC drawing\" t \"layers\")")
所以能不能使用1次pteSetVisible,同时指定2个layer?

举个栗子2,我想设置数字键盘2的功能为,调整窗口1、2、3的大小为指定坐标,于是连续使用3次hiResizeWindow:
list("<Key>KP_2" "hiResizeWindow(window(1) list(0:0 1000:1000)) hiResizeWindow(window(2) list(0:0 1000:1000))  hiResizeWindow(window(3) list(0:0 1000:1000))")显而易见,要是1个命令里面能指定所有窗口all,或者特定窗口1、2、3,会方便许多。



最佳答案

查看完整内容

举个栗子1,我想设置数字键盘1的功能为,PO层和POC层可见,于是连续使用2次pteSetVisible: list("KP_1" "pteSetVisible(\"PO drawing\" t \"layers\") pteSetVisible(\"POC drawing\" t \"layers\")") 所以能不能使用1次pteSetVisible,同时指定2个layer?procedure( SetLayerVisible( ) let( ( LayerList) LayerList = list( "PO drawing" "POC drawing") foreach( layer LayerList pteSetVisi ...
发表于 2021-4-18 12:18:43 | 显示全部楼层
本帖最后由 annyzer 于 2021-4-19 14:48 编辑

举个栗子1,我想设置数字键盘1的功能为,PO层和POC层可见,于是连续使用2次pteSetVisible:
list("<Key>KP_1" "pteSetVisible(\"PO drawing\" t \"layers\") pteSetVisible(\"POC drawing\" t \"layers\")")
所以能不能使用1次pteSetVisible,同时指定2个layer?procedure( SetLayerVisible( )
    let( ( LayerList)
        LayerList = list( "PO drawing" "POC drawing")
        foreach( layer LayerList
            pteSetVisible( layer t "Layers")
        )
    )
)
hiSetBindKey("Layout" "<Key>KP_1" SetLayerVisible()")


举个栗子2,我想设置数字键盘2的功能为,调整窗口1、2、3的大小为指定坐标,于是连续使用3次hiResizeWindow:
list("<Key>KP_2" "hiResizeWindow(window(1) list(0:0 1000:1000)) hiResizeWindow(window(2) list(0:0 1000:1000))  hiResizeWindow(window(3) list(0:0 1000:1000))")显而易见,要是1个命令里面能指定所有窗口all,或者特定窗口1、2、3,会方便许多

procedure( SetWindowSize( )
    let( ( WindowList)
        WindowList = list( 1 2  3 )
        foreach( win WindowList
            hiResizeWindow( window( win) list(0:0 1000:1000))
        )
    )
)
hiSetBindKey("Layout" "<Key>KP_2" SetWindowSize()")


发表于 2021-4-18 14:41:36 | 显示全部楼层
不管你要做什么,有多复杂,把做什么的代码定义成一个函数。然后用 快捷键绑定调用这个函数不就可以了?
 楼主| 发表于 2021-4-19 09:36:23 | 显示全部楼层


amodaman 发表于 2021-4-18 14:41
不管你要做什么,有多复杂,把做什么的代码定义成一个函数。然后用 快捷键绑定调用这个函数不就可以了? ...


问题是一个Bindkey的上限是511字符,超标了
发表于 2021-4-19 10:42:11 | 显示全部楼层


搓芯片的酋长 发表于 2021-4-19 09:36
问题是一个Bindkey的上限是511字符,超标了


定义一个函数
procedure( myComplexBindKey()
    pteSetVisible(\"PO drawing\" t \"layers\")
    pteSetVisible(\"POC drawing\" t \"layers\")
)  

然后就是;
hiSetBindKey("Layout" "<Key>KP_1"  "myComplexBindKey()")

发表于 2021-4-19 13:17:38 | 显示全部楼层
把复杂的功能定义为函数, 即skill的procedure, 并且放到一个单独的文件中; 在cadence启动时load这个文件, 然后再定义一个bindkey指向这个procedure的名字即可. 511字符上限对于procedure的函数名一般是够用的吧.
 楼主| 发表于 2021-4-19 14:02:39 | 显示全部楼层


david_reg 发表于 2021-4-19 13:17
把复杂的功能定义为函数, 即skill的procedure, 并且放到一个单独的文件中; 在cadence启动时load这个文件,  ...


谢谢,原理明白了,这就去学procedure
发表于 2021-4-21 14:53:01 | 显示全部楼层


搓芯片的酋长 发表于 2021-4-19 14:02
谢谢,原理明白了,这就去学procedure


问题解决了吗
 楼主| 发表于 2021-4-22 14:04:44 | 显示全部楼层


谢谢谢谢!最近搓芯片太忙了,没看见
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-22 21:47 , Processed in 0.021873 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表