空间变化

第一种:圆

第二种: 矩形

第三种:正五边形

第四种:正六边形

第五种:腰圆

算法:

在规则图形(不包括圆心-直径法)中,等于或者超过三个点。一般的,利用p1,p2,p3来建立一个用户坐标系,其中P1作为原点,P2是x方向,P3是Y方向
切入点是从P1与p2的中心进行切入。也就是图形的激光切割点。
setframe(p1,p2,p3,fframe)
nXradio=distance(p1.trsf,p2.trsf)/2
需要求出所有规则图形的最大的内切圆的圆心和半径。
除去引线与打孔点。
圆:4个点    三角形:5个点   矩形:6个点   五边形:7个点  六边形:8个点   腰圆:8个点

圆心-直径法:
R1=Pcenter*{ndiameter/2,0,0,0,0,0}
R2=Pcenter*{0,ndiameter/2,0,0,0,0}
R3=Pcenter*{-ndiameter/2,0,0,0,0,0}
R4=Pcenter*{0,-ndiameter/2,0,0,0,0}

三点法圆:
通过三点法求的外接圆的圆心和直径,就可以使用圆心-直径法来获取。
通过获取fframe,知道在p1,p2,p3,在{0,0,0,0,0,0},{x2,0,0,0,0,0,0},{x3,y3,0,0,0,0}
由于圆心到三个点的距离相等,可以假设圆心{xc,yc,0,0,0,0} 可求的xc,yc, xc=x2/2, yc=y3*y3+x3*x3-x2x3/2y3,
通过圆心与其中一个点的距离乘以2就获得直径,就可以使用圆心-直径法。

三角形:
都是在fframe中
R1={nxradio/2,0,0,0,0,0}
R2=P2->fframe
R3=P3->fframe
R4=P1->fframe
R5={nxradio/2,0,0,0,0,0}

矩形:
都是在fframe中
R1={nxradio/2,0,0,0,0,0}
R2=P2->fframe
R3=P3->fframe
R4={distance(p2.trsf,p3.trsf),0,0,0,0,0}
R5=P1->frame
R6={nxradio/2,0,0,0,0,0}

五边形:
都是在fframe中
R1={nxradio/2,0,0,0,0,0}
R2=P2->fframe
R3=P3->fframe
R4={distance(p2.trsf,p3.trsf),0,0,0,0,0}
R5=P1->frame
R6={nxradio/2,0,0,0,0,0}

六边形:
都是在fframe中
R1={nxradio/2,0,0,0,0,0}
R2=P2->fframe
R3=P3->fframe
R4={distance(p2.trsf,p3.trsf),0,0,0,0,0}
R5=P1->frame
R6={nxradio/2,0,0,0,0,0}

腰形孔:
都是在fframe中
R1={nxradio/2,0,0,0,0,0}
R2=P2->fframe
R3=P3->fframe
R4={distance(p2.trsf,p3.trsf),0,0,0,0,0}
R5=P1->frame
R6={nxradio/2,0,0,0,0,0}

原文地址:https://www.cnblogs.com/shumaojie/p/3031015.html