Анатолий
Ответы в темах
-
АвторСообщения
-
Еще один вариант с помощью масенького скрипта питона
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
Добавьте для дополнительного тела в семействе два параметра Отметка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
Добрый день! Для вашего конкретного случая
import clr clr.AddReference("DSCoreNodes") import DSCore from operator import itemgetter a = [["3*"],["2*"],["16*","16","7","7*"],[" "]] d = [] for b in a: l = [] c = sorted(b) lk1 = [] lk2 = [] if len(b)>1: for bb in b: k = bb.split("*") k1 = int(k[0]) lk1.append(k1) if len(k)>1: k2 = "*" lk2.append(k2) else: k2 = "" lk2.append(k2) kkk = [b,lk1,lk2] tr1 = DSCore.List.Transpose(kkk) b1 = sorted(tr1,key = itemgetter(1,2)) tr2 = DSCore.List.Transpose(b1) d.append(tr2[0]) else: d.append(c) OUT = d
-
АвторСообщения