明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2902|回复: 3

在arx反应器的问题

[复制链接]
发表于 2006-3-14 10:02:00 | 显示全部楼层 |阅读模式

刚接触arx碰到个问题,希望高手指点一下,谢谢
重载AcDbDatabaseReactor监控数据库对象反应器的objectAppended(const AcDbDatabase *db,const AcDbObject *pObj)函数,在该函数中我想创建一条直线
函数如下:
AcDbObjectId CreateLine(AcGePoint3d startPt,AcGePoint3d endPt)
{  
 // AcGePoint3d startPt(1,1,0),endPt(700,100,0);//定义终点
 AcDbBlockTable* pBlockTable;//定义块表指针
 acdbCurDwg()->getBlockTable(pBlockTable,AcDb::kForRead);//获得当前图形块标指针
 AcDbBlockTableRecord* pBlockTableRecord;//定义块表

 Acad::ErrorStatus Entityerror = pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);
 
 //以写方式打开模型空间,获得块表记录指针
 pBlockTable->close();//关闭块表
 AcDbLine *pLine = new AcDbLine(startPt,endPt);//创建LINE对象
 AcDbObjectId LId;//定义标识符 
 pBlockTableRecord->appendAcDbEntity(LId,pLine);//将实体写入块表记录 
 pBlockTableRecord->close();//关闭块表记录
 pLine->close();
 lineListID.Add(LId);
 return LId;
}
函数运行到Acad::ErrorStatus Entityerror = pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);时返回eWasOpenForWrite;请问一下有什么方法解决呀!谢谢

发表于 2006-3-14 11:34:00 | 显示全部楼层

这时候块表记录一定已经打开了,不然怎么到这反映器里

而且,你这样做是不是死循环~

 楼主| 发表于 2006-3-14 13:21:00 | 显示全部楼层

我现在是想在CAD中,当创建一条直线,当与另一条直线相交时,把另一条直线从交点处断开分成两个实体,或拖动一条直线与另一条直线相交时,把另一条直线从交点处断开分成两个实体。

刚学arx,不知道怎么弄,用反应器好像可以做到,可不知道怎么弄,你看看有什么其它的办法

发表于 2007-7-9 10:58:00 | 显示全部楼层

这个思路应该是可行的。

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 19:53 , Processed in 0.161062 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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