在ObjectARX培训教程的这一部分中,我们介绍字典的概念并探索命名对象字典(NOD)。 NOD用于将非图形数据存储在我们的图形文件中。 NOD的推??荐用法是在NOD中创建一个基本级词典(AcDbDictionary)对象,然后用我们希望存储的数据项填充基本级词典。我们还将向您介绍Xrecord对象(AcDbXrecord),它是用于存储数据的机制,比旧的(仍在使用)扩展实体数据机制要好得多。我们的基本级词典对象将具有代表员工记录的键“ ASDK_EMPLOYEE_DICTIONARY”。我们还在此新词典中创建空的Xrecord对象,以表示员工记录。然后将员工记录(键和关联的AcDbXrecord)添加到NOD的“ ASDK_EMPLOYEE_DICTIONARY”级别。将这些条目存储在字典中使我们能够快速,轻松地遍历数据库中的所有员工.
目的:
在本练习中,我们将创建三个新的AutoCAD命令“
ADDENTRY”,“ LISTENTRIES”和“ REMOVEENTRY”。
执行“ ADDENTRY”命令后,它将:
-
检查命名对象字典中是否存在基本级别AcDbDictionary“ ASDK_EMPLOYEE_DICTIONARY”。 否则,“ ADDENTRY”将在NOD中创建此基本级别条目.
-
提示输入雇员姓名,并将AcDbXrecord对象添加到NOD中的基本级别。 如果该员工已经存在于“ ASDK_EMPLOYEE_DICTIONARY”中,我们的请求将被忽略.
当执行“ LISTENTRIES”命令时,它将:
-
检查命名对象字典中是否存在基本级别AcDbDictionary“ ASDK_EMPLOYEE_DICTIONARY”。
如果不是,则命令终止.
-
使用AcDbDictionaryIterator逐步浏览 "ASDK_EMPLOYEE_DICTIONARY"
在NOD词典中打印并存储在那里存储的所有员工的姓名.
当执行“ REMOVEENTRY”命令时,它将:
- 提示用户输入员工姓名.
-
检查命名对象字典中是否存在基本级别AcDbDictionary“ ASDK_EMPLOYEE_DICTIONARY”。
如果不是,则命令终止.
- 删除员工条目(如果该条目存在于我们的NOD基本级别中).
这是“命名对象字典”中的预期对象关系:
NOD (class:AcDbDictionary)
|_"ASDK_EMPLOYEE_DICTIONARY" (class:AcDbDictionary)
|_"Charles" (class:AcDbXrecord)
|_"Cyrille" (class:AcDbXrecord)
|_"Mikako" (calss:AcDbXrecord)
|_"Fenton" (class:AcDbXrecord)
|_"Gopinath" (class:AcDbXrecord)
|_"Kean" (class:AcDbXrecord)
|_"Varadan" (class:AcDbXrecord)
通过使用ObjectARX向导创建名为Step04的新ObjectARX项目来开始本教程。.
|