作者gavintsou (toward)
看板Cad_Cae
标题[问题] 新手发问 VBA of AutoCAD
时间Sat Mar 17 02:59:27 2007
需求:欲产生出多个 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.5.141
1F:推 sjgau:请问你学 AutoCAD VBA, 采用哪一本中文或英文书?麻烦介绍 03/17 07:55
2F:推 gavintsou:1. AutoCad 2000 activeX与VBA开发人员手册 03/17 13:51
3F:→ gavintsou:2. AutoCad 2000 activeX与VBA参考手册 03/17 13:53
4F:→ gavintsou:1 就像一本入门书,教你如何进入VBA 介绍各个物件的层级 03/17 13:55
5F:→ gavintsou:2 就像 msdn 而且每一个method都有不错的example 03/17 13:56
6F:→ gavintsou:2不用买,因为进到VBA的环境中,按F1就有完整说明 03/17 13:57
7F:→ gavintsou:不管是 AutoCad ActiveX and VBA Reference 03/17 14:00
8F:→ gavintsou:或是 Visual Basic 语法说明...两者都很完整 03/17 14:02
9F:推 sjgau:谢谢!等我看一看,再跟你讨论 03/17 22:23