April 2, 2024

REVIT API. PyRevit: Как массово синхронизировать модели.

Введение

В прошлый раз мы разобрали как открывать модели:

https://dzen.ru/a/ZfAbg4vb_0qKqHTV

А теперь надо понять как это все закрывать. В идеале сделать так, чтобы появлялось окно с настройками закрытия по типу того, которое мы видим при использование кнопки синхронизации:

Значит надо придумать, чем в этот раз отрисовать форму. В Pyrevit нет возможности создавать произвольные пользовательские интерфейсы, поэтому воспользуемся еще одним модулем rpw.

https://revitpythonwrapper.readthedocs.io/en/latest/

Окно настроек синхронизации

В rpw есть возможность создавать простые произвольные формы. Посмотрим как это было реализовано у меня:

try:     components = [ui.forms.flexform.CheckBox ('sinhr', 'Синхронизироваться', default=True),            ui.forms.flexform.CheckBox ('flatting', 'Сжать', default=True),            ui.forms.flexform.CheckBox ('reloadlatest', 'Обновить до последней версии', default=True),            ui.forms.flexform.CheckBox ('relinquish_all', 'Отдать все рабочие наборы', default=True),            ui.forms.flexform.CheckBox ('closed', 'Закрыть', default=True),            ui.forms.flexform.CheckBox ('save', 'Сохранить', default=True),            ui.forms.flexform.Label («Комментарий»),            ui.forms.flexform.TextBox («comment», Text="Synchronisation from pyIN Panel»),                           ui.forms.Separator (),        ui.forms.Button ('Выбрать')]        form = ui.forms.FlexForm («Настройка закрытия моделей», components)    form.ShowDialog ()   

sinhr = form.values['sinhr']   

flatting = form.values[«flatting»]   

relinquish_all = form.values[«relinquish_all»]   

reloadlatest = form.values[«reloadlatest»]   

closed = form.values[«closed»]   

save = form.values[«save»]   

comment = form.values[«comment»]    

except:    script.exit ()

ТЕСТ ПЕРА