您好,
我正在尝试获取图层上所有实体的边界框。
我希望能够通过EXCEL做到这一点。我试图修改可以在AutoCAD VBA中工作的AutoCAD VBA例程以在EXCEL中工作,但是我似乎错过了一些东西。请在下面查看我的代码。它在ss(0)..行失败。
请指教
谢谢
子Get_BoundingBox()
昏暗的XNAME作为字符串
'On Error Resume 下一页',这告诉VBA忽略错误
Set ACAD = GetObject(,“ 的AutoCAD.Application”)'获取类AutoCAD.Application的运行实例
Dim ssetObj作为AcadSelectionSet
暗号作为AcadSelectionSets
昏暗的acadobj作为AcadObject
昏暗的objname作为字符串
Dim ptllmin作为变体
Dim ptllmax作为变体
变暗HH作为变体
昏暗的objlayer作为字符串
Dim 恩tItem作为AcadEntity
昏暗我作为整数
暗角1(0至2)为双
暗角2(0至2)为双
corner1(0)= -10000000000#:corner1(1)= -10000000000#:corner1(2)= 0
corner2(0)= 10000000000#:corner2(1)= 10000000000#:corner2(2)= 0
I = 0
设置sset = ACAD.ActiveDocument.SelectionSets
对于每个sset
如果UCase(ssetObj.Name)=“ TEST”,则
sset.Item(“ TEST”)。删除
退出
万一
下一页
设置ssetObj = ACAD.ActiveDocument.SelectionSets.Add(“ TEST”)
'将所有对象添加到选择集中
ssetObj.Select acSelectionSetAll
Q $ = Chr(9)
对于ssetObj中的每个acadobj
objname = acadobj.ObjectName
objlayer = acadobj.Layer
HH = acadobj.Handle
Const X = 0
Const Y = 1
ss(0).GetBoundingBox ptMin,ptMax
对于ss中的每个entItem
ACAD.ActiveDocument.entItem.GetBoundingBox ptllmin,ptllmax
If ptllmin(X) <ptMin(X)然后ptMin(X)= ptllmin(X)
If ptllmin(Y) <ptMin(Y)然后ptMin(Y)= ptllmin(Y)
If ptllmax(X) >ptMax(X)然后ptMax(X)= ptllmax(X)
If ptllmax(Y) >ptMax(Y)然后ptMax(Y)= ptllmax(Y)
下一页
Sheet5.Cells(I,1).Value = I
Debug.Print objname,Q $,objlayer,Q $,HH
我=我+ 1
Sheet5.Cells(I,1).Value = I
Sheet5.Cells(I,2).Value = objname
Sheet5.Cells(I,3).Value = objlayer
Sheet5.Cells(I,4).Value = HH
Sheet5.Cells(I,5).Value = ptMin(X)
Sheet5.Cells(I,6).Value = ptMin(Y)
Sheet5.Cells(I,7).Value = ptMax(X)
Sheet5.Cells(I,7).Value = ptMax(Y)
下一个acadobj
结束子