番茄 发表于 2003-4-14 20:22:00

arx问题:打开的实体怎么样才算关闭?

在arx编程中,首先进行了下列操作:

acdbOpenAcDbEntity(obj,eId2,AcDb::kForRead);
AcDbLine* objLine=AcDbLine::cast(obj);
p1=objLine->startPoint();
p2=objLine->endPoint();
objLine->close();
obj->close();

后来又要重新打开该直线实体,用
acdbOpenAcDbEntity(objEi2, eId2,AcDb::kForWrite);
可在cad里加载运行后,到这一句就报错说:……ewasOpenforWrite,到底是怎么回事啊?

番茄 发表于 2003-4-15 00:59:00

哈哈,是我自己搞错了!

不是重新打开实体报错,而是重新打开后没有关闭它,autocad报错!

我查了一晚才查出来,都怪条件分支太多了,看得有点晕!

lhbah 发表于 2003-4-15 16:48:00

我也是这个问题啊;

lhbah 发表于 2003-4-15 16:56:00

我也是这个问题啊;

可是我的只有这几句话,还是你这个错误;
ads_entsel(en,pt);
AcDbLine *pLine;
AcDbObjectId eId;
acdbGetObjectId(eId,en);
AcDbEntity *pEnt;
pa
acdbOpenObject(pEnt,eId,AcDb::kForWrite);//yu运行到这里就出现你一样的错误

番茄 发表于 2003-4-15 19:43:00

有没有用close关掉打开的实体啊?

可能是后面没有close你这句程序所打开的实体。

我的就是这样,以为后面的条件分支已经把所有的情况都包含进去了(每个分支都有close语句),其实不然,结果就是程序执行到最末也没把打开的实体关闭(这样cad也会报错)。
页: [1]
查看完整版本: arx问题:打开的实体怎么样才算关闭?