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

17/06/2013

readDwgFile показывает ошибку DBX CAS 4 если вызывается из DBX - модуля

DBX модули или ‘Object Enablers’ созданы с единственной целью определения пользовательского объекта / примитива в ObjectARX. Модуль должен определить один или несколько пользовательских классов объекта, каждый из которых содержит пользовательские элементы и переопределяет необходимые методы, подходящие для конкретных целей. Взаимодействие с внешними базами данных или объектов в той же базе данных, которые не связаны напрямую (через ObjectID-ссылки), для пользовательских объектов не поддерживается.

Теория состоит в том, что определение объектов/примитивов и их поведение не должно зависеть от объектов вне базы данных, а только от нескольких ключевых объектов в той же базе данных. Например, примитив ОТРЕЗОК (LINE) должен быть полностью определен в пределах своего модуля, и его поведение не зависит от каких-либо внешних данных, кроме объектов, таких как слой и тип линий, чьи отношения устанавливаются через AcDbObjectId этих объектов. Есть, конечно, исключения из этого правила, но важно, чтобы попытаться эти правила соблюсти.

Единственный обходной путь для этого состоит в вызове readDwgFile() из ARX-модуля. Можно экспортировать глобальные функции из ARX-модуле, которые вы можете вызывать из DBX-модуля, предполагая, что ARX-модуль будет загружен. Проверить факт загруженности ARX-модуля можно с помощью использования функции Win32 API: GetModuleHandle().

Источник: http://adndevblog.typepad.com/autocad/2013/01/readdwgfile-displays-dbx-cas-4-when-called-from-a-dbx-module.html

 

Опубликовано 17.06.2013