Немного переделываю скрипт ADSK_Копирование cокращения и имени системы_V1_D2.6 под себя. А именно хочу изменить python код получения вложенных семейств.
Код выглядит следующим образом:
import clr clr.AddReference('RevitAPI') from Autodesk.Revit.DB import * clr.AddReference("RevitNodes") import Revit clr.ImportExtensions(Revit.Elements) clr.AddReference("RevitServices") import RevitServices from RevitServices.Persistence import DocumentManager doc = DocumentManager.Instance.CurrentDBDocument items = UnwrapElement(IN[0]) elementlist = [] for item in items: itemlist = [] try: for subcomp in item.GetSubComponentIds(): itemlist.append(doc.GetElement(subcomp).ToDSType(True)) except: donothing = 1 elementlist.append(itemlist) OUT = elementlist
С помощью этого питона мы получаем список всех вложенных семейств.
Хочу сделать добавление элемента в котором есть вложенные в отдельный список, понимаю, что тут должно быть какое-то условие, которое будет выводить мне список item.
for item in items: itemlist = list() itemlist2 = list() if item.GetSubComponentIds() != 0: subcomp = item.GetSubComponentIds() itemlist.append(doc.GetElement(subcomp).ToDSType(True)) itemlist2.append(doc.GetElement(item).ToDSType(True)) elementlist.append(itemlist) elementlist.append(itemlist2)
"Творчество" нерабочее выше. Знаний явно не хватает. Я завел новый список и потом добавил его к существующему. Пытаюсь ввести условие через if с нахождением внутренних компонентов. Выкинул второй цикл, что скорее всего было неправильно
Вопросы немного отвлеченные:
1. Как достать item элементом из списка, который мы подаем в цикл?
Это сделать никак не выходит
2. Как собрать элементы в отдельные подсписки в списке на выход OUT из скрипта?
У меня списки сращиваются, хочу сделать, чтобы выводились раздельно
@selbultekov я может не понимаю что нужно, но просто на вывод можно через запятую добавить список подачи. В примере пару столбчатых фундаментов, а внутри вложены анкерные болты
С уважением, Ковылин Сергей Сергеевич
Инженер-проектировщик; BIM-менеджер
Чат для конструкторов в Telegram
Правила форума и некоторые нюансы по работе с текстовым редактором
@kovyljan спасибо за ответ.
Переписал питон, теперь он добавляет к списку вложенных также обычные семейства и делит все это на подсписки как и было до этого.
for item in items: itemlist = list() itemlist2 = [] itemlist.append(item) try: for subcomp in item.GetSubComponentIds(): itemlist.append(doc.GetElement(subcomp)) except: donothing = 1 elementlist.append(itemlist) OUT = elementlist, itemlist2
а я думал надо в отдельный список добавить, а надо было в список ко вложенным. Только вот это наверное убрать, иначе всегда пустой список вниз добавлять будет к выводу