getboundingbox的问题[求助]
我想用getboundingbox方法得出图中所有图形图块 的最坐下和有上值不知应如何做
我只知道lineobj.getboundingbox leftdown,rightup格式
请指教!
整个BlockRef也可以啊,你查一下对象模型就知道
再问
您好我还是不太清楚,请再给点提示
谢谢
看看以下程序
Sub GetBox()Dim Ent As AcadEntity
Dim Pnt As Variant
ThisDrawing.Utility.GetEntity Ent, Pnt, "Select Object:"
Dim MinPnt As Variant
Dim MaxPnt As Variant
Ent.GetBoundingBox MinPnt, MaxPnt
Debug.Print Ent.ObjectName
Debug.Print MinPnt(0) & ""; MinPnt(1) & " "; MinPnt(2)
Debug.Print MaxPnt(0) & ""; MaxPnt(1) & " "; MaxPnt(2)
End Sub
出来的效果:
AcDbBlockReference
287.524675599953117.533761691513 0
398.476153106531210.91422748843 0
请问斑竹
本帖最后由 作者 于 2003-4-8 11:29:16 编辑要解决的问题如下图:(做一个框子把他们包上)
步骤:
〉〉先做一个便历,测出图中所有图元
〉〉做一个循环找出他们中的最大最小点
Sub ppppp()
Dim min As Variant
Dim max As Variant
Dim i As Integer
Dim j As Integer
Dim minp(0 To 2) As Double
Dim maxp(0 To 2) As Double
i = ThisDrawing.SelectionSets.Count
j = i
While (i > 0)
Set sset = ThisDrawing.SelectionSets.Item(i - 1)
sset.GetBoundingBox min, max'问题可能出在这
'将右端最大值复给 maxp 将左端最小值复给 minp
'一下程序就不写出了
End Sub
不好意思麻烦各位了!
[此贴子已经被作者于2003-4-7 21:46:05编辑过]
[此贴子已经被作者于2003-4-8 11:28:23编辑过]
实用函数栏目中有一个函数你可以用
ssExtents返回选择集中的最小和最大点:http://www.mjtd.com/function/list.asp?id=335&ordertype=bysort&orderkey=33
再问,斑竹??
您好,您所介绍的函数我已试过了函数名:ssExtents
我想问一下:
Dim leo
leo = ssExtents(sset)
此过程中leo所得到的是什么,是数阻还是两个点
也就是,正如函数说明中介绍的返回选择集中的最小和最大点
她是以何种形式返回,请指教
================================================
另外,最后那句ssExtents = Extents(points)
编译时出错,不知何故(我想这函数应没问题的)
Public Function ssExtents(ss As AcadSelectionSet) As Variant
Dim points(), c As Long
Dim min, max, util As AcadUtility
Set util = ThisDrawing.Utility
c = 0
For i = 0 To ss.Count - 1
ss.Item(i).GetBoundingBox min, max
min = util.TranslateCoordinates(min, acWorld, acUCS, False)
max = util.TranslateCoordinates(max, acWorld, acUCS, False)
ReDim Preserve points(0 To c + 1)
points(c) = min: points(c + 1) = max
c = c + 2
Next
ssExtents = Extents(points)
End Function
这又是另外一个函数,在实用函数栏目中可以找到
从指定点集里返回包含最小点和最大点的变体数组http://www.mjtd.com/function/list.asp?id=303&ordertype=byletter
页:
[1]