作者sjgau (sjgau)
看板Cad_Cae
标题Re: [问题] 新手发问 VBA of AutoCAD
时间Sat Mar 17 08:05:01 2007
假设你把原来的物体切成八块,
利用中心点物体和每一块物体作交集合,
作出来的交集合物体,体积不是 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