ADN Open CIS
Сообщество программистов Autodesk в СНГ

24/01/2022

Ошибка Acad::eWrongObjectType при вызове AcDbDictionary::setAt()

Что же может заставить при вызове AcDbDictionary::setAt() вернуть ошибку Acad::eWrongObjectType ?

К сожалению эта ошибка не документирована в ObjectARX SDK для метода AcDbDictionary::setAt,  но может быть несколько причин, по которым вы можете столкнуться с этой ошибкой.

Если вы добавляете пользовательский объект (Custom object) в словарь, вы должны зарегистрировать его класс в AutoCAD. Если этого не сделать, то это может привести именно к этой ошибке.

В функции acrxEntryPoint в обработчике kInitAppMsg добавьте:

custom_object_name::rxInit () ;
acrxBuildClassHierarchy () ;


В обработчике kUnloadAppMsg добавьте:

deleteAcRxClass (custom_object_name::desc ()) ;

Если вы добавляете другой объект, который не является пользовательским объектом, или если вы сделали то, что описано выше, но ошибка все-равно возникает, то это означает, что вы пытаетесь добавить объект, который не может находиться в объекте AcDbDictionary – графический примитив (наследник AcDbEntity) .

Источник: https://adndevblog.typepad.com/autocad/2013/01/acadewrongobjecttype-error-with-acdbdictionarysetat.html

Автор перевода: Александр Ривилис
Опубликовано 24.01.2022
Отредактировано 24.01.2022 в 17:20:29