hillskysea 发表于 2009-5-15 21:20

vba中阵列后遍历的问题


如图所示,遍历图中实体后,与圆柱进行布尔运算结果出现了这种情况。部分代码如下。
gearObj = gearR.ArrayPolar(gearZ, 6.28, InsertPnt)                                                'gearR是单个轮齿,gearz是齿数,InsertPnt是中心点
Set cylinder = acadApp.ActiveDocument.ModelSpace.AddCylinder(pnt, Rf, L )
Dim obj
For Each obj In gearObj
cylinder.Boolean 0, obj                               '跟基圆圆柱进行并运算
Next
Dim cylinder2 As Object
Set cylinder2 = acadApp.ActiveDocument.ModelSpace.AddCylinder(pnt, Ra, L )
cylinder2.Boolean 1, cylinder

woaishuijia 发表于 2010-1-30 11:33

导致问题的原因有两个:
1、阵列方法的返回值是新生成的对象数组,这其中不包含原始对象。当你遍历数组与圆柱并集时遗漏了原始对象,所以图上有一个轮齿没有并集;
2、360度环形阵列,角度不应该用6.28,而要用ThisDrawing.Utility.AngleToReal(180, acDegrees) * 2。否则,CAD会把它做为弧度6.28的部分圆周看待,所以,与图上没有被并集的原始轮齿很近的地方还有一个被并集的齿,这是在阵列中生成的最后一个,它与原始轮齿的夹角是6.28弧度。就是说,轮齿并没有按360度圆周阵列。
页: [1]
查看完整版本: vba中阵列后遍历的问题