AnlaxRevitTools 2021.1.20
See the version list below for details.
dotnet add package AnlaxRevitTools --version 2021.1.20
NuGet\Install-Package AnlaxRevitTools -Version 2021.1.20
<PackageReference Include="AnlaxRevitTools" Version="2021.1.20" />
<PackageVersion Include="AnlaxRevitTools" Version="2021.1.20" />
<PackageReference Include="AnlaxRevitTools" />
paket add AnlaxRevitTools --version 2021.1.20
#r "nuget: AnlaxRevitTools, 2021.1.20"
#:package AnlaxRevitTools@2021.1.20
#addin nuget:?package=AnlaxRevitTools&version=2021.1.20
#tool nuget:?package=AnlaxRevitTools&version=2021.1.20
AnlaxRevitTools
Библиотека для разработки плагинов Autodesk Revit, предоставляющая набор полезных инструментов и утилит для упрощения разработки.
🚀 Быстрая публикация пакетов
Для автоматической сборки и публикации всех версий пакета:
Простой способ
# Запустите главный скрипт (API ключ читается автоматически из publish-config.json)
BuildAndPublish.bat
Подробная документация: AUTOMATION_README.md
Описание
AnlaxRevitTools - это комплексная библиотека, которая помогает разработчикам создавать стабильные и функциональные плагины для Autodesk Revit. Библиотека включает в себя инструменты для логирования, асинхронного выполнения команд, управления параметрами и многое другое.
Основные компоненты
🔍 Логирование - AnlaxBaseLog
Центральный компонент для логирования в плагинах Revit. Прост в использовании и не требует дополнительной настройки.
// Примеры использования
AnlaxBaseLog.LogInfo("Информационное сообщение");
AnlaxBaseLog.LogWarning("Предупреждение");
AnlaxBaseLog.LogError("Ошибка");
AnlaxBaseLog.LogDebug("Отладочная информация");
⚡ Асинхронное выполнение - AsyncTask
Класс для безопасного запуска команд в Revit без блокировки интерфейса. Предотвращает вылеты Revit при использовании диалоговых окон.
// Пример использования
await AsyncTask.RunAsync(() => {
// Ваш код для выполнения в Revit
// Revit не будет зависать или вылетать
});
🪟 Окно результатов - ResultWindow
Специализированное окно для отображения результатов операций плагина Revit. Позволяет пользователям видеть результаты работы плагина, выделять элементы в модели и получать детальную информацию об ошибках.
// Создание и заполнение данных операции
var operationData = new OperationResultData
{
// УСПЕШНО ОБРАБОТАННЫЕ ЭЛЕМЕНТЫ
ProcessedDetails = "Обработано 5 стеновых проемов",
ProcessedItems = new List<Element>
{
wallOpening1, // Element объекты из Revit
wallOpening2,
wallOpening3
},
// ПРЕДУПРЕЖДЕНИЯ (не критичные проблемы)
WarningItems = new List<Element>
{
door1, // Дверь с некорректными параметрами
window1 // Окно требует проверки
},
// ОШИБКИ (критичные проблемы)
ErrorItems = new List<Element>
{
invalidWall1, // Стена с ошибками в геометрии
failedElement1
},
// ОШИБКИ ПЛАГИНА (общие проблемы плагина)
PluginErrorTitle = "Ошибка запуска",
PluginErrorContent = "Ты вот кнопку нажал и всё слетело. Не в масть тебе такие плагины",
// ПУТЬ К ЛОГ-ФАЙЛУ (опционально)
LogFilePath = @"C:\Users\Username\AppData\Local\Temp\plugin_log_228.txt",
// ИНФОРМАЦИЯ ДЛЯ ОТПРАВКИ ОТЧЕТА
ErrorReportInfo = new ErrorReportInfo(
commandName: "CheckWallOpenings",
userName: Environment.UserName,
userLogin: Environment.UserDomainName + "\\" + Environment.UserName,
pluginErrorText: "Критическая ошибка при проверке стеновых проемов"
),
// ССЫЛКА НА REVIT ДОКУМЕНТ (для выделения элементов)
RevitUIDocument = uidoc // UIDocument из ExternalCommandData
};
// Отображение окна результатов
OperationResultHelper.ShowResult(operationData);
📦 Загрузка плагинов
GitHub Downloader
Класс для загрузки плагинов и обновлений через GitHub API.
Yandex Downloader
Альтернативный способ загрузки через Yandex сервисы.
🔧 Управление параметрами - RevitParameter
Мощный класс для работы с параметрами проекта Revit. Позволяет добавлять, проверять и управлять параметрами.
⚠️ ВАЖНО: Перед добавлением параметров обязательно проверяйте подключение ФОП методом расширения CheckFSPFile. Этот метод также автоматически переключает ФОП на "Anlax", если он еще не был таковым.
// Примеры использования
var parameter = new RevitParameter();
// ОБЯЗАТЕЛЬНО: Проверка и настройка ФОП перед работой с параметрами
document.CheckFSPFile(); // Проверяет подключение ФОП и переключает на Anlax при необходимости
// Добавление параметра
parameter.AddParameter(document, element, parameterDefinition);
// Проверка существования параметра
bool exists = parameter.ParameterExists(element, parameterName);
Расширения (Extensions)
BoundingBoxXYZEx
Расширения для работы с ограничивающими блоками элементов.
DocumentEx
Расширения для работы с документами Revit.
ElementEx
Расширения для работы с элементами Revit.
Утилиты
ParameterTypeUniversal
Универсальные типы параметров для работы с различными версиями Revit.
UnitTypeUniversal
Универсальные типы единиц измерения.
🪟 Управление окнами - WindowManager
Критически важный компонент для управления модальными окнами в плагинах Revit. Предотвращает ошибки при горячем обновлении плагинов и запуске нескольких экземпляров одного окна.
⚠️ Обязательная регистрация модальных окон
ВСЕ модальные окна, которые показываются через Window.Show(), ДОЛЖНЫ быть зарегистрированы через WindowManager.Register()!
// ❌ НЕПРАВИЛЬНО - может вызвать ошибки при горячем обновлении
var myWindow = new MyModalWindow();
myWindow.Show();
// ✅ ПРАВИЛЬНО - безопасно для горячего обновления
var myWindow = new MyModalWindow();
WindowManager.Register(myWindow); // Обязательная регистрация!
myWindow.Show();
Преимущества регистрации
- Предотвращение ошибок при горячем обновлении - все зарегистрированные окна будут корректно закрыты при перезагрузке плагина
- Защита от дублирования окон - можно проверить, не открыто ли уже нужное окно
- Централизованное управление - возможность закрыть все окна плагина одной командой
Основные методы
// Регистрация окна (ОБЯЗАТЕЛЬНО для модальных окон)
WindowManager.Register(myWindow);
// Получение всех открытых окон
var openWindows = WindowManager.GetOpenWindows();
// Закрытие всех зарегистрированных окон
WindowManager.CloseAllWindows();
// Проверка, открыто ли окно с определенным именем
bool isOpen = WindowManager.CheckOpenWindows(new[] { "Мое окно", "Другое окно" });
Пример полного использования
public class MyRevitCommand : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
// Проверяем, не открыто ли уже наше окно
if (WindowManager.CheckOpenWindows(new[] { "Мой плагин" }))
{
return Result.Succeeded; // Окно уже открыто
}
// Создаем и регистрируем окно
var myWindow = new MyModalWindow();
WindowManager.Register(myWindow); // КРИТИЧЕСКИ ВАЖНО!
// Показываем окно
myWindow.Show();
return Result.Succeeded;
}
}
⚠️ Важные замечания
- Всегда регистрируйте модальные окна перед их показом
- Регистрация происходит автоматически при закрытии окна
- Используйте
CheckOpenWindows()для предотвращения дублирования окон - При горячем обновлении плагина все зарегистрированные окна будут автоматически закрыты
BackgroundErrorReporter
Система отчетности об ошибках в фоновом режиме.
Установка
Через NuGet Package Manager
Пакет публикуется на NuGet.org и хранится на аккаунте dev@anlax.org.
Установка через Package Manager Console:
Install-Package AnlaxRevitTools
Установка через .NET CLI:
dotnet add package AnlaxRevitTools
Установка через PackageReference в .csproj:
<PackageReference Include="AnlaxRevitTools" Version="2025.1.18" />
Ручная установка
- Скачайте последнюю версию библиотеки
- Добавьте ссылку на AnlaxRevitTools в ваш проект
- Убедитесь, что у вас установлена совместимая версия .NET Framework
Совместимость
Библиотека поддерживает следующие версии Autodesk Revit:
- Revit 2020
- Revit 2021
- Revit 2022
- Revit 2023
- Revit 2024
- Revit 2025
Примеры использования
using AnlaxRevitTools;
public class MyRevitPlugin
{
public async Task ExecuteAsync()
{
try
{
AnlaxBaseLog.LogInfo("Начало выполнения плагина");
await AsyncTask.RunAsync(() => {
// Ваш код для Revit
var parameter = new RevitParameter();
// ... логика работы с параметрами
});
AnlaxBaseLog.LogInfo("Плагин выполнен успешно");
}
catch (Exception ex)
{
AnlaxBaseLog.LogError($"Ошибка: {ex.Message}");
}
}
}
Лицензия
[Укажите вашу лицензию]
Поддержка
Для получения поддержки или сообщения об ошибках, пожалуйста, создайте issue в репозитории проекта.
Вклад в проект
Мы приветствуем вклад в развитие проекта! Если у вас есть предложения по улучшению или исправлению ошибок, создайте pull request.
AnlaxRevitTools - упрощаем разработку плагинов для Autodesk Revit
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET Framework | net48 is compatible. net481 was computed. |
-
.NETFramework 4.8
- AnlaxPackageDesign (>= 1.9.10)
- AnlaxPackageLaunch (>= 2021.2.4)
- Newtonsoft.Json (>= 13.0.3)
- NLog (>= 5.3.4)
- Octokit (>= 14.0.0)
- System.Net.Http (>= 4.3.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2025.1.26 | 111 | 4/11/2026 |
| 2025.1.25 | 93 | 4/8/2026 |
| 2025.1.24 | 322 | 11/16/2025 |
| 2025.1.23 | 306 | 11/12/2025 |
| 2024.1.26 | 98 | 4/11/2026 |
| 2024.1.25 | 83 | 4/8/2026 |
| 2024.1.24 | 269 | 11/16/2025 |
| 2023.1.26 | 94 | 4/11/2026 |
| 2023.1.25 | 84 | 4/8/2026 |
| 2023.1.24 | 259 | 11/16/2025 |
| 2022.1.26 | 99 | 4/11/2026 |
| 2022.1.25 | 87 | 4/8/2026 |
| 2022.1.24 | 264 | 11/16/2025 |
| 2021.1.26 | 56 | 4/26/2026 |
| 2021.1.25 | 87 | 4/8/2026 |
| 2021.1.24 | 252 | 11/16/2025 |
| 2021.1.20 | 233 | 9/20/2025 |
| 2020.1.26 | 100 | 4/11/2026 |
| 2020.1.25 | 86 | 4/8/2026 |
| 2020.1.24 | 264 | 11/16/2025 |