专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 其他开发语言

objectarx 反应器,该如何处理

发布时间:2011-06-30 07:29:43 文章来源:www.iduyao.cn 采编人员:星星草
objectarx 反应器
程序中为数据库加载了数据库反应器,在数据库反应器的objectappended响应函数中为每个新添加的对象加对象反应器,用对象反应器来监视对象的修改及删除操作,问题是当对象修改时并不进对象反应器的objcetModified响应函数,这是为什么呢?但删除新添加的一个对象时会进对象反映器的删除响应函数,请问对象反应器加上了吗?为什么不进对象反应器的修改响应函数呢?还有请问监视AcDbBlockTableRecord被添加、修改、删除采用哪种反应器呢?

数据库反应器的objectAppended响应函数代码如下,

void   AsdkDbReactor::objectAppended(const   AcDbDatabase*   db,   const   AcDbObject*   pObj)
{
                  bool   bentity=false;

if(pObj-> isKindOf(AcDbEntity::desc()))     //判断是否是实体类,为实体对象添加对象反应器
{
bentity=true;
}

if(bentity)
{  
                                                                        pObj-> addReactor(pObjReactor);
}
}

从AcDbObjecReactor类中派生自己的对象反应器类AsdkObjectReactor类。代码如下:
class   AsdkObjectReactor   :   public   AcDbObjectReactor    
{
public:
ACRX_DECLARE_MEMBERS(AsdkObjectReactor)   ;
AsdkObjectReactor();
virtual   ~AsdkObjectReactor();

virtual   void   objectModified   (const   AcDbObject*   dbObj);
virtual   void   erased   (const   AcDbObject*   dbObj,   Adesk::Boolean   pErasing=true);

};
void   AsdkObjectReactor::objectModified   (const   AcDbObject*   dbObj)
{
acutPrintf( "xiu   gai\n ");
}
void   AsdkObjectReactor::erased   (const   AcDbObject*   dbObj,   Adesk::Boolean   pErasing)
{
acutPrintf( "shan   chu   \n ");
}


------解决方案--------------------
没有响应 有可能是操作没有提交到实体数据库吧, 反应器没有问题,
实体删除后你在遍历块表记录看能否找得到你那个实体。

你可以上明经论坛上等二次开发论坛上问问,这里很少有人的,
我已经好久不做二次开发了 不能帮你调代码了。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: