- UID
- 25232
- 积分
- 2113
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-1-12
- 最后登录
- 1970-1-1
|
发表于 2004-6-16 08:47:43
|
显示全部楼层
lzh741206斑竹写的更好!
- Sub BBB()
- '画圆
- Dim cen1(2) As Double
- Dim PD As Double, PL As Double, R As Double
- Dim Angle As Double, pAngle As Double
- Dim C As AcadCircle
- Dim P, P1 As Variant
- cen1(0) = 100: cen1(1) = 200: cen1(2) = 0
- R = 300
- Set C = ThisDrawing.ModelSpace.AddCircle(cen1, R)
- '取点
- P = ThisDrawing.Utility.GetPoint(, "请在圆外取一点:")
- '出错处理
- PD = dis(P, cen1)
- Do While PD <= R
- MsgBox ("点不在圆外,请重新输入!")
- P = ThisDrawing.Utility.GetPoint(, "请在圆外取一点:")
- PD = dis(P, cen1)
- Loop
- '画切线。
- PL = Sqr(PD ^ 2 - R ^ 2)
- pAngle = Atn(R / PL)
- Angle = ThisDrawing.Utility.AngleFromXAxis(P, cen1)
- P1 = ThisDrawing.Utility.PolarPoint(P, Angle + pAngle, PL)
- ThisDrawing.ModelSpace.AddLine P1, P
- P1 = ThisDrawing.Utility.PolarPoint(P, Angle - pAngle, PL)
- ThisDrawing.ModelSpace.AddLine P1, P
- End Sub
- Function dis(pa As Variant, pb As Variant) As Double
- dis = Sqr((pa(0) - pb(0)) ^ 2 + (pa(1) - pb(1)) ^ 2 + (pa(2) - pb(2)) ^ 2)
- End Function
|
|