tukuitk 发表于 2004-5-14 11:12:00

[求助]识别图幅大小

请问各位版主、高手:


今有一图,怎样判断它是A0、A1、A2、A3、A4中的哪一种,更确切地说是接近于哪一种呢?请贴个代码,谢谢!!!

tukuitk 发表于 2004-5-14 15:13:00

问题是不是太小了,怎么没人回答呀

tukuitk 发表于 2004-5-14 15:29:00

这样行吗?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

mccad 发表于 2004-5-14 20:17:00

问题是你的图幅实际是以什么来表示的?是做成图块的图框,还是只能通过范围来判断

ZKSJLL 发表于 2004-5-14 20:54:00

这个问题没有一个通用的方法,只能针对一些特殊的情况进行处理,比如:可以把所有的图框都分别做成块A1,A2,A3,A4,然后在判断它的图块名称就知道它是几号图了,不知道有没有更好的方法?

mccad 发表于 2004-5-14 21:02:00

我就这样做

雪山飞狐_lzh 发表于 2004-5-14 22:56:00

通过范围来判断有点问题,计算量大不说,你怎么判断A1、A3幅面



还是判断图块名称好些,


如果是成套软件,可以考虑附在扩展数据上

myfreemind 发表于 2004-5-14 23:26:00

我是全图后用extmin,extmax

tukuitk 发表于 2004-5-15 08:53:00

谢谢大家的指点!!!


我们公司的图中比较乱,有块的也有用线画的,我原来的目的是用范围来判断,故编的上面的程序。此程序不知对不对?(后来测试了一下好像是对的,呵呵)


不过看了<A name=18038><FONT color=#990000><B>myfreemind</B></FONT></A>兄的回复,才知道原来还可以这样简单!!!谢谢!!!


我也觉得用块好些,准确!

tukuitk 发表于 2004-5-15 08:56:00

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
查看完整版本: [求助]识别图幅大小