我的测试代码只是测试每个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
远程代码将是遇到或重新遇到的所有模型空间项的条件循环或按需调用 ;IsLine、IsCircle、IsEllipse、IsEllipseOpen等(所有2D对象都很容易识别),剩下的是3D实体、IsSphere、IsCube、IsCylinder等;多段线和样条曲线最难识别,但在我们的图形中没有使用,因此无关紧要 
IS函数是我全部代码各个部分的组成部分 ;起点/终点/中心点在不同类型的实体/对象之间不同,对象捕捉行为由传递的对象控制
例如,如果我想基于其他传递的几何体自动生成OSnap中心,我必须知道所述几何体是圆形还是球体,如果圆形eRetVal是对象。中心,如果球体eRetval是object.centroid ;因此,如果对象是Box或圆柱体类型,则返回其他内容
另一个例子,如果在椭圆上寻找可用的捕捉点,我有IsEllipse和IsEllipseOpen…如果IsEllipse只有中心点和长度,则有开始/结束(&E);中心点可用。 |