Skip to content

i-savelev/revitserver_py

Repository files navigation

Revit Server Browser

Небольшое 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.py

main.py сейчас содержит только тестовую заглушку и не запускает интерфейс.

После запуска приложение:

  1. ищет установленные версии Revit в реестре;
  2. ищет RSN.ini в стандартных путях Autodesk;
  3. формирует список серверов;
  4. подключается к выбранному серверу и лениво загружает дерево;
  5. позволяет отметить модели и запустить экспорт.

Как это работает

1. Поиск серверов

ConfigManager ищет RSN.ini в нескольких стандартных местах, включая:

  • C:\ProgramData\Autodesk\Revit Server\RSN.ini
  • C:\Users\<user>\AppData\Roaming\Autodesk\Revit Server\RSN.ini
  • C:\ProgramData\Autodesk\Revit Server <year>\Config\RSN.ini

Из файла берутся только строки, похожие на IPv4-адреса. Имена хостов сейчас игнорируются.

2. Подключение к Revit Server

REST-запросы идут по адресу вида:

http://<server>/RevitServerAdminRESTService<year>/AdminRESTService.svc

Важно: параметр port в коде хранится для совместимости, но в URL сейчас не подставляется. По факту используется стандартный HTTP-порт.

3. Экспорт RVT

Для экспорта используется штатный RevitServerTool.exe, который ищется по установленной версии Revit:

C:\Program Files\Autodesk\Revit <year>\RevitServerToolCommand\RevitServerTool.exe

Экспорт вызывается командой createLocalRvt, а файлы сохраняются в выбранную пользователем папку.

4. Конвертация в NWC

Для пакетной конвертации используется FileToolsTaskRunner.exe из Navisworks. Приложение создаёт список RVT-файлов, запускает конвертацию и ожидает появления .nwc и/или Combined.nwd.

Сборка .exe

В репозитории есть 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-инструменты.
  • В проекте пока нет автотестов.

Минимальный сценарий использования

  1. Убедиться, что Revit установлен и RSN.ini содержит IP Revit Server.
  2. Выполнить uv sync.
  3. Запустить uv run sample.py.
  4. Выбрать сервер.
  5. Раскрыть папки и отметить нужные модели.
  6. Нажать Экспорт RVT или Экспорт RVT + NWC.

Зависимости

Основные зависимости указаны в pyproject.toml:

  • requests
  • pyinstaller

About

simle tool for work with RevitServerTool and Revit-Server

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors