ObjectARX, AutoCAD. Среда программирования библиотеки C++




Всегда Инициализируйте AcDbDatabase


Вы должны всегда инициализировать по крайней мере один объект AcDbDatabase перед использованием любого кода AcDb. Это - то, потому что создание полного AcDbDatabase инициализирует набор глобальных переменных, которых некоторые библиотечные элементы требуют. (См. setWorkingDatabase () метод AcDbHostApplicationServices класса в ObjectARX Ссылке для подробностей.) Когда AutoCAD присутствует, имеется всегда “текущий рисунок” AcDbDatabase, что ObjectARX

полагается, чтобы удовлетворить все эти требования. Приложение ObjectDBX должно подражать этому поведению.

Если Вы намереваетесь записать непосредственно к вашей базе данных, Вы должны инициализировать это, используя конструктор AcDbDatabase с Adesk:: kTrue параметр. Эта версия конструктора создает жизнеспособный пустой рисунок, готовый к модификации и формирует таблицы базы данных и инициализирует их к значениям по умолчанию. Следующее - пример инициализирования базы данных:

AcDbDatabase *pDb = new AcDbDatabase(Adesk::kTrue);

Если Вы намереваетесь читать чертежный файл в базу данных, используйте конструктор AcDbDatabase с Adesk:: kFalse параметр, немедленно сопровождаемый запросом к readDwgFile () функция. Эта версия конструктора создает полностью пустую базу данных, которая полагается на последующий запрос к readDwgFile () чтобы заполнить его внутренние структуры данных. При использовании они в комбинации улучшают эффективность при чтении DWG файла по использованию другой формы конструктора, потому что таблицы и глобальные переменные должны только быть инициализированными однажды readDwgFile (). Имеется пример чтения рисунка в предварительно инициализированную базу данных:

AcDbDatabase *pDb = new AcDbDatabase(Adesk::kFalse);

pDb->readDwgFile(filename);

Множитель вызывает к readDwgFile () на той же самой базе данных, не поддержаны.

И в ObjectARX и ObjectDBX, вызывая readDwgFile () после использования Adesk:: kTrue форма конструктора некоторый, чтобы вызвать отказ{*неудачу*}, если версия DWG

файла, который Вы читаете - Выпуск 12 или ранее. Это из-за несогласованности в пути, которым рисунки загружены до Выпуска AutoCAD 13.

Поскольку Вы не можете предсказывать, которые рисунки ваши конечные пользователи откроются, не закодируйте следующее:

// Не Делать этого.

AcDbDatabase *pDb = new AcDbDatabase(Adesk::kTrue);

pDb->readDwgFile(filename);




Содержание  Назад  Вперед