找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1795|回复: 8

[求助]:什么原因造成选择集失效?

[复制链接]
发表于 2005-9-21 11:03:24 | 显示全部楼层 |阅读模式

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

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

×
我的一个ARX程序,使用了十多个选择集。
用acedSSGet获得某选择集以后,都使用acedSSFree释放了该选择集。
但是打开某个dwg文件,反复运行该程序几次以后,还是出现选择集选择不到实体的现象。
请问什么原因造成了选择集的失效?
使用了超过128个选择集?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 21个

财富等级: 恭喜发财

发表于 2005-9-28 15:07:03 | 显示全部楼层
asd_name ss;
.....
..........
acedSSFree(ss);
//增加以下代码试试
ss[0]=ss[1]=NULL;
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-28 16:04:23 | 显示全部楼层
最初由 ygyyjy 发布
[B]asd_name ss;
.....
..........
acedSSFree(ss);
//增加以下代码试试
ss[0]=ss[1]=NULL; [/B]


谢谢指教!
刚刚试过,还是不起作用:(
请问加上的这行代码是什么意思呢?

继续努力中……
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-28 20:22:48 | 显示全部楼层
选择集是不太好操作的。
我上次的问题是复制选择集,结果勉强能够用,还不完善。
也许是我们还没有理解透彻吧,期待有经验的朋友贡献详细的操作方法和实例。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-29 09:12:58 | 显示全部楼层
万无一失的办法是将选择集中的内容保存到一个AcDbObjectIdArray中,立即释放此选择集。如果还有问题的话,那是你的程序别的地方出事了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-29 10:18:50 | 显示全部楼层
严重同意masterhe的 方法,俺是吃了很多亏,才最后这样做的。
如果选择集 选不中物体的话,还有可能是  要选的实体不在当前的视图范围内, 这样你用 CP,F,C等 选择方式的话,肯定是不能选中的。
我一般是 先 zoom一下,然后在做选择集合;)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-30 21:43:12 | 显示全部楼层
谢谢各位的提示!!

我做的十几个选择集都在读出实体名后立即释放了。
只有一个ssname没有马上释放,而是将另外两个选择集的实体名也存入了该选择集。
使用了:acedSSAdd(name,ssname,ssname);  
然后才读出ssname中的实体名,释放ssname。
不知是不是acedSSAdd出了问题?
我先去试试masterhe说的方法。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-2 22:04:15 | 显示全部楼层

标准选择集合构造工程示例代码

void Function()
{
        CString strEntityTeyp = "ARC";
        struct resbuf *pRb = NULL;
        pRb = acutBuildList(RTDXF0, strEntityTeyp,  0);
       if(NULL == pRb)
           eturn;
           
        ads_name ss;
        int nRet = acedSSGet(NULL, NULL, NULL, pRb, ss);
        if(RTNORM != nRet)
        {
                acutRelRb(pRb);
                return;
        }
        acutRelRb(pRb);

        long nLen = 0;
        if(RTNORM != acedSSLength(ss, &nLen) || nLen <= 0)
        {
                acedSSFree(ss);
                return;
        }

        ads_name ename;
        AcDbObjectId eId = AcDbObjectId::kNull;
        AcDbObjectIdArray eARCIdArray;
        eARCIdArray.setLogicalLength(0);
        for(long i = 0; i < nLen; i++)
        {
                if(RTNORM != acedSSName(ss, i, ename))
                        continue;
                if(Acad::eOk != acdbGetObjectId(eId, ename))
                        continue;

                //LabelStadisDistance(eId);
        }
        acedSSFree(ss);}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-9 09:09:33 | 显示全部楼层
以上各位的建议我都试过了,还是没有解决:(
还有其他的什么思路,希望各位高手提一提。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 00:24 , Processed in 0.337583 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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