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

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

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 638|回复: 14

[原创] 一个处理连线的skill脚本

[复制链接]
发表于 2025-4-9 16:04:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 着着着火了 于 2025-4-9 16:11 编辑

作用:快速拼接或连接两条或两组线头

用法:在CIW窗口load AutoCutBus.il,然后先选中要处理的线组,之后用绑定的快捷键数字键盘5或者AutoCutBus()调用,最后选一个point作为两组线头交接的参考点。

此脚本最初来自chinarml写的AutoCutBus.il(https://bbs.eetop.cn/forum.php?m ... 878287&pid=10253030),下下来发现有些问题就丢在一边了,最近频繁需要用到这样的功能就捡起来自己改了一版,虽然还有部分原来的代码以及沿用了实现的思路,但基本已经大变样了,所以勉强算是我写的吧。

1.原来的脚本直接通过算法得出交接处的参考点,本来没什么问题,但因为有如下的情况出现:
AutoCutBus2.png
原脚本的横纵线分类是通过其头尾坐标差的绝对值之差得出,在上图中的上面那根线,我们要的是其作为横向的线来连接,但因算法的缘故就被分类到了纵向的线,所以出错。
所以我改成了手动指定参考点的方式来计算分类横纵线。

2.增加了一个enterForm来增强使用效果,具体如下图所示:
AutoCutBus1.png

3.选参考点时尽量选正常点
AutoCutBus3.png

4.当线头不理想时会出现如下情况,考虑到出现的情况不多就不想写那么多条件去适应了
AutoCutBus4.png


5.原来的脚本处理不了pathSeg,此脚本也增加了可处理pathSeg的功能,在partial Select模式下pathSeg只选一个线头的话会有一点不理想,但依然能用。

AutoCutBus.zip

2.13 KB, 下载次数: 29 , 下载积分: 资产 -2 信元, 下载支出 2 信元

 楼主| 发表于 前天 11:09 | 显示全部楼层
更新版2.0


修复了用x的edit in place在Hierarchy编辑模式下refPoint不准确的bug。
增加了一个51能用的版本(其实就是把与过孔有关的那些代码删了,51还不知道怎么设置custmer auto via,有知道的吗?)

AutoCutBus.zip

2.19 KB, 下载次数: 4 , 下载积分: 资产 -2 信元, 下载支出 2 信元

AutoCutBus_51.zip

1.75 KB, 下载次数: 1 , 下载积分: 资产 -2 信元, 下载支出 2 信元

发表于 2025-4-9 16:53:10 | 显示全部楼层
报错怎么办,*ERROR* viaGetViaOptions: Invalide cst object - nil
 楼主| 发表于 2025-4-9 17:08:37 | 显示全部楼层
本帖最后由 着着着火了 于 2025-4-9 17:09 编辑


522526tl 发表于 2025-4-9 16:53
报错怎么办,*ERROR* viaGetViaOptions: Invalide cst object - nil


找一下你的constrainGroupName,在版图界面按Shitf+e打开Layout Editor Options,看看wire的constraint Group(via默认选的是"Same as Wire")是不是脚本中写的那个,不是就改成你环境用的那个
发表于 2025-4-9 17:37:41 | 显示全部楼层
火佬,请问这个自动打孔函数需要什么版本才能用呀,617 layout_L能用嘛
 楼主| 发表于 2025-4-9 18:02:43 | 显示全部楼层


youxing 发表于 2025-4-9 17:37
火佬,请问这个自动打孔函数需要什么版本才能用呀,617 layout_L能用嘛


我用的就是617,正常的L模式。
没条件测试,61之上估计都能用吧

发表于 2025-4-9 18:06:40 | 显示全部楼层


着着着火了 发表于 2025-4-9 17:08
找一下你的constrainGroupName,在版图界面按Shitf+e打开Layout Editor Options,看看wire的constraint Gr ...


改了又继续报错


dbGetq: object is a purged/freed object - db:0xb1c491a6
dbGetq: object is a purged/freed object - db:0xb1c491a6
*Error* difference: can't handle (nil - 1)

 楼主| 发表于 2025-4-10 09:37:55 | 显示全部楼层
本帖最后由 着着着火了 于 2025-4-10 09:40 编辑


522526tl 发表于 2025-4-9 18:06
改了又继续报错


看起来是在处理pathSeg那块出错了,你用path尝试吧
发表于 2025-4-10 09:56:09 | 显示全部楼层


着着着火了 发表于 2025-4-10 09:37
看起来是在处理pathSeg那块出错了,你用path尝试吧


好的,我试试。thanks
发表于 2025-4-10 10:10:23 | 显示全部楼层


着着着火了 发表于 2025-4-10 09:37
看起来是在处理pathSeg那块出错了,你用path尝试吧



我根据报错注销了这一句pathSeg就好了
mapcar('dbDeleteObject objs1)
 楼主| 发表于 2025-4-10 10:33:39 | 显示全部楼层


522526tl 发表于 2025-4-10 10:10
我根据报错注销了这一句pathSeg就好了
mapcar('dbDeleteObject objs1)


旧的pathSeg不删也不会出错,就是会留在那里和新的重合在一起。

正常旧的pathSeg删了也不应该会报你的那些错,后面没有通过pathSeg获取属性值的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-4-18 12:14 , Processed in 0.030191 second(s), 9 queries , Gzip On, MemCached On.

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