Удаление пустых листов из проекта Revit
Главная › Форумы › Python › Revit Library (API) › Удаление пустых листов из проекта Revit
- В этой теме 31 ответ, 5 участников, последнее обновление 9 лет, 3 месяца назад сделано Vladimir.
-
АвторСообщения
-
Завел тему по просьбе Владимира. Необходимо программно искать в проекте пустые листы(критерием является отсуствие штампа) и в случае обнаружения удалять их. У кого какие соображения по этому поводу?
Думал вот так, но есть глюки..
Описание:
1) выбираются все листы, определяются их номера (должны быть в штампе основной надписи)
2) определяется наличие основной надписи (штампов) на листах, определяются номера листов
3) сравниваются номера листов (в двух вложенных циклах), создается “маска” (true/false)
4) через BoolMask отфильтровываются листы на которых не размещена основная надпись
5) через PyS в транзакции удаляется элемент с указанным Idp.s.
1 – почему то глючит ((
3 – сходу не знаю как написать.. надо заглядывать в шпаргалку ))
как то так..Вечерком возьмусь
Дим, не за что..
ток у тебя на выходе Sheet 52825 – это как раз лист с рамкой (штампом или основной надписью),
а нужен лист у которого нет этой рамки… чтоб далее его удалить.
не все так просто.Аа. Я думал наоборот нужны листы со штампами.
Тогда символ равенства ==
нужно заменить на символ неравенства !=
Dyn файл: Скачать
–
Что касается удаления листов – такого нода нет. значит нужно лезть в РевитАПИ. К сожалению я метода удаления листов не знаю. Не удалял ни разу. Могу только поддержать в поиске.Есть кастом нод Собона “Delete Elements” ковырните его, там есть код Питона для удаления элементов
но это же делете лист а не элементс
конечно, тут уже можно воспользоваться селектом и просто клавишей удалить. завтра попробую. а то в теории у меня всегда все работает, а как суешься в этот прОклятый файл, так сразу куча нюансов.
есть стиратель от Бенуа “Eraser” там нужный код есть
Таки ерейзер сработал, спасибо.
Метод Delete прекрасно удалил листы.
Динамо как и работу нужно любить :) Тогда она будет Благословенная :)
Ссылка на dyn файл та же: Udalenie_lista_bez_shtampa.dyn
–
Что касается селекта…
Пекеджный нод SelectElementInView из набора JBE на первый взгляд работает только с элементами, но он прекрасно сработал с листами.. единственное что листы не подсветились жирным текстом…
А так.. Нажал Run(F5) с этим нодом.. перешел в Revit и нажал del… листы удалились… Так что все сработало..Молодцы!
просьба оформленные, готовые скрипты складывать на странице DynamoLibrary/downloads
спасибо.p.s. правило оформления:
название скрипта – по русски (в скобках по английски) для удобного последующего поиска..
желательно выкладывать .dyn в архиве 7z вместе с файлом .rvt
спасибо за понимание.Я давно говорил мне этим не очень интересно заниматься. Я в принципе то же самое делаю у себя на блоге http://www.dronov.dp.ua/. Если есть желание, Антон, пожалуйста, занимайтесь. И оформляйте скрипты как вам нравится.
–
У нас могут возникнуть разные пожелания по оформлению. В частности я считаю что архив ревит файлом утяжелять не нужно, так как Скрипт работает с любым ревит файлом в котором есть листы и штампы. зачем? Поэтому я не поддерживаю вас в этом направлении. Остался Хасан. :) Его можете уговаривать.что касается кода.
да действительно.
допущена ошибка. он работает правильно только когда стоит знак ==
Чтобы из питона нам все таки вывести листы (sheets) которых нет в списке, нужно написать так:
И еще такой нюанс.
PyS Eraser написан таким образом что на выходе выдает список листов которые он удалить не может.
Это касается прежде всего листов которые являются текущими. То есть если вы открыли в главном видовом окне лист без штампа, то вы его никак удалить не можете.
Скачать тот же файл по той же ссылке: Udalenie_lista_bez_shtampa.dyn
–
Что касается селекта…
Пекеджный нод SelectElementInView из набора JBE на первый взгляд работает только с элементами, но он прекрасно сработал с листами.. единственное что листы не подсветились жирным текстом…
А так.. Нажал Run(F5) с этим нодом.. перешел в Revit и нажал del… листы удалились… Так что все сработало.. -
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.