作者gavintsou (toward)
看板Cad_Cae
标题Re: [问题] 新手发问 VBA of AutoCAD
时间Sat Mar 17 14:36:05 2007
但是,假设与两物体所得的交集合分别是tmp1 与 tmp2,
并且假设 tmp1没有交集合,而tmp2有交集合
同时VBA也提供 Volumn,来进行体积的回传(回传double)
现在如果我先宣告一个变数 vol 为double
vol = tmp2.Volumn '这一行没错,因为tmp2确实有一个物件存在
vol = tmp1.Volumn '但是这一行就会出错了....因为没有物件存在,所以读取错误
ps. 我不是要做正多面体,我想做不规则多面体...
※ 引述《sjgau (sjgau)》之铭言:
: 假设你把原来的物体切成八块,
: 利用中心点物体和每一块物体作交集合,
: 作出来的交集合物体,体积不是 0 的,
: 即为所要保留的物体。
: 但是,中心点物体 相对於其他物体,
: 要显得很小,才不会同时和两个物体有交集合。
: 我猜测 你是要做 正多面体,
: 作正多面体有更快的方法。
: ※ 引述《gavintsou (toward)》之铭言:
: : 需求:欲产生出多个 3D 多面体
: : 方法:先产生出正方体,再利用 SliceSolid 方法切
: : 假设所切的面,都不会切到 原始正方体的中心点,
: : 换句话说,想保留下来的部份都是要包含中心点的那个部份
: : 但是,不知道要如何判断哪一个部份有包含中心点.....
: : 所以想说中心点也成为一个3D物件
: : 用 CheckInterference 方法,来判断到底所切出来的两个部份
: : 哪一个含有中心点
: : 照理来说含有中心点的部份,会回传物件,但是不知道用什麽函数才能判断
: : 是否有回传物件......
: : Sub MySub()
: : Dim ccObj As Acad3DSolid
: : Dim boxObj As Acad3DSolid
: : Dim sliceObj As Acad3DSolid
: : center(0) = 11.12: center(1) = 5.56: center(2) = 1.11
: : '建立中心点物件
: : Set ccObj = ThisDrawing.ModelSpace.AddBox(center, 0.001, 0.001, 0.001)
: : '建立正方体
: : Set boxObj = ThisDrawing.ModelSpace.AddBox(center, 5.45, 5.45, 5.45)
: : sp1(0) = 10.74: sp1(1) = 4.22: sp1(2) = 0.52
: : sp2(0) = 9.75: sp2(1) = 5.92: sp2(2) = 0.14
: : sp3(0) = 12.48: sp3(1) = 5.2: sp3(2) = 0.36
: : '进行切割
: : Set sliceObj = boxObj.SliceSolid(sp1, sp2, sp3, True)
: : Dim tmp1 As Acad3DSolid
: : Dim tmp2 As Acad3DSolid
: : '判断中心点物件ccObj 是否与boxObj 有重叠的部份,有则传回重叠的部份
: : Set tmp1 = boxObj.CheckInterference(ccObj, True)
: : '同理
: : Set tmp2 = sliceObj.CheckInterference(ccObj, True)
: : ' 问题来了,要怎样判断哪一个物件里面有实体物件
: : ' 请问有什麽函数可以判断吗?
: : '
: : ' 或是各位有更好的判断方法呢????
: : End Sub
: : 感谢回答
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.229.2.25
1F:→ gavintsou:感谢各位....问题解决了... 03/18 00:13