Наборы листов и видов – получить список
Главная › Форумы › Задать вопрос › Наборы листов и видов – получить список
Помечено: Листы Печать
- В этой теме 5 ответов, 3 участника, последнее обновление 5 лет, 5 месяцев назад сделано Илья.
-
АвторСообщения
-
Текущая задача – удаление всех наборов листов (ViewSheetSet). Подглядел код в нодах сторонних пакетов и пытаюсь выполнить задачу.
Текущий мой код удаляет только 1 из Наборов. А нужно, чтобы удалял все. Помогите пожалуйста исправить ошибку.
import clr
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import *
fec = FilteredElementCollector(doc).OfClass(ViewSheetSet).GetElementIterator()
SetList=[]
fec.Reset()
for f in fec:
SetList = f
# Для отчетности:
OUT = SetList.Name
TransactionManager.Instance.EnsureInTransaction(doc)
doc.Delete(SetList.Id)
TransactionManager.Instance.TransactionTaskDone()P.S. Пытался решить задачу нодами: получить элементы по категории и удалить их. Но споткнулся в самом начале – не смог найти нужное имя категории: безуспешно пробовал ViewSheetSet и OST_ViewSheetSet.
цикл с for надо переписать предлагаю так:
———————————-SetList = [f for f in fec]
#Получаем все id
IdList = map(lambda x:x.Id, SetList)#Удаляем все id, естественно, в тразнакции
TransactionManager.Instance.EnsureInTransaction(doc)
for i in IdList:
doc.Delete(i)
TransactionManager.Instance.TransactionTaskDone()#OUT – не забывем, что у нас теперь не один элемент, а список.
OUT = map(lambda x:x.Name, SetList)Серж, спасибо за правки. Но теперь наоборот, удаляются все Наборы, кроме одного.
В чем может быть причина? Текущий код – ссылка.P.S. Минимум 1 ошибку нашел: IdList надо присваивать вне цикла for. Исправил.
Но проблема осталась. Список формируется всегда на 1 набор меньше существующих.Серж, огромное спасибо. И за корректировку, и за показ “магии генератора списков”. Приму на заметку.
ИльяУчастникДобрый день!
Спасибо Legantmar за его скрипт(прилагаю) и Ивану Ситишеву(ссылка).
Не могли бы помочь доработать так их скрипты так, чтобы можно было на вход подавать листы, соответственно отсортированные и сгруппированные по некоему параметру(см.криншот).
Сейчас скрипт работает: выделяешь листы-запускаешь скрипт-создается набор из этих выбранных листов. Что я хочу: Есть “Стадия проектирования”=[х1,×2], есть “Орг.КомплектЧертежей”=[х1,×2,x3], есть “Ш_ФорматЛистаТекст”=[A1A,A2A,A3A,A2x3A и т.д.] и на основании этих данных хотелось бы создать автоматом разные наборы листов-это в идеале. Или хотя бы, чтобы создавались наборы листов по переменному выбору “Орг.КомплектЧертежей”. Надеюсь понятно).
Почему не хочу первый скрипт- потому, что он печатает все листы сразу и после каждого листа спрашивает куда и с каким именем сохранить и после 12 примерно листов ревит вылетает. Второй скрипт не подходит, потому как нужно каждый раз( не часто, конечно) выделять листы(предварительно диспетчер проекта отсортировав по форматам листов).
Спасибо заранее.
p.s. в Python не силён пока что до сих пор.(
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.