Анатолий
Ответы в темах
-
АвторСообщения
-
Еще один вариант с помощью масенького скрипта питона
import clr
el=IN[0]
a=IN[1]
b=IN[2]
from operator import itemgetter
c=sorted (el, key=itemgetter(a,b))
OUT = cp.s. В начале у меня стоит нод на выборку первых 109 элементов, потому что в файле, который отказался под рукой не все стены имели корректную длину/высоту.
Для элементов системы пожарной сигнализации скрипт https://drive.google.com/open?id=1UkPl7VH_IZjZIZatIQoXKvEtpIz6e_i8, видео https://youtu.be/WWEQYTLxTaM
Может и не в тему, но поделюсь также своими мыслями. Проблема действительно состоит в том, что в Ревите не нашлось пока нами (скорей всего нет) возможности растянуть текст по горизонтали, как в том же Word, например, это первое. Второе, что табуляцию возможно таки вставить в текст, возможно изменить ее длину (по умолчанию 8 пробелов), думаю, но главный вопрос стоит в том “Сколько пробелов необходимо?” Поскольку, как вы и писали в начале, питон все посчитал математически правильно, вот только длину текста необходимо измерять не len(i) или Length, необходимо знать длину(ширину) вставляемой строки текста, поскольку ширина символов “ж”,”л” и “(пробела)” отличаются и это мы видим с того же примера на вашей картинке, где количество символов во всех строчках одинаковое. Потому, мне кажется, на данный момент оптимальным действительно будет вариант, который вам предложил Сергей, где просто необходимо приблизительно высчитать пару точек ,по которым будут вставляться два массива текста.
Добавьте для дополнительного тела в семействе два параметра Отметка1, Отметка2 на привязку снизу и сверху и для перенумерации указывайте необходимую отметку в зависимости от расположения(например, -3000, 2000) так, чтобы если на разных этажах имеются похожие элементы, не появлялись на текущем плане. Согласен, конечно, что вариант не сильно удобный.
Добрый вечер! Пользуйтесь в процессе поиска методом dir().
Пример: пишите в скрипте на выходе
OUT = dir(S) потом посмотрели какие параметры имеются в составе
вашего S (Щит22 в данном случае). Выбрали параметр ,прописали в скрипте например
a = S.ElectricalSystem (если таковой имеется в dir, те методы или свойства, которых там нет выдадут ошибку, как скорее всего у вас и видно). Дальше посмотрели OUT = dir(a) что в списке дальше выпадает и продолжаете поиски. Также не забываем проверять что мы фактически получаем, комментируем #OUT = dir(a) и ниже пишем OUT = a. Иногда необходимо бывает добавить в конце свойства скобки, вот так a = S.ElectricalSystem(), смотря какие характеристики у данных свойств и методов. Успехов!Лично мне вышеизложенная “теория” к интересующему нас всех материалу понравилась.
По поводу вопроса: может я чего-то не понял, но у меня в упрощенном варианте метод IndexOf работает.Если говорить о сути метода, в данном примере по порядку выбираются индексы всех элементов. Если подавать на вход нода отдельный элемент из данного списка элементов – нод укажет порядковый номер элемента (индекс).
Добрый вечер. Как костыль в некотором частном случае с помощью динамо можно попробовать так: берем весь список наших элементов (окна, двери, что необходимо), смотрим в каких элементах по порядку какие стадии и подаем на вход нода SetParameterByName для елемента – необходимый список элементов, для value – стадию элемента (задаем порядочный номер необходимой стадии из списка).
Добрый день. Возможно переустановка Ревита и не займет такого большого количества времени, нежели ждать ответа. Лично у меня 2.0 тоже не стал на 18-й ревит, в 19-м работает отлично. Вернее он установился, все как положено, но панель слева, как у вас, пустая. Теперь пока что скрипты меняю (если надо) в 18-й версии Ревита и 1,3 динамо, а потом немного дорабатываю в 19-й версии и 2.0.
Думаю, что эта тема может быть вам интересна для изучения. https://forum.dynamobim.com/t/how-to-get-an-in-built-parameter-for-dynamo-1-2-parameterfilterelement-byrules/6158
-
АвторСообщения