Редактирование размера аннотаций
Главная › Форумы › Задать вопрос › Редактирование размера аннотаций
- В этой теме 21 ответ, 5 участников, последнее обновление 6 лет, 6 месяцев назад сделано Nickolay.
-
АвторСообщения
-
NickolayУчастник
Приветствую!
Сразу скажу, я новичок в использовании средств Dynamo.
Передо мной поставлена задача – сделать модуль автоматического изменения аннотаций по ГОСТ. Интересует именно раздел Марки в Аннотациях.То есть два режима:
1) исправление в реальном времени – пользователь маркирует элемент чертежа, вводит цифры, а плагин автоматически изменяет длину/ширину
ИЛИ
2) оффлайн режим – имеется чертеж с уже существующими марками, по нажатию кнопки плагин форматирует их по заданным стандартам.Как было уже сказано выше, опыта работы с Dynamo у меня нет. Вопрос состоит в следующем:
С помощью какого нода можно получить доступ к данному типу спецификаций?Так же хотелось бы получить советы по реализации, примеры подобных программ по структуре. Желательно, гайды для изучения.
Интереснейший вопрос.
Самая главная задача – определение длинны текста ))
“я новичок в использовании средств Dynamо”
Я надеюсь, вы не новичек в использовании методов c# и перевода их в Python
В любом случае, следующая статья для вас. Если она вам не по зубам, вернитесь к этой задаче
позже, после изучения основ программирования. Ну месяца так через 3-4.
http://thebuildingcoder.typepad.com/blog/2014/10/new-text-note-and-text-width-calculation.htmlNickolayУчастникДлина текста указана в нормативном документе. Вот выдержка:
С C# работал, естественно. 4 курс, диплом вот пишу.
Но за статейку спасибо. Завтра ознакомлюсь
NickolayУчастникК слову, реализация не обязательна на Dynamo.
Лучше всего сделать на C# через Revit API в виде подключаемого плагина. Так будет грамотнееJON73Участникпока это в ревите неосуществимо потому что длина полки может быть только параметром ТИПА – это большой косяк ревита, когда сделают по экземпляру тогда все будет окей.
Ну, пока можно определить требуемую длину полки и выбрать типоразмер с ближайшей Большей величиной (из списка типоразмеров с разными длинами полок). Костыль конечно, но хоть можно автоматизировать.
По крайней мере я собираюсь так сделать, как немного освобожусь…может быть только параметром ТИПА – это большой косяк ревита
я тоже считаю, что это косяк. Тем не менее, этих типов можно насоздавать сколько угодно – не проблема. А вот определить ширину любого текста сложно
NickolayУчастникDenver-22, можно поподробнее? То есть если это реализуемо, то хотелось бы узнать с помощью каких средств и взглянуть на примеры.
>собираюсь так сделать, как немного освобожусь…
Заинтересовала тема? Если возьметесь и поделитесь результатами, был бы благодарен.Пока только идеи:
– Tag Host Element (пакет Archi-lab.net, он же Archi-lab Grimshaw) – определит основу марки (маркируемый элемент)
– Считываете значение параметра из элемента.
– Определяете длину полки по длине текста (в соседней ветке давали ссылку на английскую статью). Мне же пришлось находит коэффициент эмпирически. Будет зависеть от шрифта, кегля, сжатия.
– По расчетной длине выбираете типоразмер марки с нужной длиной полки.
Меня ждать долго придется. Задача не приоритетна, но будет когда-то выполняться.NickolayУчастникПроблема в том, что для меня это диплом. Срок реализации программы – месяц.
Тема утверждена и я не могу ничего изменить. Мне выдали эту тему по ДПО, хотя обучали просто работе в Ревите. Без должного опыта я не смогу её выполнить сам. Если вдруг будет возможность заняться этой задачей, прошу сообщить.
Для меня – вопрос жизни и смерти. Мне обращаться уже действительно не к комуЯ считаю, что все ответы по теме даны. Я смогу реализовать алгоритм за неделю максимум. Однако у меня нет желания писать за вас диплом, хотя с удовольствием могу помочь в некоторых нюансах.
Денвер 22 предоставил адекватный алгоритм для задачи,
в блоге thebuildingcoder, по ссылке которую я вам привел, решена задача
– Определяете длину полки по длине текста (я бы даше сказал наоборот – определение длинны текста для выбора длинны полки). Эта задача решена универсальным методом для любых шрифтов и их модификаций Italic, Blod, а также для любого коэфициента ширины текста.
Остается только взять и сделать. В чем проблема? Разбирайте код по полочкам и вперед.Эта задача решена универсальным методом для любых шрифтов и их модификаций Italic, Blod, а также для любого коэфициента ширины текста.
Даже так? Я переводил статью в ГуглПереводчике. И понял так, что автор сделал анализ только для одного шрифта, и то пришел в итоге к эмпиричности. Значит надо снова перечитать.
Если и с моими слабыми знаниями в программировании получится применить его наработки, буду крут )). Беру на заметку.NickolayУчастникБлагодарю за ответы, буду работать. Если появятся наработки или вопросы по коду, отпишусь.
P.S. я никого не прошу писать за меня диплом.
NickolayУчастникВ общем, дела обстоят следующим образом:
С помощью Revit Lookup обнаружил, что все семейство марок невозможно изменять, задавая параметры. То есть, даже если отрисовывать марку с нуля, проставляя галочки у длин “по экземпляру”.Нашел иной способ – замена элемента из семейства Марки на родственную ему Типовые аннотации.
То есть мы берем в переменные все данные – текст марки, положение, инфу о выноске, удаляем ее, а затем подгружаем типовую аннотацию, которую нарисовал заранее и передаем ей параметры положения на чертеже и содержание. Конечно же, редачим размер исходя из длины строки.
Начал делать на Revit API, схематичный алгоритм написал, открыл транзакцию, все настроил.Теперь мне нужно знать, какая функция захватывает положение элемента по координатам на чертеже, удаляет элемент, добавляет элемент.
Я, конечно, все это найду в скором времени, но если функцию знаете – киньте название сюда. Заранее спасибо!координаты текстовой аннотации в питон ноде:
OUT = UnwrapElement(IN[0]).Coord # предварительно подключить библиотеки RevitAPI (поиск шаблон2.0)удалить элемент:
создать текстовую аннотацию
p.s. и ты уже в курсе, что текстовые аннотации работают с динамо только в английской версии ревита !?
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.