db-_- 发表于 2025-07-24 12:08:20
没看懂图中的是pin的形状还是器件的外形?
4个顶点是形状的顶点还是box的顶点?
db-_- 发表于 2025-07-24 12:08:20
没看懂图中的是pin的形状还是器件的外形?
4个顶点是形状的顶点还是box的顶点?
athena_lu 发表于 2025-07-24 14:12:53
ABC是三视图?
可以参考一下 pin_angle=pin_one->rotation
pin_shape_soder_0=axlCopyObject(pin_shape_soder, ?angle -pin_angle)
pin_shape_soder_0_box=car(pin_shape_soder_0)->bBox
minXa=car(car(pin_shape_soder_0_box))
minYa=cadr(car(pin_shape_soder_0_box))
maxXa=car(cadr(pin_shape_soder_0_box))
maxYa=cadr(cadr(pin_shape_soder_0_box))
axlDeleteObject(car(pin_shape_soder_0))
axlDeleteObject(car(pin_shape_soder))
if(get_pin_defwidth==nil then
pin_thermal_width=get_thermal_width
pin_thermal_heigth=get_thermal_width
else
pin_thermal_width = abs(minXa-pin_x)
pin_thermal_heigth = abs(minYa-pin_y)
)
pin_exp_shape_soder_0=axlCopyObject(pin_expand_soder, ?angle -pin_angle)
pin_exp_shape_soder_0_box=car(pin_exp_shape_soder_0)->bBox
minXa0=car(car(pin_exp_shape_soder_0_box))
minYa0=cadr(car(pin_exp_shape_soder_0_box))
maxXa0=car(cadr(pin_exp_shape_soder_0_box))
maxYa0=cadr(cadr(pin_exp_shape_soder_0_box))
axlDeleteObject(car(pin_exp_shape_soder_0))
axlDeleteObject(car(pin_expand_soder))
;未旋转0度时PIN外扩顶点坐标
p1xy0=list(minXa0 minYa0)
p2xy0=list(maxXa0 minYa0)
p3xy0=list(maxXa0 maxYa0)
p4xy0=list(minXa0 maxYa0)
;旋转后的PIN外扩坐标,也就是当前PIN外扩顶点坐标
rodians=3.14159265358979*pin_angle/180
p1xy1=list((minXa0-pin_x)*cos(rodians)-(minYa0-pin_y)*sin(rodians)+pin_x (minXa0-pin_x)*sin(rodians)+(minYa0-pin_y)*cos(rodians)+pin_y)
p2xy1=list((maxXa0-pin_x)*cos(rodians)-(minYa0-pin_y)*sin(rodians)+pin_x (maxXa0-pin_x)*sin(rodians)+(minYa0-pin_y)*cos(rodians)+pin_y)
p3xy1=list((maxXa0-pin_x)*cos(rodians)-(maxYa0-pin_y)*sin(rodians)+pin_x (maxXa0-pin_x)*sin(rodians)+(maxYa0-pin_y)*cos(rodians)+pin_y)
p4xy1=list((minXa0-pin_x)*cos(rodians)-(maxYa0-pin_y)*sin(rodians)+pin_x (minXa0-pin_x)*sin(rodians)+(maxYa0-pin_y)*cos(rodians)+pin_y)
p12xy=list((car(p1xy1)+car(p2xy1))/2 (cadr(p1xy1)+cadr(p2xy1))/2)
p23xy=list((car(p2xy1)+car(p3xy1))/2 (cadr(p2xy1)+cadr(p3xy1))/2)
p34xy=list((car(p3xy1)+car(p4xy1))/2 (cadr(p3xy1)+cadr(p4xy1))/2)
p41xy=list((car(p4xy1)+car(p1xy1))/2 (cadr(p4xy1)+cadr(p1xy1))/2)
db-_- 发表于 2025-07-24 17:22:53
还是没看懂,你要外形的顶点坐标,你segment都有了,把segment的startEnd提取出来就好啦。
雞翅加辣 发表于 2025-07-28 15:45:03
沒這麼難啦~你把shape 轉成 polygon ,就可以取頂點(vertices)了。
不過抓vertices的缺點就是,如果你的shape是四邊形以上,可能就要判斷哪一個點會是你要的了!
| 欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) | Powered by Discuz! X3.2 |