
- 基于CimGraphicObject 派生一个类,假设名为 MyFirstCimObject;
- 在所派生类的声明中添加下列宏:
// 声明MyFirstCimObject的基类为 CimGraphicObject
DEFINE_T_SUPER(CimGraphicObject);
// 用于非抽象类: 当前类,基类,导出宏
CIM_DECLARE_COMPONENT(MyFirstCimObject, CimGraphicObject, EXPORT_MACRO)
// 用于抽象类: 当前类,基类,导出宏
CIM_DECLARE_ABSTRACT_COMPONENT(MyFirstCimObject, CimGraphicObject, EXPORT_MACRO)
- 在所派生类的实现中添加下列宏:
CIM_DEFINE_COMPONENT(MyFirstCimObject, CimGraphicObject); // 用于非抽象类:当前类,基类
CIM_DEFINE_ABSTRACT_COMPONENT(MyFirstCimObject, CimGraphicObject); // 用于抽象类: 当前类,基类
- 重写基类中必要的方法:
- 必须重写的方法:
- virtual WCharCP _GetSchemaName() const; // 提供与此类关联的Schema名称
- virtual WCharCP _GetECClassName() const; // 提供于此类关联的EC类名称
- virtual BentleyStatus _GeneratePresentation(ViewContextR viewContext); // 专用于 CimGraphicObject派生类,用于生成对象的图形表达
- virtual void GetLocalTransform(TransformR transform); // 专用于 CimGraphicObject派生类,用于确定当前对象相对于其父对象的变换矩阵
- 通常需要重写的方法:
- virtual StatusInt _OnPreInitData(); // 用于在执行对象的构造前初始化工作
- virtual StatusInt _OnPostInitData(); // 用于执行对象构造完成后的初始化工作
- 注册类: 任何基于 CimDataObject 或 CimGraphicObject 的类,在使用前都必须注册,注册方法为:
- 在包含当前类的CimModule派生类的_OnModuleLoaded() 方法中执行
- MyFirstCimObject::DoRegister();