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

20/01/2014

Встраивание изображения в чертеж

Вопрос:

Как можно встроить изображение в чертеж так, чтобы не было необходимости передавать отдельный от чертежа растровый файл?

Ответ:

Это можно сделать двумя способами. Метод зависит от ваших требований.

  • Вставка растра как OLE-объекта

Вы можете вставить растр используя меню AutoCAD Вставка->Объект (Insert -> OLE Object). Это соотвествует созданию примитива AcDbOle2Frame, который встраивает растр в чертеж. Недостаток этого метода в невозможности программно создать AcDbOle2Frame – требуется вмешательство пользователя.

  • Использование пользовательского объекта  - (два варианта)

Пара AcDbRasterImageDef/AcDbRasterImage может быть создана и вставлена программно, но AcDbRasterImageDef требует внешний файл для хранения данных изображения. Чтобы избежать этого вы можете:

  1. Наследовать пользовательский объект от AcDbRasterImageDef, или
  2. Поместить данные изображения в отдельный пользовательский объект, который создает временный файл при открытии и устанавливает этот файл в качестве файла, ассоциированного с AcDbRasterImageDef.

Пример проекта в конце статьи демонстрирует второй вариант. На основе оригинального файла он помещает данные в пользовательский объект AsdkBindObject.

Когда  AsdkBindImage открывается, создается временный файл – копия оригинального файла и вызывается метод  setActiveFileName() класса AcDbRasterImageDef, так что этот файл и будет использоваться AcDbRasterImageDef, а не тот, который определен методом setSourceFileName.

Файл проекта: arxbindimage.zip

 

Источник: http://adndevblog.typepad.com/autocad/2012/10/embedding-an-image-in-a-drawing.html

 

Обсуждение: http://adn-cis.org/forum/index.php?topic=469

Опубликовано 20.01.2014
Отредактировано 20.01.2014 в 10:14:45