Удаление пустых листов из проекта Revit

Главная Форумы Python Revit Library (API) Удаление пустых листов из проекта Revit

В этой теме 31 ответ, 5 участников, последнее обновление  Vladimir 3 года/лет, 9 мес. назад.

Просмотр 15 сообщений - с 1 по 15 (из 32 всего)
  • Автор
    Сообщения
  • #811 Score: 0

    Khasan Mamaev
    Хранитель
    181 pts

    Завел тему по просьбе Владимира. Необходимо программно искать в проекте пустые листы(критерием является отсуствие штампа) и в случае обнаружения удалять их. У кого какие соображения по этому поводу?

    #814 Score: 0

    Legantmar
    Хранитель
    461 pts

    Думал вот так, но есть глюки..

    Описание:
    1) выбираются все листы, определяются их номера (должны быть в штампе основной надписи)
    2) определяется наличие основной надписи (штампов) на листах, определяются номера листов
    3) сравниваются номера листов (в двух вложенных циклах), создается “маска” (true/false)
    4) через BoolMask отфильтровываются листы на которых не размещена основная надпись
    5) через PyS в транзакции удаляется элемент с указанным Id

    p.s.
    1 – почему то глючит ((
    3 – сходу не знаю как написать.. надо заглядывать в шпаргалку ))
    как то так..

    #815 Score: 0

    Khasan Mamaev
    Хранитель
    181 pts

    Вечерком возьмусь

    #818 Score: 0

    Dmitry_dronov
    Модератор
    51 pts

    Антон, спасибо.

    #819 Score: 0

    Legantmar
    Хранитель
    461 pts

    Дим, не за что..
    ток у тебя на выходе Sheet 52825 – это как раз лист с рамкой (штампом или основной надписью),
    а нужен лист у которого нет этой рамки… чтоб далее его удалить.
    не все так просто.

    #820 Score: 0

    Dmitry_dronov
    Модератор
    51 pts

    Аа. Я думал наоборот нужны листы со штампами.
    Тогда символ равенства ==
    нужно заменить на символ неравенства !=

    Dyn файл: Скачать

    Что касается удаления листов – такого нода нет. значит нужно лезть в РевитАПИ. К сожалению я метода удаления листов не знаю. Не удалял ни разу. Могу только поддержать в поиске.

    #821 Score: 0

    Khasan Mamaev
    Хранитель
    181 pts

    Есть кастом нод Собона “Delete Elements” ковырните его, там есть код Питона для удаления элементов

    #823 Score: 0

    Dmitry_dronov
    Модератор
    51 pts

    но это же делете лист а не элементс

    #824 Score: 0

    Vladimir
    Участник
    13 pts

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

    #825 Score: 0

    Khasan Mamaev
    Хранитель
    181 pts

    есть стиратель от Бенуа “Eraser” там нужный код есть

    #826 Score: 0

    Dmitry_dronov
    Модератор
    51 pts

    Таки ерейзер сработал, спасибо.
    Метод Delete прекрасно удалил листы.
    Динамо как и работу нужно любить :) Тогда она будет Благословенная :)

    Ссылка на dyn файл та же: Udalenie_lista_bez_shtampa.dyn

    Что касается селекта…
    Пекеджный нод SelectElementInView из набора JBE на первый взгляд работает только с элементами, но он прекрасно сработал с листами.. единственное что листы не подсветились жирным текстом…
    А так.. Нажал Run(F5) с этим нодом.. перешел в Revit и нажал del… листы удалились… Так что все сработало..

    #831 Score: 0

    Legantmar
    Хранитель
    461 pts

    Молодцы!
    просьба оформленные, готовые скрипты складывать на странице DynamoLibrary/downloads
    спасибо.

    p.s. правило оформления:
    название скрипта – по русски (в скобках по английски) для удобного последующего поиска..
    желательно выкладывать .dyn в архиве 7z вместе с файлом .rvt
    спасибо за понимание.

    #832 Score: 0

    Dmitry_dronov
    Модератор
    51 pts

    Я давно говорил мне этим не очень интересно заниматься. Я в принципе то же самое делаю у себя на блоге http://www.dronov.dp.ua/. Если есть желание, Антон, пожалуйста, занимайтесь. И оформляйте скрипты как вам нравится.

    У нас могут возникнуть разные пожелания по оформлению. В частности я считаю что архив ревит файлом утяжелять не нужно, так как Скрипт работает с любым ревит файлом в котором есть листы и штампы. зачем? Поэтому я не поддерживаю вас в этом направлении. Остался Хасан. :) Его можете уговаривать.

    #833 Score: 0

    Legantmar
    Хранитель
    461 pts

    чето лажа со скриптом, сейчас попробовал..

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

    p.s. я рад за твой блог, но читаешь ты его “один”

    #836 Score: 0

    Dmitry_dronov
    Модератор
    51 pts

    что касается кода.
    да действительно.
    допущена ошибка. он работает правильно только когда стоит знак ==
    Чтобы из питона нам все таки вывести листы (sheets) которых нет в списке, нужно написать так:

    И еще такой нюанс.
    PyS Eraser написан таким образом что на выходе выдает список листов которые он удалить не может.
    Это касается прежде всего листов которые являются текущими. То есть если вы открыли в главном видовом окне лист без штампа, то вы его никак удалить не можете.

    Скачать тот же файл по той же ссылке: Udalenie_lista_bez_shtampa.dyn

    Что касается селекта…
    Пекеджный нод SelectElementInView из набора JBE на первый взгляд работает только с элементами, но он прекрасно сработал с листами.. единственное что листы не подсветились жирным текстом…
    А так.. Нажал Run(F5) с этим нодом.. перешел в Revit и нажал del… листы удалились… Так что все сработало..

Просмотр 15 сообщений - с 1 по 15 (из 32 всего)

Для ответа в этой теме необходимо авторизоваться.