找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3193|回复: 2

[求助]:10几行代码,老说eWasOpenForWrite ,大家帮忙看看

[复制链接]
发表于 2005-12-23 12:28:58 | 显示全部楼层 |阅读模式

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

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

×
ads_name ent;
        ads_point pt;
        if(acedEntSel("\n选择要的多段线:",ent,pt)!=RTNORM) return;
        AcDbObjectId Id;
        acdbGetObjectId(Id,ent);
        acedSSFree(ent);
        AcGePoint3d point3d(550804.62,3074490.57,0);
        AcDbEntity *pEnt;
        Acad::ErrorStatus es = acdbOpenObject(pEnt,Id,AcDb::kForRead);
        AcDb3dPolyline *pPoly=AcDb3dPolyline::cast(pEnt);
        if(!pPoly) return ;
       
        AcDb3dPolylineVertex *point3dv = new AcDb3dPolylineVertex;

        pPoly->upgradeOpen ();
        point3dv->setPosition (point3d);
        pPoly->appendVertex (point3dv);
        pPoly->downgradeOpen ();
        pPoly->close();

Acad::ErrorStatus es = acdbOpenObject(pEnt,Id,AcDb::kForWrite);也是一样的错,老是eWasOpenForWrite,可我就acdbOpenObject了一次啊,而且返回的Acad::ErrorStatus es 是eOK。烦死我了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-12-23 23:13:57 | 显示全部楼层
大概看了一下,这句话有问题:
1、AcDb3dPolyline *pPoly=AcDb3dPolyline::cast(pEnt);
if(!pPoly) return ;

应改为:
AcDb3dPolyline *pPoly=AcDb3dPolyline::cast(pEnt);
if(!pPoly)
{
pEnt->close();
return;
}

2、应对upgradeOpen之类比较重要的调用进行返回值验证(建议)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-25 15:47:28 | 显示全部楼层
感谢二楼兄弟,
你说的问题1是在失败时候的保护,我没怎么考虑。因为是做实验在,他直会成功。
你说的问题2我看了,
es = pPoly->upgradeOpen ();
es = point3dv->setPosition (point3d);
es = pPoly->appendVertex (point3dv);
es = pPoly->downgradeOpen ();
返回的都是eOK;可过几秒就弹出对话框说 “内部错误: !scandr.cpp@787:eWasOpenForWrite”;但把pPoly->appendVertex (point3dv);
改成其他的如pPoly->erase(),就没有问题。应该是appendVertex 用的不对。可应该怎么用啊?过节还要想它好不爽啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 17:34 , Processed in 0.189160 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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