已知三点坐标,求外接圆半径与圆心坐标
数控加工定位时用到,随便测内孔上三点坐标就可得出孔半径和圆心坐标这个有点象坐标测量机测量用的
请大侠做成VBA格式
THANK!! Public Function GetCenOf3Pt(pt1 As Variant, pt2 As Variant, pt3 As Variant, _<BR> ByRef radius As Double) As Variant<BR> <BR> Dim xysm, xyse, xy As Double<BR> Dim ptCen(2) As Double<BR> <BR> xy = pt1(0) ^ 2 + pt1(1) ^ 2<BR> xyse = xy - pt3(0) ^ 2 - pt3(1) ^ 2<BR> xysm = xy - pt2(0) ^ 2 - pt2(1) ^ 2<BR> xy = (pt1(0) - pt2(0)) * (pt1(1) - pt3(1)) - (pt1(0) - pt3(0)) * (pt1(1) - pt2(1))<BR> <BR> '判断参数有效性<BR> If Abs(xy) < 0.000001 Then<BR> MsgBox "所输入的参数无法创建圆形!"<BR> Exit Function<BR> End If<BR> <BR> '获得圆心和半径<BR> ptCen(0) = (xysm * (pt1(1) - pt3(1)) - xyse * (pt1(1) - pt2(1))) / (2 * xy)<BR> ptCen(1) = (xyse * (pt1(0) - pt2(0)) - xysm * (pt1(0) - pt3(0))) / (2 * xy)<BR> ptCen(2) = 0<BR> radius = Sqr((pt1(0) - ptCen(0)) * (pt1(0) - ptCen(0)) + (pt1(1) - ptCen(1)) * (pt1(1) - ptCen(1)))<BR> <BR> If radius < 0.000001 Then<BR> MsgBox "半径过小!"<BR> Exit Function<BR> End If<BR> <BR> '函数返回圆心的位置,而半径则在参数中通过引用方式返回<BR> GetCenOf3Pt = ptCen<BR>End Function 这样来可以搞掂吧:
先在这三个点画出弧 再取出圆心和半径.
(COMMAND ".ARC" 第一点 第二点 第三点)
(SETQ S-ARC(ENTLAST));选到刚画的弧
(SETQ ARC-DXF (ENTGET S-ARC)); 弧的DXF组码
(SETQ ARC-CENTER (CDR (ASSOC 10 ARC-DXF)));圆心点提取
(SETQ RADIUS (CDR (ASSOC 40 ARC-DXF))); 半径提取 我想这样,在输入三个点的座标后能自动计算出圆心座标及其半径
THANK!!老大 ; 编程: 包达勇<BR>; 日期: 2004-11-08<BR>; 功能: 取三个不在同一直线点唯一的圆弧半径和圆心<BR>; 用法 (setq ARC-CR(B:GET-ARCenter-Radius <起点> <中点> <终点>))<BR>; 返回值 ( <半径> <圆心点> )<BR>(defun B:GET-ARCenter-Radius (SP MP EP / ARC-CENTER ARC-CP ARC-RADIUS BD-1 BD-2 BF-1 BF-2)<BR> (setq bd-1 (polar SP (angle SP MP) (* 0.5 (DISTANCE SP MP)))<BR> bd-2 (polar EP (angle EP MP) (* 0.5 (DISTANCE EP MP)))<BR> bf-1 (polar bd-1 (+ (* 0.5 pi)(angle SP MP)) 10.0)<BR> bf-2 (polar bd-2 (+ (* 0.5 pi)(angle EP MP)) 10.0)<BR> ARC-Center (inters bd-1 bf-1 bd-2 bf-2 NIL)<BR> ARC-Radius (DISTANCE MP ARC-CP))<BR> (list ARC-Radius ARC-Center )) 不好意思我看不懂LISP
只会VBA 写成EXE可以么? 本帖最后由 434939575 于 2022-6-12 12:33 编辑
BDYCAD 发表于 2005-2-20 08:48
; 编程: 包达勇; 日期: 2004-11-08; 功能: 取三个不在同一直线点唯一的圆弧半径和圆心; 用法 (setq AR ...感谢版主分享
页:
[1]