uhuang 发表于 2005-8-13 11:04:00

[VBA]BlockRef 和GetBoundingBox的问题

代码如下:<br>
Dim BlkRef As AcadBlockReference<br>
Dim SelSet As AcadSelectionSet<br>
Set SelSet = AcadDoc.SelectionSets.Add("SelSet1")<br>
Dim aaa(0) As Integer&nbsp;&nbsp; 'Select 条件1:选择类型<br>
Dim aaa1(0) As Variant&nbsp; 'select 条件2:选择图元<br>
Dim maxPoint As Variant<br>
Dim minPoint As Variant<br>
aaa(0) = 0&nbsp;&nbsp;&nbsp;&nbsp; '图元类型<br>
aaa1(0) = "INSERT"&nbsp;&nbsp;&nbsp; '图块<br>
SelSet.Select acSelectionSetAll, , , aaa, aaa1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '选择所有图块<br>
For Each BlkRef In SelSet<br>
&nbsp; Debug.Print BlkRef.Name<br>
&nbsp; BlkRef.GetBoundingBox minPoint, maxPoint<br>
Next<br>
<br>
这段程序用来得到所有块的BoundingBox的,但是,得到的minPoint和maxPoint 都是Empty。 怎么回事呢?<br>

uhuang 发表于 2005-8-13 11:05:00

Debug 是打出了块的Name。<br>

uhuang 发表于 2005-8-13 14:17:00

怎么没人来救救我啊

mycad 发表于 2005-8-15 19:08:00

我怎末调试什么都不出现啊

mccad 发表于 2005-8-15 22:04:00

程序有问题吗?试过是OK的。For Each BlkRef In SelSet
Debug.Print BlkRef.Name
BlkRef.GetBoundingBox minPoint, maxPoint
Debug.Print minPoint(0)
Debug.Print maxPoint(0)
Next结果3
278.463452734819
516.445439272681
2
523.912385855595
715.06599226921
1
776.508228177512
1161.69556927903

uhuang 发表于 2005-8-16 09:54:00

不公平啊,同样的程序 mccad 可以调出东西来,为什么我们就不行啊?<br>

uhuang 发表于 2005-8-16 15:41:00

Re: mccad<br>
是不是块里含有什么特殊的东西,就不能用GetBoundingBox了呢?<br>
我的块里有:<br>
AcDbPolyline<br>
AcDbLine<br>
AcDbLine<br>
AcDbRotatedDimension<br>
AcDbText<br>
AcDbRotatedDimension<br>
AcDbText<br>
AcDbPolyline<br>
AcDbLine<br>
AcDbPolyline<br>
AcDbText<br>
AcDbText<br>
AcDbRotatedDimension<br>
AcDbLine<br>
<br>

evaporated 发表于 2006-5-11 11:26:00

<P>这个问题我也遇到了。GETBOUNDINGBOX我在程序中用过许多处。<BR>但是有一处对块参照或外部参照使用时,就出现范围值为空的情况。</P>
<P>程序代码我可以保证是对的。多次调试之后,只好认为是autocad的bug了。</P>

mccad 发表于 2006-5-11 11:55:00

1.GETBOUNDINGBOX确实有些不稳定。<BR>2.它对于射线、构造线无效。如果你的块中包含有这样的对象,就无效。

evaporated 发表于 2006-8-1 08:58:00

<P>我也发现了它的不稳定。在带有属性的块的情况下,</P>
<P>有好多次它就突然失效了。代码一点没动过,很奇怪</P>
页: [1]
查看完整版本: [VBA]BlockRef 和GetBoundingBox的问题