CAD设计论坛

 找回密码
 立即注册
论坛新手常用操作帮助系统等待验证的用户请看获取社区币方法的说明新注册会员必读(必修)
查看: 2005|回复: 1

[求助] vba中阵列后遍历的问题

[复制链接]
发表于 2009-5-15 21:20 | 显示全部楼层 |阅读模式

8 x$ o7 h; m5 P) p; v8 |8 @, P$ m$ c如图所示,遍历图中实体后,与圆柱进行布尔运算结果出现了这种情况。部分代码如下。3 R5 E- k! _% i% _4 u
gearObj = gearR.ArrayPolar(gearZ, 6.28, InsertPnt)                                                  'gearR是单个轮齿,gearz是齿数,InsertPnt是中心点
& z+ B' I% ^9 U: h8 |9 V5 c, MSet cylinder = acadApp.ActiveDocument.ModelSpace.AddCylinder(pnt, Rf, L )
. G7 J: K+ T; Y# S5 H* g2 vDim obj
9 s/ y- \2 p. b8 h) wFor Each obj In gearObj- G9 K- s8 D5 f+ J
cylinder.Boolean 0, obj                               '跟基圆圆柱进行并运算# `  M: r* P" B. d% |1 z) ?& g
Next' B8 g" t9 h  Q/ j
Dim cylinder2 As Object
) T% u& s8 r+ D7 v. {5 o$ ZSet cylinder2 = acadApp.ActiveDocument.ModelSpace.AddCylinder(pnt, Ra, L )% G1 m6 i  N9 l' L* X1 G
cylinder2.Boolean 1, cylinder

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
发表于 2010-1-30 11:33 | 显示全部楼层
导致问题的原因有两个:
  W1 ^- R7 b! |3 I6 B1 p3 O1、阵列方法的返回值是新生成的对象数组,这其中不包含原始对象。当你遍历数组与圆柱并集时遗漏了原始对象,所以图上有一个轮齿没有并集;" l: x5 @  X6 X# q9 P
2、360度环形阵列,角度不应该用6.28,而要用ThisDrawing.Utility.AngleToReal(180, acDegrees) * 2。否则,CAD会把它做为弧度6.28的部分圆周看待,所以,与图上没有被并集的原始轮齿很近的地方还有一个被并集的齿,这是在阵列中生成的最后一个,它与原始轮齿的夹角是6.28弧度。就是说,轮齿并没有按360度圆周阵列。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于|免责|隐私|版权|广告|联系|手机版|CAD设计论坛

GMT+8, 2024-11-26 11:37

CAD设计论坛,为工程师增加动力。

© 2005-2024 askcad.com. All rights reserved.

快速回复 返回顶部 返回列表