Редактирование данных в формате СПДС
Коллеги, добрый день!
Безуспешно попытав удачу на форуме разработчиков решил задать вопрос тут. Вдруг под Новый год действительно случаются чудеса.
Если у нас стоит задача вставить в ячейку формата СПДС не текст, а блок (растровую/векторную подпись, лого компании и т.д.), и потом немного отредактировать её, то руками это делается тривиально:
- Берём наш блок.
- В формате СПДС открываем окно редактирования основной подписи и выбираем "Внедрить объект".
- Выбираем наш блок. Как результат в поле наименования организации появляется гордая надпись "Геометрия".
- При этом наш блок появляется в формате.
- Выбираем формат и появляется возможность повозить блок по полю.
Внимание, вопрос! Даже два.
Вопрос первый - как программно вставить данный блок?
Сами данные формата можно получить через MultiCAD следующим образом:
Свойство "Enterprise" объекта McDbEntity будет хранить введённые нами данные в поле наименования организации. Если бы мы ввели текстовые данные, то там был бы просто текст. Для внедрённого блока геометрии там будет примерно такая запись в формате RTF:
Если мы этот текст вставим в другое поле в формате СПДС - в данном поле также будет нарисован наш блок. Это круто, если мы изначально знаем, как наш блок выглядит в виде потока. Вот эту самую строчку @06BgAAAAIAAQAAAQAAHAAAAOMEAAAA…
Но как получить этот поток для произвольного блока - я не понимаю. Пробовал различные типы вывода потока из Entity, из McObject и т.д.:
Всё не то. Поэтому прошу совета - как получить подобный поток из блока? Либо есть какой-то другой способ программно вставлять блоки в поля формата СПДС?
Вопрос второй - как потом его можно перемещать по полю? При этом не ломая сам формат СПДС.
Со вторым вопросом тоже труба. Руками поредактировать блок в формате мы можем - задать ему цвет, перемещать в поле и т.д. Как это сделать программно - загадка. Через свойства, как описано в первом вопросе, мы можем получить лишь само значение в поле, но не само поле с его свойствами.
Тем не менее в MultiCAD объект формата СПДС является McFormat - расширение класса McEntity. Если мы взорвём его геометрию, то легко дойдём до нужного элемента типа DBText, который можно легко редактировать, перемещать и т.д.:
Но взрывать и портить формат не хотелось бы. А как без этого получить доступ к параметрам данного поля - не понятно.
Комментарии
-
Не нужно изобретать велосипед.
Вставьте нужный блок с подписями сверху формата перед выпуском проекта.
на 01:50
http://rutube.ru/video/f6f87ab8e0d21179fda4c7dc621c6b24/?r=a
0 -
Добрый день!
Спасибо за предложенный вариант, это как-раз был план Б.
Просто вставлять блоки поверх как-то не спортивно. Если друг в процессе нормоконтроля или каких-то ещё проверок придётся изменять формат или возить формат по экрану - блоки с подписями останутся же на месте.
0 -
Если друг в процессе нормоконтроля или каких-то ещё проверок придётся изменять формат
Если в процессе проверки уже все подписано 🤷 то чего еще проверять-то 🤔
Логично вставить подписи перед печатью.
PS: удалить все блоки и вставить по новой 10 секунд.
0 -
При вставке формата текстовые поля сохраняются. А графика пересчитывается. Я не представляю, что вы делаете.
0 -
Ну, теоретически, можно действительно повесить перерисовку данных на событие закрытия документа и перерисовывать её каждые раз.
Согласен, немного узко описал задачу. Есть информационная система с документооборотом, в которой хранятся чертежи. Подразумевается, что при каждом открытии чертежа должны обновляться данные из информационной системы. Заполняться вся основная надпись, вставляться фамилии из штатного расписания в зависимости от конкретных чертежей, вставляться подписи только для тех сотрудников, кто в системе согласовал чертежи и т.д.
Вариант с обновлением через блоки поверх основной надписи тоже рассматривали, но совсем комильфо было бы вставлять эти данные прямо в формат СПДС.
0 -
Ваш вариант.
На блок формата сделайте свою форму ввода.
https://rutube.ru/video/b4fe055f6690667e58caaeba14e32279/?r=a
0 -
У нас немного другой случай. Точнее, всё что есть в видео, есть и у нас, только не в такой локальной форме. Заполнение всех текстовых полей в формате уже делается автоматически и данные берутся из базы данных информационной системы, не из базы нанокада. Без возможности их править проектировщиками.
У меня вопрос был исключительно по работе с блоками вместо текста.
Вот если бы в приведённом видео там товарищ нажал на какую-то из своих кнопочек перестроить и в ряде форм танк перерисовался в вертолёт или что-нибудь ещё произвольное - тогда да, тогда это видео было бы ближе к нашей задаче.
0 -
Если есть информационная система в которой есть цифровые подписи, немного удивляет атавиз с имитацией живой подписи факсимиле, ну и выводите типа штампа печати прямо на поле чертежа, согласовал, подписал..
Зачем имитация рукописи в цифровом формате?
Хотя некоторые облачка рисуют))
0 -
Без возможности их править проектировщиками.
Это понятно и ничего нового. Зачем вам, в таком случае, вообще нужен диалог формата. Берите блок и вставляйте в него то, что вам нужно.
Хотите в атрибуты, хотите просто текст плюс подпись сплайном.
Один чертёж один формат?
не из базы нанокада
не понял про базу. Берется из таблицы, таблица может брать из свойств чертежа. (dwgProp)
0 -
У нас внешние заказчики чертежей и они в любом случае требуют чертежи в печатной форме с рукописными подписями. Если бы чертежи были для внутреннего использования - полностью согласен, даже не заморачивались бы с этим всем.
0 -
Зачем вам, в таком случае, вообще нужен диалог формата.
Вот тут теперь я немного не понял. Идея в том, чтобы проектировщик открыл нанокад, на чертеж просто добавил формат из СПДС и вообще о нём забыл. Сидел себе, чертил, никаких диалогов, никаких таблиц/форм заполнения, просто работа с чертежом. А потом наша система заполняет все поля. И это уже есть, остаётся только вопрос с автоматической вставкой не текста, а блоков.
0 -
автоматической вставкой
Крамольнную вещь скажу, у вас там листинг кода на 100500 знаков.
А команду -insert не пробовали.
0 -
Если есть возможность использовать её для вставки в конкретное поле форматки - я только за. Но пока как-то не понимаю, как её использовать, чтобы вставить блок именно в поле формата СПДС.
0 -
Никак.
Я же в первом ответе сказал.
0 -
Более того, добавил, что при редактировании текстовые поля сохраняются, п графика меняется.
Сто еще добавить.
0 -
при редактировании текстовые поля сохраняются, п графика меняется
Это что имеется ввиду? Немного не понимаю, мы сейчас говорим про формат СПДС, про какой-то ручной формат или про что-то другое? Вот в приведённом видео у товарища в поле "Организация" вставлен танк. И если он эту форматку будет таскать по экрану - танк останется в том поле. Если он зайдёт в свойства форматки из изменит её размер с 1А4 на 2А3 - она разъедится, но танк останется в том же поле "Организация". Или мы вообще не про то?
0 -
Отписываюсь по результатам.
В итоге самым логичным решением всё-таки оказалось преобразовывать нужные блоки с подписями в RTF и вставлять их в ячейки формата СПДС как геометрию. Так и никаких лишних объектов/блоков не создаётся и при редактировании/перемещении формата СПДС все данные перемещаются вместе с ним.
0 -
И подписи?
0 -
Да, они же вставлены в ячейку формата.
Это фактически аналог команды "Внедрить объект" из диалога редактирования штампа. После внедрения в редактировании появляется название вставленной геометрии:
И, если перемещать штамп или менять его формат с А4 на А0, - логотип и подписи также корректно перемещаются.
0 -
Хорошо.
0
Разделы
- Все разделы
- 57 Общие вопросы
- 52 Работа nanoCAD в ОС Linux
- 407 Платформа nanoCAD
- 16 nanoCAD GeoniCS
- 87 nanoCAD BIM Строительство
- 42 nanoCAD Механика PRO
- 56 nanoCAD BIM Электро
- 11 nanoCAD BIM Вентиляция
- 13 nanoCAD BIM ВК
- 3 nanoCAD BIM Отопление
- 7 nanoCAD BIM СКС
- 51 nanoCAD BIM ОПС
- 2 nanoCAD Стройплощадка
- 3 nanoCAD Металлоконструкции
- 2 nanoCAD Конструкции PS
- 4 TDMS Фарватер
- 1 Облака точек
- NSR Specification
- Учебным заведениям и учащимся
- 7 nano360