急!请教高手
我编的打断线条的代码,为了测试,再求出交点后,在交点位置生成acdbtext,显示交点序号。命令执行后,如果删除生成的文字,autocad就会出现 scran.cpp!eHadMultipltReader的错误,然后死掉。请教高手到底是啥子问题。代码如下:
Acad::ErrorStatus TOMbreakEnt(ads_name entSrc,ads_name entDis,int &intersectNum)<BR>{<BR> AcDbEntity *pEntSrc,*pEntDis;<BR> AcDbObjectId idSrc,idDis;<BR> if (entSrc==entDis && entSrc==entDis)<BR> return Acad::eInetUnknownError;<BR> if (acdbGetObjectId(idDis,entDis)!=Acad::eOk)<BR> return Acad::eInetUnknownError;<BR> if (acdbOpenObject(pEntDis,idDis,AcDb::kForRead)!=Acad::eOk)<BR> return Acad::eInetUnknownError;<BR> if (!pEntDis->isKindOf(AcDbCurve::desc()) )<BR> return Acad::eInetUnknownError;
if (acdbGetObjectId(idSrc,entSrc)!=Acad::eOk)<BR> return Acad::eInetUnknownError;<BR> if (acdbOpenObject(pEntSrc,idSrc,AcDb::kForRead)!=Acad::eOk)<BR> return Acad::eInetUnknownError;
AcGePoint3dArray aIntersect;<BR> AcGePoint3d or(0,0,0);<BR> AcGeVector3d vx(1,0,0),vy(0,1,0);<BR> AcGePlane pl(or,vx,vy);<BR> ads_name entLast;<BR> ads_point p1;<BR> //pEntDis->intersectWith(pEntSrc,AcDb::kOnBothOperands,pl,aIntersect);<BR> pEntSrc->intersectWith(pEntDis,AcDb::kOnBothOperands,pl,aIntersect);<BR> pEntSrc->close();<BR> pEntDis->close();<BR> if (aIntersect.length()>intersectNum)<BR> intersectNum=aIntersect.length();<BR> AcDbText *pText;<BR> char text;<BR> if (!aIntersect.isEmpty()){<BR> for (long i=aIntersect.length()-1;i>=0;i--){<BR> p1=(aIntersect);<BR> p1=(aIntersect);<BR> p1=(aIntersect);<BR> acedCommand(RTSTR,"_break",RTLB, RTENAME, entDis, RTPOINT, p1, RTLE,RTPOINT,p1,RTNONE);
//测试用代码,如果把文字的插入点改为一样的,比如AcGePoint3d point1
//pText=new AcDbText(point1,text,AcDbObjectId::kNull,1,0)就不会出错了<BR> sprintf(text,"%d",i);<BR> pText=new AcDbText(aIntersect,text,AcDbObjectId::kNull,1,0);<BR> AddEntity(pText);<BR> pText->close();<BR> }<BR> }<BR> return Acad::eOk;<BR>}<BR> acedCommand(RTSTR,"_break",RTLB, RTENAME, entDis, RTPOINT, p1, RTLE,RTPOINT,p1,RTNONE);
you delete this line.maybe error caused because of this line.
try.
good luck! 我解决乐,是有些entdis已经在上层函数中打开了,结果不能调用break打断它
页:
[1]