在arx反应器的问题
<P>刚接触arx碰到个问题,希望高手指点一下,谢谢<BR>重载AcDbDatabaseReactor监控数据库对象反应器的objectAppended(const AcDbDatabase *db,const AcDbObject *pObj)函数,在该函数中我想创建一条直线<BR>函数如下:<BR>AcDbObjectId CreateLine(AcGePoint3d startPt,AcGePoint3d endPt)<BR>{ <BR> // AcGePoint3d startPt(1,1,0),endPt(700,100,0);//定义终点<BR> AcDbBlockTable* pBlockTable;//定义块表指针<BR> acdbCurDwg()->getBlockTable(pBlockTable,AcDb::kForRead);//获得当前图形块标指针<BR> AcDbBlockTableRecord* pBlockTableRecord;//定义块表</P><P> <FONT color=#f73809>Acad::ErrorStatus Entityerror = pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);<BR></FONT> <BR> //以写方式打开模型空间,获得块表记录指针<BR> pBlockTable->close();//关闭块表<BR> AcDbLine *pLine = new AcDbLine(startPt,endPt);//创建LINE对象<BR> AcDbObjectId LId;//定义标识符 <BR> pBlockTableRecord->appendAcDbEntity(LId,pLine);//将实体写入块表记录 <BR> pBlockTableRecord->close();//关闭块表记录<BR> pLine->close();<BR> lineListID.Add(LId);<BR> return LId; <BR>}<BR>函数运行到Acad::ErrorStatus Entityerror = pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);<FONT color=#ff0000>时返回eWasOpenForWrite</FONT>;请问一下有什么方法解决呀!谢谢</P> <P>这时候块表记录一定已经打开了,不然怎么到这反映器里</P>
<P>而且,你这样做是不是死循环~</P> <P>我现在是想在CAD中,当创建一条直线,当与另一条直线相交时,把另一条直线从交点处断开分成两个实体,或拖动一条直线与另一条直线相交时,把另一条直线从交点处断开分成两个实体。</P>
<P>刚学arx,不知道怎么弄,用反应器好像可以做到,可不知道怎么弄,你看看有什么其它的办法</P> <p>这个思路应该是可行的。</p>
页:
[1]