Re: [問題] 新手發問 VBA of AutoCAD

看板Cad_Cae (電腦輔助設計)作者 (sjgau)時間18年前 (2007/03/17 08:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
假設你把原來的物體切成八塊, 利用中心點物體和每一塊物體作交集合, 作出來的交集合物體,體積不是 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
文章代碼(AID): #15-p2ki7 (Cad_Cae)
討論串 (同標題文章)
文章代碼(AID): #15-p2ki7 (Cad_Cae)