tianao 发表于 2006-3-14 10:02:00

在arx反应器的问题

<P>刚接触arx碰到个问题,希望高手指点一下,谢谢<BR>重载AcDbDatabaseReactor监控数据库对象反应器的objectAppended(const AcDbDatabase *db,const AcDbObject *pObj)函数,在该函数中我想创建一条直线<BR>函数如下:<BR>AcDbObjectId CreateLine(AcGePoint3d startPt,AcGePoint3d endPt)<BR>{&nbsp;&nbsp; <BR>&nbsp;//&nbsp;AcGePoint3d startPt(1,1,0),endPt(700,100,0);//定义终点<BR>&nbsp;AcDbBlockTable* pBlockTable;//定义块表指针<BR>&nbsp;acdbCurDwg()-&gt;getBlockTable(pBlockTable,AcDb::kForRead);//获得当前图形块标指针<BR>&nbsp;AcDbBlockTableRecord* pBlockTableRecord;//定义块表</P>
<P>&nbsp;<FONT color=#f73809>Acad::ErrorStatus Entityerror = pBlockTable-&gt;getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);<BR></FONT>&nbsp;<BR>&nbsp;//以写方式打开模型空间,获得块表记录指针<BR>&nbsp;pBlockTable-&gt;close();//关闭块表<BR>&nbsp;AcDbLine *pLine = new AcDbLine(startPt,endPt);//创建LINE对象<BR>&nbsp;AcDbObjectId LId;//定义标识符&nbsp;<BR>&nbsp;pBlockTableRecord-&gt;appendAcDbEntity(LId,pLine);//将实体写入块表记录&nbsp;<BR>&nbsp;pBlockTableRecord-&gt;close();//关闭块表记录<BR>&nbsp;pLine-&gt;close();<BR>&nbsp;lineListID.Add(LId);<BR>&nbsp;return LId; <BR>}<BR>函数运行到Acad::ErrorStatus Entityerror = pBlockTable-&gt;getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);<FONT color=#ff0000>时返回eWasOpenForWrite</FONT>;请问一下有什么方法解决呀!谢谢</P>

NinthOcean 发表于 2006-3-14 11:34:00

<P>这时候块表记录一定已经打开了,不然怎么到这反映器里</P>
<P>而且,你这样做是不是死循环~</P>

tianao 发表于 2006-3-14 13:21:00

<P>我现在是想在CAD中,当创建一条直线,当与另一条直线相交时,把另一条直线从交点处断开分成两个实体,或拖动一条直线与另一条直线相交时,把另一条直线从交点处断开分成两个实体。</P>
<P>刚学arx,不知道怎么弄,用反应器好像可以做到,可不知道怎么弄,你看看有什么其它的办法</P>

zjqmax 发表于 2007-7-9 10:58:00

<p>这个思路应该是可行的。</p>
页: [1]
查看完整版本: 在arx反应器的问题