明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2560|回复: 5

如何在AcDbDatabase中使用类似acedSSGet的方法选择对象?

[复制链接]
发表于 2002-11-20 18:09:00 | 显示全部楼层 |阅读模式
各位前辈,我想打开一个指定文件名的DWG文件,将其中的部分对象作为外部块插入到当前图形。可以无法找到一种方法可以不在当前图形中选择对象。请问该怎么实现?
发表于 2002-11-20 18:45:00 | 显示全部楼层

ok

先定义选择集
   ads_name  SS;
   acedSSGet(NULL,NULL,NULL,NULL,ss);
此时,你所选择的对象已经被ss标记
若是想改变选择方式(比如窗选、Crossing选等,可以通过改变前面几个参数)
 楼主| 发表于 2002-11-20 19:03:00 | 显示全部楼层

谢谢,但这只能在当前图形选择

怎么在没有显示的图形中创建选择集并选择?
发表于 2002-11-21 08:31:00 | 显示全部楼层

在没有显示的图形中创建选择集并选择?如何选择?大概先要显示图形吧

首先,对你的需求我作这样的假设:你需要将非活动文档显示给用户,并由用户完成选择,然后切换回原来的活动文档。是不是这样?
如此,程序将牵涉ACAD多文档处理,只能在ACAD 2000以上版本及相应的ARX中实现,在此给你一个基本思路,实现的具体细节你须参考ARX帮助中的AcAp类库。
先给当前文档解除锁定,然后打开新文档。在这要注意,打开文档不是acedReadDwgFile(),这样只是打开AcDbDatebase数据库,不能完成用户交互的aced命令。要使用AcApDocManager->openDocument()。
然后,将新文档置为活动文档并锁定。此后你可以使用acedSSGet()获得选择集,完成之后,再切换回原来的文档。
估计大致如此,你先试试。
 楼主| 发表于 2002-11-21 12:11:00 | 显示全部楼层

谢谢你的建议,这基本能满足我的需求,其实我的程序不需要用户交互

谢谢你的建议,这基本能满足我的需求,其实我的程序不需要用户交互。
你提的方法我没有用过,我昨天利用浏览器对块表进行遍历,我的想法是判断对象是否在制定的区域内,如果是,将它加入到ArrayID中,最后由wblock方法创建为外部块,在插入到当前图形中。所有的过程都可以实现,就是不知道该怎么判断对象是否在制定的区域内。请问该怎么实现?
 楼主| 发表于 2002-11-21 19:52:00 | 显示全部楼层

废了很大劲,还是没有实现你的思路,能否贴出部分代码,谢谢了

不管怎么着,程序总是停在acDocManager->openDocument();的位置除非使用Ctrl+Tab切换到原来的图形,不然无法继续执行。老大,请务必说明这个思路的关键所在啦。最好是写一些代码来。太感谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 10:05 , Processed in 0.151500 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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