在ObjectARX Training教程的这一部分中,我们着眼于创建从AcDbObject派生的类。 我们的类将为AsdkEmployeeDetails,并将存储在EMPLOYEE AcDbBlockReference的扩展词典中。 AsdkEmployeeDetail对象将包含员工信息。 命名的AcDbBlockReference实体的每个实例都是对单个AcDbBlockTableRecord定义的引用。 在这里,我们将使用之前使用的“ EMPLOYEE”块引用。 自定义的AsdkEmployeeDetails类将存储一个Employee ID。 员工的隔间编号; 员工的名字和员工的姓氏。 这是对象之间的相互关系:

员工(类:AcDbBlockReference)

|_ 扩展词典(类:AcDbDictionary)
                |_ "ASDK_EMPLOYEE_DICTIONARY" (class:AcDbDictionary)
                       |_ "DETAILS" (class:AsdkEmployeeDetails)

除了讨论自定义对象和扩展字典之外,这里还介绍了将用户界面与对象(通常称为DB / UI分离)分离的概念。 在本节中,我们将构建两个应用程序。 代表我们应用程序数据库部分的ObjectDBX应用程序; 还有一个ObjectARX应用程序,代表我们应用程序的UI部分。 您将很高兴知道ObjectARX向导同时处理ObjectARX和ObjectDBX应用程序-我们将很快看到.
 

目的:

在本练习中,我们将创建三个新的AutoCAD命令“ ADDDETAIL”,“ LISTDETAILS”和“ REMOVEDETAIL”。

当执行“ ADDDETAIL”命令时,

  • 将提示用户选择一个EMPLOYEE块引用.
  • 如果选择成功,将提示用户输入EMPLOYEE详细信息.
  • 该函数将获取实体的扩展字典.
  • 该函数将验证EMPLOYEE块引用是否具有基本级别的“ ASDK_EMPLOYEE_DICTIONARY”字典.
  • 如果EMPLOYEE块引用不包含AsdkEmployeeDetails对象,它将创建一个新的AsdkEmployeeDetails对象,填写适当的详细信息,并将AsdkEmployeeDetails对象添加到EMPLOYEE块引用的基础级别中。.
当执行“ LISTDETAILS”命令时,
  • 将提示用户选择一个EMPLOYEE块引用.
  • 如果选择成功,则检索EMPLOYEE块参考扩展字典.
  • 如果EMPLOYEE块引用具有扩展词典,则检索“ ASDK_EMPLOYEE_DICTIONARY”词典.
  • 如果EMPLOYEE块引用具有“ ASDK_EMPLOYEE_DICTIONARY”字典,则检索“ DETAILS” AsdkEmployeeDetails对象.
  • 如果AsdkEmployeeDetails对象存在,则检索数据并提示用户.

当执行“ REMOVEDETAIL”命令时,

  • 将提示用户选择一个EMPLOYEE块引用.
  • 如果选择成功,该函数将检索EMPLOYEE块参考扩展字典.
  • 如果EMPLOYEE块引用具有扩展词典,则该函数将检索“ ASDK_EMPLOYEE_DICTIONARY”词典.
  • 如果EMPLOYEE块引用具有“ ASDK_EMPLOYEE_DICTIONARY”字典,则它将检索“ DETAILS” AsdkEmployeeDetails对象.
  • 如果AsdkEmployeeDetails对象存在,它将删除它,并且如果没有其他引用“ ASDK_EMPLOYEE_DICTIONARY”字典的条目,该字典也将被删除。.

作为此练习的起点,请下载并解压缩 Step05模板项目 . 模板项目已经实现了必要的命令,这些命令对于测试我们将在此步骤中实现的代码很有用.

 

NEXT: 为ObjectDBX(* .dbx)模块创建一个子项目

Introduction - Custom Objects - Extension Dictionary
Copyright ? 2013 Autodesk, Inc.