自定义实体类的层次关系图如下:
在规划并完成自定义实体类所需的模块和Schema后,我们就可以开始设计自定义实体了。在CIM SDK中,自定义对象分为两类: 一类就是需要具备图形表现能力的对象(也就是创建后能在系统中可见其图形化外观的对象),这类对象需要基于 CimGraphicObject 来派生;另一类就是不需要图形表现能力的对象(也就是在系统中无图形化外观的对象),这类对象需要基于 CimDataObject来派生。
从本质上而言,任何需要持久化到DGN文件中的对象,都必须直接或间接的与Element相关联,因为宿主系统只负责持久化各类Element及其所相关联对象,并不提供任何能直接持久化任意对象的能力。所以,就CIM对象的设计思想来看,任何基于CimGraphicObject或CimDataObject派生的对象对宿主系统而言,它们都代表着一个特定类型的Element,区别在于: CimGraphicObject及其派生类所属的Element是个图形化的,通常保存在DGN文件的常规Model中,而CimDataObject及其派生类所属的Element不是图形化的,通常保存在DGN文件中的字典Model中。
下面将分步骤介绍如何定义并实现一个自定义实体:
3.3.3.1 C++方式
3.3.3.2 C#方式