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

ADN Club => AutoCAD .NET API => Тема начата: serega374 от 19-11-2018, 09:14:20

Название: Можно ли программно создать динамический блок?
Отправлено: serega374 от 19-11-2018, 09:14:20
Написал небольшое приложение с базой данных. В общем выбираю из БД оборудование, нажимаю кнопку и оно вставляется в чертёж. Но второе оборудование уже не вставить, так как имена их блоков совпадают.
Вижу два варианта либо менять имена блоков (но мне не особо хочется, так как я планирую потом автоматический формировать таблицу с оборудованием, а возможно и интерактивно при вставке/удалении блока, это будет удобно делать если все блоки будут иметь одинаковые имена, а уже остальные данные будут храниться в атрибутах)

Либо динамический блок, но я не нашёл как создать его программно. И если его нельзя создать программно, то можно ли его нарисовать один раз при разработке и "засунуть" в плагин как ресурс. Как это сделать? Мне всего то надо размеры в плане менять и три типа линий что бы поддерживал (сущ., проект., демонтаж).
Название: Re: Можно ли программно создать динамический блок?
Отправлено: Дмитрий Загорулькин от 19-11-2018, 11:26:55
Но второе оборудование уже не вставить, так как имена их блоков совпадают.
Вот тут поподробнее, пожалуйста. Вставить два одинаковых блока в чертёж никогда не было проблемой, особенно, если первый уже есть в чертеже. В чём именно у вас проблема?
Либо динамический блок, но я не нашёл как создать его программно.
Это сделать не получится.
И если его нельзя создать программно, то можно ли его нарисовать один раз при разработке и "засунуть" в плагин как ресурс. Как это сделать?
Можно файл DWG с блоками добавить как ресурс. В приложении надо будет написать обработку этого ресурса: извлечение файла, помещение его во временную/постоянную папку (https://www.google.ru/search?newwindow=1&rlz=1C1CHBD_ruRU806RU806&ei=RXDyW_TWE6aGrwSM1b3wBA&q=c%23+extract+embedded+resource+from+dll&oq=c%23+dll++embedded+resource&gs_l=psy-ab.3.1.0i203j0i8i30l9.1342904.1354934..1357855...3.0..0.71.924.15......0....1..gws-wiz.....6..0j0i131j0i67j0i10i1j0i10i1i42j0i10j35i39j0i22i30j0i22i10i30.fWjNDcbpSqw), последующее удаление (при необходимости). А потом уже работать с ним программно как с любым другим файлом DWG. В частности, открывать базу данных и копировать из неё блоки в текущий чертёж.
Название: Re: Можно ли программно создать динамический блок?
Отправлено: serega374 от 19-11-2018, 11:52:26
В том то  и дело что не одинаковых. Одинаковое только имя блока, а размеры, наименование и обозначение оборудования другие.
Извините, вам запрещён просмотр содержимого спойлеров.

Цитировать
Можно файл DWG с блоками добавить как ресурс. В приложении надо будет написать обработку этого ресурса: извлечение файла, помещение его во временную/постоянную папку, последующее удаление (при необходимости). А потом уже работать с ним программно как с любым другим файлом DWG. В частности, открывать базу данных и копировать из неё блоки в текущий чертёж.

Я так и думал спасибо!
Название: Re: Можно ли программно создать динамический блок?
Отправлено: Привалов Дмитрий от 19-11-2018, 12:57:55
Одинаковое только имя блока, а размеры, наименование и обозначение оборудования другие.
"Одинаковое только имя блока"
Можно делать не динамические блоки с разными именами, а для имени оборудования использовать атрибут с именем типа "наименованиеОборудования"

"обозначение оборудования другие"
Либо делать динамические блоки во внешнем файле, с помощью редактора, с ручкой переключения вида. Вставлять и переключать вид программно.

Делать динамические блоки чисто программно не самый лучший способ, много времени съест.

Название: Re: Можно ли программно создать динамический блок?
Отправлено: Александр Ривилис от 19-11-2018, 17:10:28
Делать динамические блоки чисто программно не самый лучший способ, много времени съест.
Делать динамические блоки официальными документированными способами нельзя в принципе. Нет публичного API для создания динамических блоков.
Одинаковое только имя блока, а размеры, наименование и обозначение оборудования другие.
Это не очень хороший метод заталкивать в блок с одним именем по сути совершенно разные вещи.