[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 'Select 条件1:选择类型<br>
Dim aaa1(0) As Variant 'select 条件2:选择图元<br>
Dim maxPoint As Variant<br>
Dim minPoint As Variant<br>
aaa(0) = 0 '图元类型<br>
aaa1(0) = "INSERT" '图块<br>
SelSet.Select acSelectionSetAll, , , aaa, aaa1 '选择所有图块<br>
For Each BlkRef In SelSet<br>
Debug.Print BlkRef.Name<br>
BlkRef.GetBoundingBox minPoint, maxPoint<br>
Next<br>
<br>
这段程序用来得到所有块的BoundingBox的,但是,得到的minPoint和maxPoint 都是Empty。 怎么回事呢?<br> Debug 是打出了块的Name。<br> 怎么没人来救救我啊 我怎末调试什么都不出现啊 程序有问题吗?试过是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 不公平啊,同样的程序 mccad 可以调出东西来,为什么我们就不行啊?<br> 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> <P>这个问题我也遇到了。GETBOUNDINGBOX我在程序中用过许多处。<BR>但是有一处对块参照或外部参照使用时,就出现范围值为空的情况。</P>
<P>程序代码我可以保证是对的。多次调试之后,只好认为是autocad的bug了。</P> 1.GETBOUNDINGBOX确实有些不稳定。<BR>2.它对于射线、构造线无效。如果你的块中包含有这样的对象,就无效。 <P>我也发现了它的不稳定。在带有属性的块的情况下,</P>
<P>有好多次它就突然失效了。代码一点没动过,很奇怪</P>
页:
[1]