派生自 ObjectARX 层次结构中的每个类都有一个相应的类描述符对象,该对象是保存运行时类型标识信息的实例。类描述符对象是类的静态数据成员,例如。类描述符对象是在初始化时创建的,当类向 ObjectARX 注册并添加到系统级字典时。此处描述的宏有助于声明和实现与运行时标识和初始化函数相关的某些函数。其中包括类初始化例程以及自定义类的 、 和函数。AcRxObjectAcRxClassgpDescAcDbEllipse::gpDescacrxClassDictionarydesc()cast(),isKindOf()isA() 该类提供的用于运行时类型标识的重要函数包括:AcRxObject
当您想知道对象是什么类时,请使用。此函数返回数据库对象的类描述符对象(实例)。它的签名是AcRxObject::isA()AcRxClass AcRxClass* isA() const; 当你已经知道对象是什么类时,你可以使用 function 来获取类描述符对象:desc() static AcRxClass* desc(); 下面的示例查找实例 o对于从它派生的任何类,usingand 静态成员函数:AcDbEllipseisKindOf()AcDbEllipse::desc() AcDbEntity* curEntity = somehowGetAndOpenAnEntity(); if (curEntity->isKindOf(AcDbEllipse::desc())) { // Got some kind of AcDbEllipse instance. } 此示例显示了使用静态成员函数查找实例或从中派生的任何类的另一种方法:AcDbEllipseAcDbEllipse::cast() AcDbEllipse* ellipseEntity = AcDbEllipse::cast(curEntity); if (ellipseEntity != NULL) { // Got some kind of AcDbEllipse instance. } 下面的示例查找 usingand 派生自 usingand 的类的实例,但不查找类的实例:AcDbEllipseAcDbEllipseisA()AcDbEllipse::desc() if (curEntity->isA() == AcDbEllipse::desc()) { // Got an AcDbEllipse, no more, no less. |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-8 19:32
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.