-
使用ObjectARX向导创建一个从AcDbDatabaseReactor派生的数据库反应器类AsdkDbEmployeeReactor。
向导会自动为类添加RDS符号前缀.
-
使用ObjectARX向导,实现基类AcDbDatabaseReactor的虚函数objectAppended()。 在函数中添加代码以执行以下操作:
- 检查附加对象是否为AcDbBlockReference。 如果不回来.
- 获取参考的块表记录。 (AcDbBlockReference :: blockTableRecord())。
-
获取块表记录的名称,并检查它是否为EMPLOYEE块引用。 如果不返回。 (AcDbSymbolTable :: getName())。
-
将AsdkEmployeeReactor对象反应器附加到附加的块引用。 (AcDbObject :: addReactor())。 记住,我们正在监视数据库,以查看是否添加了任何EMPLOYEE块引用,如果正在添加,则将AsdkEmployeeReactor对象反应器附加到块引用.
-
在CDocData中添加一个变量,以保存指向每个文档的AsdkDbEmployeeReactor实例的指针.
AsdkDbEmployeeReactor*
m_pAsdkDbEmployeeReactor; |
-
为每个新工程图创建数据库反应器的新实例。 收到kLoadDwgMsg消息时,可以执行此操作。 要接收此消息,请在CStep07App类中实现功能kLoadDwgMsg()。 使用 ACE
, 您可以通过选择节点AcRxArxApp基类并右键单击节点kLoadDwgMsg()方法来轻松实现此目标.
-
在OnkLoadDwgMsg()消息函数中创建一个新的AsdkDbEmployeeReactor对象.
DocVars.docData().m_pAsdkDbEmployeeReactor =
new
AsdkDbEmployeeReactor(acdbHostApplicationServices()->workingDatabase()); |
尝试自己实现上述所有功能。
不要忘记ObjectARX联机帮助以获取快速参考。 如果卡住,则可以打开
Step07解决的项目
并研究Step07项目的AsdkDbEmployeeReactor.cpp和AsdkDbEmployeeReactor.h文件中的代码.
|