AutoCAD VBA:过三点创建一个圆

基本思路,两点连线,两个线段中垂线交点就是圆心,圆心到任一点距离为半径,做圆。

代码如下:

Function BisectorPLine(Point1 As Variant, point2 As Variant) As AcadPolyline
Dim Dist As Double
Dim Circle1 As AcadCircle
Dim Circle2 As AcadCircle
Dim Pnts As Variant
Dist = Distance(Point1, point2)
Set Circle1 = ThisDrawing.ModelSpace.AddCircle(Point1, Dist)
Set Circle2 = ThisDrawing.ModelSpace.AddCircle(point2, Dist)
Pnts = Circle1.IntersectWith(Circle2, acExtendNone)
Set BisectorPLine = ThisDrawing.ModelSpace.AddPolyline(Pnts)
End Function


Function Distance(Points1 As Variant, point2 As Variant) As Double
Dim Line As AcadLine
Set Line = ThisDrawing.ModelSpace.AddLine(Point1, point2)
Distance = Line.Length
Line.Delete
End Function


Function ThreePointCircle(pnt1 As Variant, pnt2 As Variant, pnt3 As Variant) As AcadCircle
Dim Dist As Double
Dim Pnts As Variant
Dim Line1 As AcadPolyline
Dim Line2 As AcadPolyline
Set Line1 = BisectorPLine(pnt1, pnt2)
Set Line2 = BisectorPLine(pnt1, pnt3)
Pnts = Line1.lntersectwith(Line2, acExtendBoth)
Line1.Delete
Line2.Delete
Dist = Distance(Pnts, pnt1)
Set ThreePointCircle = ThisDrawing.ModelSpace.AddCircle(Pnts, Dist)
End Function

Public Sub DrawCircle()
Dim P1 As Variant
Dim P2 As Variant
Dim P3 As Variant
P1 = ThisDrawing.Utility.GetPoint(, vbCr & "第一点:")
P2 = ThisDrawing.Utility.GetPoint(, vbCr & "第二点:")
P3 = ThisDrawing.Utility.GetPoint(, vbCr & "第三点:")
Dim C As AcadCircle
Set C = ThreePointCricle(P1, P2, P3)
End Sub

不知道这些代码放在哪,悲剧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值