Re: [問題] 新手發問 VBA of AutoCAD
假設你把原來的物體切成八塊,
利用中心點物體和每一塊物體作交集合,
作出來的交集合物體,體積不是 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: 123.194.156.130
討論串 (同標題文章)
Cad_Cae 近期熱門文章
PTT數位生活區 即時熱門文章