下面的代码仅是一个例子,针对特定的情况,真正实用的还需要做进一步的处理,要考虑各种情况。

- [FONT=courier new]
- Sub test()
- Dim EntObj As AcadEntity
- Set EntObj = ThisDrawing.ModelSpace(0)
- ' 创建实体的包含外框
- Dim minPt As Variant
- Dim maxPt As Variant
- EntObj.GetBoundingBox minPt, maxPt
- Dim sPts(0 To 7) As Double
- sPts(0) = minPt(0): sPts(1) = minPt(1)
- sPts(2) = maxPt(0): sPts(3) = minPt(1)
- sPts(4) = maxPt(0): sPts(5) = maxPt(1)
- sPts(6) = minPt(0): sPts(7) = maxPt(1)
- Dim LWPlineObj As AcadLWPolyline
- Set LWPlineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(sPts)
- LWPlineObj.Closed = True
- Set EntObj = LWPlineObj
- EntObj.Visible = False
-
- ' 创建多义线
- Dim dPts(0 To 3) As Double
- Dim Pt As Variant
- Pt = ThisDrawing.Utility.GetPoint(, "指定第一点: ")
- dPts(0) = Pt(0): dPts(1) = Pt(1)
- Pt = ThisDrawing.Utility.GetPoint(Pt, "指定下一点: ")
- dPts(2) = Pt(0): dPts(3) = Pt(1)
- Set LWPlineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(dPts)
- ' 求交
- Dim Pts As Variant
- Pts = LWPlineObj.IntersectWith(EntObj, acExtendNone)
- ' 增加顶点
- Dim v(0 To 1) As Double
- v(0) = Pts(3): v(1) = Pts(4)
- LWPlineObj.AddVertex 1, v
- v(0) = sPts(6): v(1) = sPts(7)
- LWPlineObj.AddVertex 2, v
- v(0) = sPts(0): v(1) = sPts(1)
- LWPlineObj.AddVertex 3, v
- v(0) = Pts(0): v(1) = Pts(1)
- LWPlineObj.AddVertex 4, v
- EntObj.Delete
- End Sub
- [/FONT]
|