objectarx 反应器,该如何处理


        objectarx 反应器<br />

程序中为数据库加载了数据库反应器,在数据库反应器的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:
ACRXDECLAREMEMBERS(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 ");
}


Web后端 Web开发 程序开发

香蕉小小陆-旧 10 years, 4 months ago


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

你可以上明经论坛上等二次开发论坛上问问,这里很少有人的,
我已经好久不做二次开发了 不能帮你调代码了。

隐性-恶疾 answered 10 years, 4 months ago

Your Answer