1. 使用ObjectARX向导创建一个从AcDbDatabaseReactor派生的数据库反应器类AsdkDbEmployeeReactor。 向导会自动为类添加RDS符号前缀.

  2. 使用ObjectARX向导,实现基类AcDbDatabaseReactor的虚函数objectAppended()。 在函数中添加代码以执行以下操作:
  1. 检查附加对象是否为AcDbBlockReference。 如果不回来.
  2. 获取参考的块表记录。 (AcDbBlockReference :: blockTableRecord())。
  3. 获取块表记录的名称,并检查它是否为EMPLOYEE块引用。 如果不返回。 (AcDbSymbolTable :: getName())。
  4. 将AsdkEmployeeReactor对象反应器附加到附加的块引用。 (AcDbObject :: addReactor())。 记住,我们正在监视数据库,以查看是否添加了任何EMPLOYEE块引用,如果正在添加,则将AsdkEmployeeReactor对象反应器附加到块引用.
  1. 在CDocData中添加一个变量,以保存指向每个文档的AsdkDbEmployeeReactor实例的指针.
    AsdkDbEmployeeReactor* m_pAsdkDbEmployeeReactor;
  1. 为每个新工程图创建数据库反应器的新实例。 收到kLoadDwgMsg消息时,可以执行此操作。 要接收此消息,请在CStep07App类中实现功能kLoadDwgMsg()。 使用 ACE , 您可以通过选择节点AcRxArxApp基类并右键单击节点kLoadDwgMsg()方法来轻松实现此目标.
  2. 在OnkLoadDwgMsg()消息函数中创建一个新的AsdkDbEmployeeReactor对象. 
    DocVars.docData().m_pAsdkDbEmployeeReactor = new AsdkDbEmployeeReactor(acdbHostApplicationServices()->workingDatabase());

尝试自己实现上述所有功能。 不要忘记ObjectARX联机帮助以获取快速参考。 如果卡住,则可以打开 Step07解决的项目 并研究Step07项目的AsdkDbEmployeeReactor.cpp和AsdkDbEmployeeReactor.h文件中的代码.

 

NEXT: 测试应用

Add and implement a database reactor for the application
Copyright ? 2013 Autodesk, Inc.