Небольшое Windows-приложение на Python/Tkinter для просмотра структуры Revit Server, выбора моделей и экспорта их в локальную папку. Проект умеет:
- находить доступные серверы через
RSN.ini; - определять установленные версии Revit через реестр Windows;
- показывать дерево папок и моделей через Revit Server REST API;
- экспортировать выбранные
.rvtчерезRevitServerTool.exe; - при наличии Navisworks конвертировать экспортированные
.rvtв.nwc.
Проект ориентирован на локальный запуск в Windows-среде, где уже установлены Autodesk Revit и, опционально, Navisworks.
- Windows
- Python
3.12+ uvдля установки зависимостей и запуска- Доступ к Revit Server по HTTP
- Установленный Autodesk Revit подходящей версии
- Для экспорта в NWC: установленный Autodesk Navisworks той же версии
uv syncЕсли uv не установлен:
pip install uvТекущая рабочая точка входа для GUI:
uv run sample.pymain.py сейчас содержит только тестовую заглушку и не запускает интерфейс.
После запуска приложение:
- ищет установленные версии Revit в реестре;
- ищет
RSN.iniв стандартных путях Autodesk; - формирует список серверов;
- подключается к выбранному серверу и лениво загружает дерево;
- позволяет отметить модели и запустить экспорт.
ConfigManager ищет RSN.ini в нескольких стандартных местах, включая:
C:\ProgramData\Autodesk\Revit Server\RSN.iniC:\Users\<user>\AppData\Roaming\Autodesk\Revit Server\RSN.iniC:\ProgramData\Autodesk\Revit Server <year>\Config\RSN.ini
Из файла берутся только строки, похожие на IPv4-адреса. Имена хостов сейчас игнорируются.
REST-запросы идут по адресу вида:
http://<server>/RevitServerAdminRESTService<year>/AdminRESTService.svc
Важно: параметр port в коде хранится для совместимости, но в URL сейчас не подставляется. По факту используется стандартный HTTP-порт.
Для экспорта используется штатный RevitServerTool.exe, который ищется по установленной версии Revit:
C:\Program Files\Autodesk\Revit <year>\RevitServerToolCommand\RevitServerTool.exe
Экспорт вызывается командой createLocalRvt, а файлы сохраняются в выбранную пользователем папку.
Для пакетной конвертации используется FileToolsTaskRunner.exe из Navisworks. Приложение создаёт список RVT-файлов, запускает конвертацию и ожидает появления .nwc и/или Combined.nwd.
В репозитории есть build.bat и RevitServerBrowser.spec.
Сборка через bat-файл:
.\build.batФактически используется PyInstaller с входным скриптом sample.py. Артефакты попадают в dist/.
revitserver/
browser.py GUI на Tkinter
client.py работа с Revit Server REST API
config.py поиск Revit, RSN.ini и внешних утилит
exporter.py экспорт RVT и конвертация в NWC
item.py модель элемента дерева
logger.py файловый логгер
sample.py рабочий запуск GUI
main.py текущая заглушка
build.bat сборка через PyInstaller
Приложение пишет лог в:
log/app.log
При запуске из собранного .exe лог создаётся рядом с приложением в папке log.
- Проект рассчитан на Windows.
- GUI написан на
Tkinter, без CLI-интерфейса. main.pyпока не используется как реальная точка входа.- В
RSN.iniподдерживается только распознавание IPv4-адресов. - Порт сервера читается, но REST-клиент сейчас формирует URL без него.
- Для экспорта нужны локально установленные Autodesk-инструменты.
- В проекте пока нет автотестов.
- Убедиться, что Revit установлен и
RSN.iniсодержит IP Revit Server. - Выполнить
uv sync. - Запустить
uv run sample.py. - Выбрать сервер.
- Раскрыть папки и отметить нужные модели.
- Нажать
Экспорт RVTилиЭкспорт RVT + NWC.
Основные зависимости указаны в pyproject.toml:
requestspyinstaller