找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 953|回复: 0

copyFrom和group的冲突?

[复制链接]
发表于 2006-8-31 16:44:55 | 显示全部楼层 |阅读模式

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

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

×
我写的截短曲线的算法。

首先找到截断的点,使用返回两条线,删除不需要的那条,为了保证objectId不变,我把新的曲线拷贝到旧曲线中。一切都正常。但是关闭的时候出现崩溃。
似乎跟前面把线加到group有关(这个group有别的用处不能去掉)。

这里似乎也不是copyFrom的问题。如果copyFrom的参数是一个别的对象(不是从getSplitCurves得到的),也不会有问题。



        ads_name ss,name;
        acedSSGet(NULL,NULL,NULL,NULL,ss);
        acedSSName(ss,0,name);
        acedSSFree(ss);
        AcDbObjectId id1;
        acdbGetObjectId(id1,name);


        AcDbDictionary *pGroupDict;
        acdbCurDwg()->getGroupDictionary(pGroupDict,AcDb::kForWrite);
        AcDbGroup *pGroup = new AcDbGroup();
        Acad::ErrorStatus err;
        AcDbObjectId groupId;
        if((err = pGroupDict->setAt("testGroup",pGroup,groupId)) != Acad::eOk)
        {
                delete pGroup;
                pGroupDict->close();
                return ;
        }
        pGroupDict->close();
        pGroup->append(id1);
        pGroup->close();


        ads_point pt;
        acedGetPoint(NULL,"\n选择一个点:",pt);
        AcGePoint3d pt1,out;
        pt1.set(pt[0],pt[1],pt[2]);

        AcDbPolyline *obj1;
        acdbOpenObject(obj1,id1,AcDb::kForWrite);
        obj1->getClosestPointTo(pt1,out);
        AcGePoint3dArray pts;
        pts.append(out);
        AcDbVoidPtrArray array;
        obj1->getSplitCurves(pts,array);

        AcDbPolyline* cur;//,cur1;
        cur =  static_cast<AcDbPolyline*>(array[1]);
        delete cur;
        cur =  static_cast<AcDbPolyline*>(array[0]);
        obj1->copyFrom(cur);
        delete cur;
        obj1->close();
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-14 20:49 , Processed in 0.281828 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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