Анатолий
Ответы в темах
-
АвторСообщения
-
Для элементов системы пожарной сигнализации скрипт https://drive.google.com/open?id=1UkPl7VH_IZjZIZatIQoXKvEtpIz6e_i8, видео https://youtu.be/WWEQYTLxTaM
Еще один вариант с помощью масенького скрипта питона
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 элементов, потому что в файле, который отказался под рукой не все стены имели корректную длину/высоту.
Попытался сделать как-то так
В чем суть? Достаем параметры номер квартиры, секция(корпус) и этаж (уровень). Для всех помещений внутри каждой квартиры параметр “номер квартиры” будет одинаковым, потому собираем в одну строчку три параметра и отбираем уникальные, получаемое количество записываем в новый параметр.
Запишу, чтобы не забыть.
import clr
clr.AddReference("RevitNodes")
import Revit
family=IN[0] # на вход подаем семейство
familyName=family.Name
types = family.Types #получение всех типов семейства без подключения каких-либо библиотек
types = Revit.Elements.Family.ByName(familyName).Types #получение всех типов семейства (по имени семейства) с библиотеками import clr/clr.AddReference("RevitNodes")/import Revit
elements = []
for type in types:
elem = Revit.Elements.FamilyInstance.ByFamilyType(type) #получение всех экземпляров данного семейства (с теми же подключаемыми библиотеками)
elements.append(elem)
OUT = elementsВ посте #5863 Ренат показал как сделать транзакцию нодами, думаю, для вашей темы ответ должен быть актуальным.
Посмотрел. Максим, причина скорее всего в версии динамо (или ревита). Так понимаю, вы пытались скрипт запустить в последней 2019 версии. У меня тоже ошибку выдает. Пока вспомнил что да к чему, хорошо, что на заметку осталось сообщение о версии динамо 1.3.3. Исправление ошибки просто нужно искать в РевитАПИ..В динамо версии 2.0.1 и выше необходимо заменить нод Geometry.BoundingBox на Element.BoundingBox, но пока что скрипт у меня в 2019 версии не работает…
Заработало, просто необходимо правильно выставлять глубину проецирования этого дополнительного “тела для скрипта”.Добрый день! Не хочется флудить, я бы сказал, что тема просто не совсем изучена, мне лично таким не приходилось заниматься, был бы какой опыт, с радостью помог бы) лично у меня тоже такое в некоторых вопросах на форуме, но бывает позже и ответ получаю). Как вариант, можно спросить или поискать решения на зарубежном форуме, там много решений присутствует.
Может и не в тему, но поделюсь также своими мыслями. Проблема действительно состоит в том, что в Ревите не нашлось пока нами (скорей всего нет) возможности растянуть текст по горизонтали, как в том же Word, например, это первое. Второе, что табуляцию возможно таки вставить в текст, возможно изменить ее длину (по умолчанию 8 пробелов), думаю, но главный вопрос стоит в том “Сколько пробелов необходимо?” Поскольку, как вы и писали в начале, питон все посчитал математически правильно, вот только длину текста необходимо измерять не len(i) или Length, необходимо знать длину(ширину) вставляемой строки текста, поскольку ширина символов “ж”,”л” и “(пробела)” отличаются и это мы видим с того же примера на вашей картинке, где количество символов во всех строчках одинаковое. Потому, мне кажется, на данный момент оптимальным действительно будет вариант, который вам предложил Сергей, где просто необходимо приблизительно высчитать пару точек ,по которым будут вставляться два массива текста.
-
АвторСообщения