乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 153|回复: 9

[求助]识别图幅大小

[复制链接]

36

主题

201

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
345
发表于 2004-5-14 11:12:00 | 显示全部楼层 |阅读模式
请问各位版主、高手:
今有一图,怎样判断它是A0、A1、A2、A3、A4中的哪一种,更确切地说是接近于哪一种呢?请贴个代码,谢谢!!!
回复

使用道具 举报

36

主题

201

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
345
发表于 2004-5-14 15:13:00 | 显示全部楼层
问题是不是太小了,怎么没人回答呀
回复

使用道具 举报

36

主题

201

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
345
发表于 2004-5-14 15:29:00 | 显示全部楼层
这样行吗?
  1.   Public Function Extents(points)
  2.        Dim min, max
  3.        Dim i As Long, j As Long, pt, retVal(0 To 1)
  4.        min = points(LBound(points))
  5.        max = points(LBound(points))
  6.        For i = LBound(points) To UBound(points)
  7.                pt = points(i)
  8.                For j = LBound(pt) To UBound(pt)
  9.                        If pt(j)  max(j) Then max(j) = pt(j)
  10.                Next
  11.        Next
  12.        retVal(0) = min: retVal(1) = max
  13.        Extents = retVal
  14. End FunctionPublic Function ssExtents(ss As AcadSelectionSet) As Variant
  15.        Dim points(), c As Long
  16.        Dim min, max, util As AcadUtility
  17.        Set util = ThisDrawing.Utility
  18.        c = 0
  19.        For i = 0 To ss.Count - 1
  20.                ss.Item(i).GetBoundingBox min, max
  21.                min = util.TranslateCoordinates(min, acWorld, acUCS, False)
  22.                max = util.TranslateCoordinates(max, acWorld, acUCS, False)
  23.                ReDim Preserve points(0 To c + 1)
  24.                points(c) = min: points(c + 1) = max
  25.                c = c + 2
  26.        Next
  27.        ssExtents = Extents(points)
  28. End FunctionPublic Function CreateSelectionSet(Optional ssName As String = "ss") As AcadSelectionSet
  29.        Dim ss As AcadSelectionSet
  30.        On Error Resume Next
  31.        Set ss = ThisDrawing.SelectionSets(ssName)
  32.        If Err Then Set ss = ThisDrawing.SelectionSets.Add(ssName)
  33.        ss.Clear
  34.        Set CreateSelectionSet = ss
  35. End FunctionSub kr_limit()
  36.   Dim ss As AcadSelectionSet
  37.   Set ss = CreateSelectionSet
  38.   ss.Select acSelectionSetAll
  39.   Dim retVal
  40.   retVal = ssExtents(ss)End Sub
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2004-5-14 20:17:00 | 显示全部楼层
问题是你的图幅实际是以什么来表示的?是做成图块的图框,还是只能通过范围来判断
回复

使用道具 举报

4

主题

22

帖子

4

银币

初来乍到

Rank: 1

铜币
38
发表于 2004-5-14 20:54:00 | 显示全部楼层
这个问题没有一个通用的方法,只能针对一些特殊的情况进行处理,比如:可以把所有的图框都分别做成块A1,A2,A3,A4,然后在判断它的图块名称就知道它是几号图了,不知道有没有更好的方法?
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2004-5-14 21:02:00 | 显示全部楼层
我就这样做
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-5-14 22:56:00 | 显示全部楼层
通过范围来判断有点问题,计算量大不说,你怎么判断A1、A3幅面还是判断图块名称好些,
如果是成套软件,可以考虑附在扩展数据上
回复

使用道具 举报

41

主题

657

帖子

9

银币

中流砥柱

Rank: 25

铜币
821
发表于 2004-5-14 23:26:00 | 显示全部楼层
我是全图后用extmin,extmax
回复

使用道具 举报

36

主题

201

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
345
发表于 2004-5-15 08:53:00 | 显示全部楼层
谢谢大家的指点!!!
我们公司的图中比较乱,有块的也有用线画的,我原来的目的是用范围来判断,故编的上面的程序。此程序不知对不对?(后来测试了一下好像是对的,呵呵)
不过看了myfreemind兄的回复,才知道原来还可以这样简单!!!谢谢!!!
我也觉得用块好些,准确!
回复

使用道具 举报

36

主题

201

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
345
发表于 2004-5-15 08:56:00 | 显示全部楼层

同意lzh741206兄的观点!!!但我从来不知道怎样运用扩展数据,惭愧!lzh741206兄能指点一下吗?谢谢!!!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-15 17:24 , Processed in 3.048272 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表