【MS V8i VBA】如何使2个EllipseElement求差集么?比如,画2个圆,然后做出一个圆环。

符老师

         我测试了ClosedElement.GetDifferenceShapes帮助文件里的例子,但是运行后没出现结果。

         请问符老师,这个命令怎么用啊?能不能提供一个简单的测试例子。

Parents
  • 我针对您的问题写过一个测试代码如下:

    Sub CreateGroupedHole()
        Dim oElem1 As ClosedElement, oElem2 As ClosedElement
        Set oElem1 = ActiveModelReference.GetElementByID(DLongFromLong(3169))
        Set oElem2 = ActiveModelReference.GetElementByID(DLongFromLong(3170))
        
        Dim ee As ElementEnumerator
        Set ee = oElem1.GetDifferenceShapes(oElem2)
        ee.MoveNext
        ActiveModelReference.AddElement ee.Current
    End Sub

    ElementID为3169的是外圆,3170的为内圆。最后生成一个圆环。请你绘制两个圆后用你的两个圆的ElementID替换我代码中的两个ID。或者临时创建两个圆oElem1和oElem2带入代码中即可。

    ClosedElement.GetDifferenceShapes返回一个元素枚举,需要拿到枚举中的第一个添加到模型中即可。



    Answer Verified By: 熊浩然 

  • 嗯,谢谢符老师,已经做出来了。

    这里还想多问一个问题,为啥要ee.movenext。这个语句执行了什么功能呢?在帮助里看不太懂。

  • ee.MoveNext第一次执行时会将ee.Current指向枚举中的第一个元素,第二次执行时让ee.Current指向第二个元素。

    对于我们这种情况,应该是没有第二个元素了。

    你可以参考一下所有VBA例子中用到ElementEnumerator的地方,都是需要先执行一次MoveNext得到第一个元素。



    Answer Verified By: 熊浩然 

Reply Children