Skill语言学习_7🦽
使用Skill语言,完成MOS管的栅极金属层向不同方向衍伸

Skill版本:
getSkillVersion
"SKILL35.00"
>
学习参考:
[ Skill ] Cadence Skill 语言入门 - YEUNGCHIE - 博客园
脚本思路:
1、提取框选区域的所有M1金属层id列表;
2、用鼠标选取一个参考点;
3、确定M1金属层的延伸方向并延伸。
设计操作:
1、提取框选区域的所有M1金属层id列表;
获取当前选中的所有图形对象,存入 selected;
selected = geGetSelSet()
2、用鼠标选取一个参考点;
point = enterPoint(?points mouseAddPt())
3、确定M1金属层的延伸方向并延伸。
foreach(fig selected
oldBBox = fig~>bBox
width = caadr(oldBBox) - caar(oldBBox)
height = cadadr(oldBBox) - cadar(oldBBox)
newBBox = nil
when(cadr(point) > cadadr(oldBBox) && height < width
newBBox = list(car(oldBBox),list(caadr(oldBBox),cadar(oldBBox) + newWidth))
);when
when(cadr(point) < cadadr(oldBBox) && height < width
newBBox = list(list(caar(oldBBox),cadadr(oldBBox) - newWidth),cadr(oldBBox))
);when
fig~>bBox = newBBox
);foreach
整合上述代码,并绑定快捷键:
;Stupid-Monkey
;2026/03/05
;M1=0.38
procedure(changeM1Width(newWidth)
let((selected point fig oldBBox width height newBBox)
selected = geGetSelSet()
point = enterPoint(?points mouseAddPt())
foreach(fig selected
oldBBox = fig~>bBox
width = caadr(oldBBox) - caar(oldBBox)
height = cadadr(oldBBox) - cadar(oldBBox)
newBBox = nil
when(cadr(point) > cadadr(oldBBox) && height < width
newBBox = list(car(oldBBox),list(caadr(oldBBox),cadar(oldBBox) + newWidth))
);when
when(cadr(point) < cadadr(oldBBox) && height < width
newBBox = list(list(caar(oldBBox),cadadr(oldBBox) - newWidth),cadr(oldBBox))
);when
fig~>bBox = newBBox
);foreach
);let
);procedure
hiSetBindKey("Layout" "Ctrl<Key>5" "changeM1Width(0.38)")
测试该脚本:

将该脚本写入.cdsinit文件自动load
在桌面打开Terminal,输入:
cd
gedit .cdsinin
在.cdsinit文件内,load脚本的全路径:
load("/home/~~/~~/~~/changeM1Width.il")

浙公网安备 33010602011771号