明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2301|回复: 7

getboundingbox的问题[求助]

[复制链接]
发表于 2003-4-4 16:15:00 | 显示全部楼层 |阅读模式
我想用getboundingbox方法得出图中所有图形图块 的最坐下和有上值
不知应如何做
我只知道lineobj.getboundingbox leftdown,rightup格式
请指教!
发表于 2003-4-4 16:28:00 | 显示全部楼层

整个BlockRef也可以啊,你查一下对象模型就知道

 楼主| 发表于 2003-4-5 13:34:00 | 显示全部楼层

再问

您好
我还是不太清楚,请再给点提示
谢谢
发表于 2003-4-5 17:22:00 | 显示全部楼层

看看以下程序

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.524675599953  117.533761691513    0
398.476153106531  210.91422748843    0
 楼主| 发表于 2003-4-8 11:29:00 | 显示全部楼层

请问斑竹

本帖最后由 作者 于 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编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2003-4-8 11:36:00 | 显示全部楼层

实用函数栏目中有一个函数你可以用

ssExtents  返回选择集中的最小和最大点  :
http://www.mjtd.com/function/list.asp?id=335&ordertype=bysort&orderkey=33
 楼主| 发表于 2003-4-8 17:11:00 | 显示全部楼层

再问,斑竹??

您好,您所介绍的函数我已试过了
函数名: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
发表于 2003-4-8 20:07:00 | 显示全部楼层

这又是另外一个函数,在实用函数栏目中可以找到

从指定点集里返回包含最小点和最大点的变体数组http://www.mjtd.com/function/list.asp?id=303&ordertype=byletter
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 18:52 , Processed in 0.186026 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表