[求助]识别图幅大小
请问各位版主、高手:今有一图,怎样判断它是A0、A1、A2、A3、A4中的哪一种,更确切地说是接近于哪一种呢?请贴个代码,谢谢!!! 问题是不是太小了,怎么没人回答呀 这样行吗?Public Function Extents(points)
Dim min, max
Dim i As Long, j As Long, pt, retVal(0 To 1)
min = points(LBound(points))
max = points(LBound(points))
For i = LBound(points) To UBound(points)
pt = points(i)
For j = LBound(pt) To UBound(pt)
If pt(j) < min(j) Then min(j) = pt(j)
If pt(j) > max(j) Then max(j) = pt(j)
Next
Next
retVal(0) = min: retVal(1) = max
Extents = retVal
End FunctionPublic 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 FunctionPublic Function CreateSelectionSet(Optional ssName As String = "ss") As AcadSelectionSet
Dim ss As AcadSelectionSet
On Error Resume Next
Set ss = ThisDrawing.SelectionSets(ssName)
If Err Then Set ss = ThisDrawing.SelectionSets.Add(ssName)
ss.Clear
Set CreateSelectionSet = ss
End FunctionSub kr_limit()
Dim ss As AcadSelectionSet
Set ss = CreateSelectionSet
ss.Select acSelectionSetAll
Dim retVal
retVal = ssExtents(ss)End Sub 问题是你的图幅实际是以什么来表示的?是做成图块的图框,还是只能通过范围来判断 这个问题没有一个通用的方法,只能针对一些特殊的情况进行处理,比如:可以把所有的图框都分别做成块A1,A2,A3,A4,然后在判断它的图块名称就知道它是几号图了,不知道有没有更好的方法? 我就这样做 通过范围来判断有点问题,计算量大不说,你怎么判断A1、A3幅面
还是判断图块名称好些,
如果是成套软件,可以考虑附在扩展数据上 我是全图后用extmin,extmax 谢谢大家的指点!!!
我们公司的图中比较乱,有块的也有用线画的,我原来的目的是用范围来判断,故编的上面的程序。此程序不知对不对?(后来测试了一下好像是对的,呵呵)
不过看了<A name=18038><FONT color=#990000><B>myfreemind</B></FONT></A>兄的回复,才知道原来还可以这样简单!!!谢谢!!!
我也觉得用块好些,准确! lzh741206发表于2004-5-14 22:56:00static/image/common/back.gif通过范围来判断有点问题,计算量大不说,你怎么判断A1、A3幅面
还是判断图块名称好些,
如果是成套软件,可以考虑附在扩展数据上
同意<b><EM>lzh741206</EM></b>兄的观点!!!但我从来不知道怎样运用扩展数据,惭愧!<b><EM>lzh741206</EM></b>兄能指点一下吗?谢谢!!!
页:
[1]
2