找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 498|回复: 3

[求助]:请教关于选择对象的问题

[复制链接]
发表于 2004-4-1 16:06:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
有一条水平的AcDbXline,怎样可以方便地取到位于这条AcDbXline下方的对象呢?thx
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2004-4-2 11:43:04 | 显示全部楼层

Re: [求助]:请教关于选择对象的问题

最初由 bestmai 发布
[B]有一条水平的AcDbXline,怎样可以方便地取到位于这条AcDbXline下方的对象呢?thx [/B]


1、从XLINE上,得到两个方向相距满足图形要求的无限远的两点,比如距离一个点两边距离1E-10,1E10 (或者使用系统变量extmin,extmax得到当前图形的左下角,右上角坐标,分别求垂直于XLINE线和XLINE求得两个交点)
2、从上面两点,往下距离无限远比如距离1e10(或者用系统变量extmin得到当前图形左下角后得到距离),再得到两点。

3、上面四个点组成一个矩形,然后用acedSSGet(..)构建选择集即可。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-2 11:52:59 | 显示全部楼层
thx,我试过用acedSSGet了,用"C",加两点框选。
但acedSSGet只对应于当前数据库?如果想对应一个指定的AcDbDatabase*呢?

找到方法了,遍历对象,用getGeomExtents得到对象的边界,再用minPoint、maxPoint的坐标与AcDbXline的坐标比较就行了。

不过要注意的是getGeomExtents(AcDbExtents& extents)中的参数extent,要在调用前new一个新的AcDbExtents,调用完再delete,那个getGeomExtents只是往extents中添加点,并没有清除原来的,不用new和delete的话,extent就会变得很乱了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-13 11:04:28 | 显示全部楼层
我有一个想法不知道行不行:
首先取出你的AcDbXline的Y坐标假设为变量a
边历块表取出所有块表中的纪录,调用getGeomExtents判断是否MaxPoint(1)<=a
如果上面的判断成立就保留在选择集中,如果False就移出选择集,最后选择集中剩的结果集就是你要的东西。
沈阳 杜冰
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 14:57 , Processed in 0.367203 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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