Re: [問題] 新手發問 VBA of AutoCAD
但是,假設與兩物體所得的交集合分別是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
→
03/18 00:13, , 1F
03/18 00:13, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
Cad_Cae 近期熱門文章
PTT數位生活區 即時熱門文章