SmartCon — плагин для Autodesk Revit, автоматизирующий рутинные операции соединения MEP-трубопроводов. Флагманский модуль PipeConnect позволяет соединять элементы двумя кликами с автоматическим подбором фитингов, переходников и типов соединений.
📖 Полное руководство пользователя (USER-GUIDE.md) — пошаговые инструкции, все бизнес-кейсы, скриншоты UI.
| Проблема в Revit | Решение SmartCon |
|---|---|
| Соединение в 3D — только перетаскиванием коннекторов | 2 клика — элемент автоматически выравнивается |
| Нет системы типов соединений (сварка / резьба / раструб) | ConnectionTypeCode — типы назначаются и хранятся в семействах |
| Нет подбора фитингов по совместимости | Автоматический поиск фитинга по маппингу типов + размеров |
| Разные диаметры — ручной поиск переходника | Автовставка reducer с подбором типоразмера |
| Цепочки элементов — по одному | Chain mode — вся сеть перемещается как жёсткое тело |
- Скачайте последнюю версию со страницы Releases
- Запустите
SmartCon-Setup.exe— установщик определит версии Revit автоматически - Перезапустите Revit — на ленте появится вкладка SmartCon
📦 Поддерживаемые версии Revit
| Revit | Платформа | Папка установки |
|---|---|---|
| 2019–2020 | .NET Framework 4.8 | %APPDATA%\SmartCon\2019-2020\ |
| 2021–2023 | .NET Framework 4.8 | %APPDATA%\SmartCon\2021-2023\ |
| 2024 | .NET Framework 4.8 | %APPDATA%\SmartCon\2024\ |
| 2025 | .NET 8.0 | %APPDATA%\SmartCon\2025\ |
Установщик не требует прав администратора.
🔧 Установка из исходников (для разработчиков)
git clone https://github.com/Alexandrisius/AGK-SmartCon-Pro.git
cd AGK-SmartCon-Pro
dotnet build src/SmartCon.App/SmartCon.App.csproj -c Debug.R25
dotnet test src/SmartCon.Tests/SmartCon.Tests.csproj -c Debug.R25
build-and-deploy.batДля multi-version используются 4 shipping-артефакта:
R19→ Revit 2019-2020R21→ Revit 2021-2023R24→ Revit 2024R25→ Revit 2025
Требования: .NET 8.0 SDK, Visual Studio 2022 или Rider.
После установки на ленте Revit появляется вкладка SmartCon с тремя кнопками:
| Кнопка | Назначение |
|---|---|
| PipeConnect | Соединение MEP-элементов двумя кликами |
| Settings | Настройка типов коннекторов и правил маппинга фитингов |
| About | Информация о версии, проверка обновлений |
1. Откройте 3D-вид в Revit
2. Нажмите кнопку PipeConnect на ленте SmartCon
3. Кликните по ПЕРВОМУ элементу (тот, который будет перемещён)
4. Кликните по ВТОРОМУ элементу (неподвижный ориентир)
5. Откроется окно настройки — поверните, выберите фитинг
6. Нажмите «Соединить» — готово!
Одно действие = одна запись Undo. Если что-то не так — Ctrl+Z откатит всё.
Ключевые сценарии (подробнее в USER-GUIDE.md)
Труба DN50 (сварка) → Кран DN50 (сварка) → прямое соединение без фитинга.
Труба DN65 → Кран DN50 → SmartCon автоматически переключит кран на DN65 (если типоразмер существует).
Труба DN50 → Кран DN40 (нет типоразмера DN50) → SmartCon вставит переходник DN50/DN40.
Труба DN50 (сварка) → Кран DN50 (резьба) → SmartCon подберёт и вставит фитинг по вашим правилам маппинга.
Кран + труба + тройник + отвод → вся сеть перемещается и соединяется одним действием.
Поворот на любой угол, смена коннектора, выбор фитинга из списка, смена размера — всё до нажатия «Соединить».
Перед первым использованием PipeConnect нужно настроить типы коннекторов и правила маппинга:
- Нажмите Settings на ленте SmartCon
- Вкладка «Типы коннекторов» — добавьте типы (например: 1 = Сварка, 2 = Резьба, 3 = Раструб)
- Вкладка «Правила маппинга» — задайте, какие фитинги использовать для каждой пары типов
- Нажмите Сохранить — настройки сохраняются в текущем проекте Revit (
.rvt) через ExtensibleStorage (ADR-012). Для переноса между проектами используйте кнопки Импорт / Экспорт (JSON).
Подробная инструкция по настройке — в USER-GUIDE.md → Первый запуск.
SmartCon поддерживает русский и английский языки. Язык можно переключить в окне About. Настройка сохраняется между сессиями.
📐 Архитектура и стек
flowchart LR
App[SmartCon.App\nRibbon / DI / Entry Point]
UI[SmartCon.UI\nShared WPF controls]
PipeConnect[SmartCon.PipeConnect\nCommands / Views / ViewModels / Services]
Revit[SmartCon.Revit\nRevit API adapters]
Core[SmartCon.Core\nDomain / Interfaces / Algorithms]
Tests[SmartCon.Tests\nUnit tests]
App --> PipeConnect
App --> Revit
PipeConnect --> Core
PipeConnect --> Revit
PipeConnect --> UI
Revit --> Core
Tests --> Core
Tests --> PipeConnect
SmartCon.Core — Чистый C#: модели, интерфейсы, алгоритмы (тестируется без Revit)
SmartCon.Revit — Реализации интерфейсов Core через Revit API
SmartCon.UI — Общие WPF-стили и контролы
SmartCon.App — Точка входа: IExternalApplication, Ribbon, DI-контейнер
SmartCon.PipeConnect — Модуль PipeConnect: Commands, ViewModels, Views
SmartCon.Tests — Unit-тесты (xUnit + Moq, 676 тестов)
| Компонент | Технология |
|---|---|
| Runtime | .NET 8.0 / .NET Framework 4.8 (multi-version) |
| Язык | C# 12 |
| UI | WPF + MVVM (CommunityToolkit.Mvvm) |
| Тесты | xUnit + Moq |
| Revit API | Revit 2019–2025 |
Ключевые архитектурные решения:
- Clean Architecture — Core определяет интерфейсы, Revit их реализует
- TransactionGroup + Assimilate — одна операция = одна запись Undo
- Formula Engine — AST-парсер формул Revit с SolveFor
См. docs/ — полная документация для разработчиков.
🤝 Контрибьюция
- Прочитайте
docs/invariants.md— жёсткие правила проекта - Прочитайте
docs/architecture/dependency-rule.md - Ключевые правила:
- Revit API из WPF — только через
IExternalEventHandler - Транзакции — только через
ITransactionService SmartCon.Coreне вызывает Revit API- Строгий MVVM — code-behind содержит только
DataContext = viewModel
- Revit API из WPF — только через
| Ресурс | Назначение |
|---|---|
| CONTRIBUTING.md | Правила сборки, тестов и оформления вкладов |
| SECURITY.md | Политика сообщений об уязвимостях |
| CODE_OF_CONDUCT.md | Правила поведения в сообществе |
| CHANGELOG.md | История изменений по SemVer |
| Issue Templates | Шаблоны bug report / feature request |
Автоматизация проекта разделена по ролям:
build.yml— CI-проверка дляpushиpull_requestrelease.yml— GitHub-side релиз по тегуv*build-and-deploy.bat— локальная debug-сборка и деплой в установленный Revittools/release.ps1— основной maintainer-скрипт релиза: version bump, build, tests, publish, ZIP, optional installer, tag, GitHub release
Скриншоты интерфейса и анимированные сценарии использования подробно вынесены в USER-GUIDE.md, чтобы основной README оставался компактным. При необходимости их можно продублировать в GitHub Releases и wiki.
MIT License — см. LICENSE.
AGK — инструменты автоматизации MEP для Autodesk Revit