我的测试代码只是测试每个is函数的最简单方法
- Public Sub Test_SphereTorus()
- Set oAcadDoc = ThisDrawing
- Dim oEllipse As AcadEllipse
- Dim oEnt As AcadEntity
- Dim oSphere As Acad3DSolid
- Dim oPoint As Variant
- Set oEnt = oAcadDoc.ModelSpace.AddSphere(MakePoint(0, 0, 0), 5)
- Set oSphere = oEnt
- MsgBox IsSphereTorus(oSphere)
- End Sub
- Public Function MakePoint(ByVal X As Double, ByVal Y As Double, ByVal Z As Double)
-
- Dim dCoordinate(0 To 2) As Double
-
- dCoordinate(0) = X
- dCoordinate(1) = Y
- dCoordinate(2) = Z
-
- MakePoint = dCoordinate
- End Function
长程代码将是一个条件循环或按需调用所有遇到或重新遇到的ModelSpace项。IsLine、IsCircle、IsEllipse、IsEllipseOpen等(所有二维对象都很容易识别),剩下的都是三维实体、IsSphere、IsCube、IsCylinder等。多段线和样条线最难识别,但在我们的图形中没有使用,因此不相关。
IS函数是我整个代码的各个部分的组成部分。起点/终点/中心点在不同类型的实体/对象之间有所不同,OSnap行为由传递的对象控制
例如,如果我想基于其他传递的几何体自动生成OSnap中心,我必须知道所述几何体是圆形还是球体,圆形是否为对象。中心,如果球体eRetval是object.centroid。因此,如果对象是Box或Cylinder类型,则返回其他对象
另一个例子是,如果在椭圆上寻找可用的捕捉点,我有IsEllipse和IsEllipseOpen…如果IsEllipse只有中心点和长度,则有可用的起点/终点和中心点。 |