- UID
- 65790
- 积分
- 979
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-7-18
- 最后登录
- 1970-1-1
|
发表于 2004-6-19 08:15:50
|
显示全部楼层
哈哈!
这个是不是长不大斑主的入门练习题呀!
可是那个似乎是要求画角平分线。
看看我做的,是角平分线的,有lzh741206斑主要求的判断三点是否在一直线上。
根据lzh741206斑主的提示修改完毕![/COLOR]
[PHP]
Sub test()
Dim pt1, pt2, pt3 As Variant
Dim Line1 As AcadLine, Line2 As AcadLine, Line3 As AcadLine
Dim a1, a2, a3, da1, da2 As Double
'取得顶点,画三角形
pt1 = ThisDrawing.Utility.GetPoint(, "输入第一个顶点:")
pt2 = ThisDrawing.Utility.GetPoint(pt1, "输入第二个顶点:")
Set Line1 = ThisDrawing.ModelSpace.AddLine(pt1, pt2)
pt3 = ThisDrawing.Utility.GetPoint(pt2, "输入第三个顶点:")
a1 = ThisDrawing.Utility.AngleFromXAxis(pt1, pt2)
a2 = ThisDrawing.Utility.AngleFromXAxis(pt1, pt3)
a3 = ThisDrawing.Utility.AngleFromXAxis(pt3, pt1)
da1 = Abs(a1 - a2)
da2 = Abs(a1 - a3)
While da1 < 0.00001 Or da2 < 0.00001
pt3 = ThisDrawing.Utility.GetPoint(pt2, "错误:三点在同一直线上!!\n输入第三个顶点:")
a2 = ThisDrawing.Utility.AngleFromXAxis(pt1, pt3)
a3 = ThisDrawing.Utility.AngleFromXAxis(pt3, pt1)
da1 = Abs(a1 - a2)
da2 = Abs(a1 - a3)
Wend
Set Line2 = ThisDrawing.ModelSpace.AddLine(pt2, pt3)
Set Line3 = ThisDrawing.ModelSpace.AddLine(pt3, pt1)
'画角平分线
Call LineFromBisector(pt1, Line2)
Call LineFromBisector(pt2, Line3)
Call LineFromBisector(pt3, Line1)
End Sub
Function LineFromBisector(pt As Variant, Line As AcadLine) As AcadLine
Dim retangle1, retangle2, a As Double
Dim ps, pe, pt2, jd As Variant
ps = Line.StartPoint
pe = Line.EndPoint
retangle1 = ThisDrawing.Utility.AngleFromXAxis(pt, ps)
retangle2 = ThisDrawing.Utility.AngleFromXAxis(pt, pe)
a = (retangle1 + retangle2) / 2
pt2 = ThisDrawing.Utility.PolarPoint(pt, a, 10)
Set LineFromBisector = ThisDrawing.ModelSpace.AddLine(pt, pt2)
jd = Line.IntersectWith(LineFromBisector, acExtendBoth)
LineFromBisector.EndPoint = jd
End Function
[/PHP] |
|