符老师
我测试了ClosedElement.GetDifferenceShapes帮助文件里的例子,但是运行后没出现结果。
请问符老师,这个命令怎么用啊?能不能提供一个简单的测试例子。
我针对您的问题写过一个测试代码如下:
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得到第一个元素。
谢谢符老师,我去看下。