EDA365电子论坛网

标题: 修改线距的Skill [打印本页]

作者: 我真是个小天才    时间: 2022-4-14 08:55
标题: 修改线距的Skill
想开发一个Skill “通过框选Clines,弹出修改窗口,输入指定线距后线距Air Gap直接改变”
请各位大佬能否提供一下思路????????



作者: db-_-    时间: 2022-4-14 09:16
整体思路:针对每个cline seg,重新计算修改间距后的坐标,重新绘制clineseg。

算坐标应该是最大的计算量了。

如果是纯直线,还是比较好算的。如果涉及到arc,计算会很麻烦。

如果还有T点、超短的cline seg,就更难处理了。

此外,还要考虑cline首尾的处理,可能涉及到交点计算。
还有对于一条cline包含多段不同线宽或者不同间距,也需要判断并处理。
作者: 我真是个小天才    时间: 2022-4-14 10:17
db-_- 发表于 2022-04-14 09:16:12
整体思路:针对每个cline seg,重新计算修改间距后的坐标,重新绘制clineseg。

算坐标应该是最大的计算量了。

如果是纯直线,还是比较好算的。如果涉及到arc,计算会很麻烦。

如果还有T点、超短的cline seg,就更难处理了。

此外,还要考虑cline首尾的处理,可能涉及到交点计算。
还有对于一条cline包含多段不同线宽或者不同间距,也需要判断并处理。


哇哦,我受教了,感谢大佬解惑

作者: 我真是个小天才    时间: 2022-4-14 10:55
db-_- 发表于 2022-04-14 09:16:12
整体思路:针对每个cline seg,重新计算修改间距后的坐标,重新绘制clineseg。

算坐标应该是最大的计算量了。

如果是纯直线,还是比较好算的。如果涉及到arc,计算会很麻烦。

如果还有T点、超短的cline seg,就更难处理了。

此外,还要考虑cline首尾的处理,可能涉及到交点计算。
还有对于一条cline包含多段不同线宽或者不同间距,也需要判断并处理。


麻烦再问一下,如果是只调整一段Cline(一小段一小段)的线距,会不会稍微容易一些?如果不用坐标计算还有没有别的定位间距方法?



作者: db-_-    时间: 2022-4-14 11:07
我真是个小天才 发表于 2022-04-14 10:55:53
[quote]db-_- 发表于 2022-04-14 09:16:12
整体思路:针对每个cline seg,重新计算修改间距后的坐标,重新绘制clineseg。

算坐标应该是最大的计算量了。

如果是纯直线,还是比较好算的。如果涉及到arc,计算会很麻烦。

如果还有T点、超短的cline seg,就更难处理了。

此外,还要考虑cline首尾的处理,可能涉及到交点计算。
还有对于一条cline包含多段不同线宽或者不同间距,也需要判断并处理。


麻烦再问一下,如果是只调整一段Cline(一小段一小段)的线距,会不会稍微容易一些?如果不用坐标计算还有没有别的定位间距方法?


[/quote]

我只知道计算坐标,删了重新画,这一种方法。其他方法没见过。


作者: 我真是个小天才    时间: 2022-4-14 11:22
db-_- 发表于 2022-04-14 11:07:04
[quote]我真是个小天才 发表于 2022-04-14 10:55:53
[quote]db-_- 发表于 2022-04-14 09:16:12
整体思路:针对每个cline seg,重新计算修改间距后的坐标,重新绘制clineseg。

算坐标应该是最大的计算量了。

如果是纯直线,还是比较好算的。如果涉及到arc,计算会很麻烦。

如果还有T点、超短的cline seg,就更难处理了。

此外,还要考虑cline首尾的处理,可能涉及到交点计算。
还有对于一条cline包含多段不同线宽或者不同间距,也需要判断并处理。


麻烦再问一下,如果是只调整一段Cline(一小段一小段)的线距,会不会稍微容易一些?如果不用坐标计算还有没有别的定位间距方法?


[/quote]

我只知道计算坐标,删了重新画,这一种方法。其他方法没见过。

[/quote]

哦哦,好滴,感谢

作者: fantasyqqq    时间: 2022-4-14 13:07
没搞过
作者: leilei4908    时间: 2022-4-21 08:48
db-_- 发表于 2022-4-14 09:16
整体思路:针对每个cline seg,重新计算修改间距后的坐标,重新绘制clineseg。

算坐标应该是最大的计算 ...

获取当前airgap,利用 slide 指令,计算 所需的偏移量
应该比重新绘制要方便

作者: db-_-    时间: 2022-4-21 09:38
leilei4908 发表于 2022-4-21 08:48
获取当前airgap,利用 slide 指令,计算 所需的偏移量
应该比重新绘制要方便

先修改规则,然后用axlShell("slide") 加cline se坐标 推挤每一段cline seg吗?
作者: leilei4908    时间: 2022-4-22 08:54
db-_- 发表于 2022-4-21 09:38
先修改规则,然后用axlShell("slide") 加cline se坐标 推挤每一段cline seg吗?

axlShell("setwindow pcb")
        axlShell("slide")
        axlShell(sprintf(nil,"pick grid %f %f",x,y))
        axlShell(sprintf(nil,"ipick %f %f",car(pxy)*1.0,cadr(pxy)*1.0))
        axlShell("done")
x y 是 clineseg 的 中点
pxy 是 clineseg 要移动的相对位置
这是计算出来的数值


作者: 我真是个小天才    时间: 2022-4-22 09:15
leilei4908 发表于 2022-4-22 08:54
axlShell("setwindow pcb")
        axlShell("slide")
        axlShell(sprintf(nil,"pick grid %f %f",x,y))

学习到了,感谢

作者: bashao    时间: 2022-4-22 09:17
期待功力大成
作者: db-_-    时间: 2022-4-22 11:01
leilei4908 发表于 2022-4-22 08:54
axlShell("setwindow pcb")
        axlShell("slide")
        axlShell(sprintf(nil,"pick grid %f %f",x,y))

强!有空根据这个思路试试。

作者: leilei4908    时间: 2022-4-22 13:54
本帖最后由 leilei4908 于 2022-4-22 14:13 编辑
db-_- 发表于 2022-4-22 11:01
强!有空根据这个思路试试。

理论上是平行线平推
定一个基准线,第一根线的中心是起点,中垂线方向,距离基准线 t_airgap 的 坐标是终点(平移 t_airgap - airgap)
       或者也可以根据 axlAirGap 提供的起、始点坐标和 airgap,根据 t_airgap:airgap 这个比例去换算终点的坐标(貌似这个更容易实现)                发现一个问题,airgap显示的是四位小数,坐标显示的是两位(精度2),但实际上都是六位小数,用两位小数的坐标去换算,会有一定的误差
下一根线的基准线,就是上一根线





作者: db-_-    时间: 2022-4-24 09:14
leilei4908 发表于 2022-4-22 13:54
理论上是平行线平推
定一个基准线,第一根线的中心是起点,中垂线方向,距离基准线 t_airgap 的 坐标是 ...

想法真不错~你那边实现了没?还是现在停留在理论上?

作者: leilei4908    时间: 2022-4-25 10:59
db-_- 发表于 2022-4-24 09:14
想法真不错~你那边实现了没?还是现在停留在理论上?

单根平推原本就有
就是基于第一种理论

现在要设计整组平推
目前还没时间去处理,只是理论基础

作者: db-_-    时间: 2022-4-25 12:42
leilei4908 发表于 2022-04-25 10:59:09
[quote]db-_- 发表于 2022-4-24 09:14
想法真不错~你那边实现了没?还是现在停留在理论上?

单根平推原本就有
就是基于第一种理论

现在要设计整组平推
目前还没时间去处理,只是理论基础
[/quote]

感觉会遇到很多细节的处理问题,我现在也没时间弄这个。我还是先完善一下我那个重绘的。






欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2