Получение родительс...
 
Поделиться:
Уведомления
Очистить все

[Решено] Получение родительских семейств, у которых присутствуют вложенные

3 Сообщения
2 Пользователи
0 Лайки
493 Просмотры
0
Автор темы

Немного переделываю скрипт 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 из скрипта?

У меня списки сращиваются, хочу сделать, чтобы выводились раздельно

 

 

 

1 Ответ
0

@selbultekov я может не понимаю что нужно, но просто на вывод можно через запятую добавить список подачи. В примере пару столбчатых фундаментов, а внутри вложены анкерные болты

image

С уважением, Ковылин Сергей Сергеевич
Инженер-проектировщик; BIM-менеджер
Чат для конструкторов в Telegram
Правила форума и некоторые нюансы по работе с текстовым редактором

selbultekov selbultekov Автор темы 12.05.2023 06:16

@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
Kovyljan Kovyljan 12.05.2023 23:01

а я думал надо в отдельный список добавить, а надо было в список ко вложенным. Только вот это наверное убрать, иначе всегда пустой список вниз добавлять будет к выводу

image
Ответ