AnlaxRevitTools 2024.1.20
See the version list below for details.
dotnet add package AnlaxRevitTools --version 2024.1.20
NuGet\Install-Package AnlaxRevitTools -Version 2024.1.20
<PackageReference Include="AnlaxRevitTools" Version="2024.1.20" />
<PackageVersion Include="AnlaxRevitTools" Version="2024.1.20" />
<PackageReference Include="AnlaxRevitTools" />
paket add AnlaxRevitTools --version 2024.1.20
#r "nuget: AnlaxRevitTools, 2024.1.20"
#:package AnlaxRevitTools@2024.1.20
#addin nuget:?package=AnlaxRevitTools&version=2024.1.20
#tool nuget:?package=AnlaxRevitTools&version=2024.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 (>= 2024.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.20 | 121 | 9/20/2025 |
2025.1.18 | 125 | 9/20/2025 |
2025.1.17 | 128 | 9/5/2025 |
2025.1.14 | 177 | 8/29/2025 |
2025.1.13 | 102 | 5/31/2025 |
2025.1.12 | 176 | 5/18/2025 |
2025.1.11 | 129 | 5/18/2025 |
2025.1.10 | 184 | 4/29/2025 |
2025.1.9 | 174 | 3/18/2025 |
2025.1.8 | 144 | 3/1/2025 |
2025.1.7 | 135 | 2/22/2025 |
2025.1.6 | 127 | 2/22/2025 |
2025.1.5 | 136 | 2/18/2025 |
2025.1.4 | 159 | 1/26/2025 |
2025.1.3 | 118 | 1/26/2025 |
2025.1.2 | 132 | 1/22/2025 |
2025.1.1 | 113 | 1/22/2025 |
2024.1.20 | 104 | 9/20/2025 |
2024.1.18 | 123 | 9/20/2025 |
2024.1.17 | 119 | 9/5/2025 |
2024.1.14 | 170 | 8/29/2025 |
2024.1.13 | 93 | 5/31/2025 |
2024.1.12 | 175 | 5/18/2025 |
2024.1.11 | 112 | 5/18/2025 |
2024.1.10 | 170 | 4/29/2025 |
2024.1.9 | 182 | 3/18/2025 |
2024.1.8 | 131 | 3/1/2025 |
2024.1.7 | 136 | 2/22/2025 |
2024.1.6 | 119 | 2/22/2025 |
2024.1.5 | 135 | 2/18/2025 |
2024.1.4 | 119 | 1/26/2025 |
2024.1.3 | 128 | 1/26/2025 |
2024.1.2 | 113 | 1/22/2025 |
2024.1.1 | 124 | 1/22/2025 |
2023.1.20 | 110 | 9/20/2025 |
2023.1.18 | 115 | 9/20/2025 |
2023.1.17 | 113 | 9/5/2025 |
2023.1.14 | 169 | 8/29/2025 |
2023.1.13 | 95 | 5/31/2025 |
2023.1.12 | 166 | 5/18/2025 |
2023.1.11 | 119 | 5/18/2025 |
2023.1.10 | 176 | 4/29/2025 |
2023.1.9 | 177 | 3/18/2025 |
2023.1.8 | 136 | 3/1/2025 |
2023.1.7 | 117 | 2/22/2025 |
2023.1.6 | 135 | 2/22/2025 |
2023.1.5 | 131 | 2/18/2025 |
2023.1.4 | 134 | 1/26/2025 |
2023.1.3 | 118 | 1/26/2025 |
2023.1.2 | 120 | 1/22/2025 |
2023.1.1 | 123 | 1/22/2025 |
2022.1.20 | 115 | 9/20/2025 |
2022.1.18 | 106 | 9/20/2025 |
2022.1.17 | 106 | 9/5/2025 |
2022.1.16 | 156 | 9/3/2025 |
2022.1.14 | 175 | 8/29/2025 |
2022.1.13 | 94 | 5/31/2025 |
2022.1.12 | 160 | 5/18/2025 |
2022.1.11 | 125 | 5/18/2025 |
2022.1.10 | 201 | 4/29/2025 |
2022.1.9 | 182 | 3/18/2025 |
2022.1.8 | 141 | 3/1/2025 |
2022.1.7 | 131 | 2/22/2025 |
2022.1.6 | 128 | 2/22/2025 |
2022.1.5 | 126 | 2/18/2025 |
2022.1.4 | 142 | 1/26/2025 |
2022.1.3 | 126 | 1/26/2025 |
2022.1.2 | 118 | 1/22/2025 |
2022.1.1 | 123 | 1/22/2025 |
2021.1.20 | 110 | 9/20/2025 |
2021.1.18 | 114 | 9/20/2025 |
2021.1.17 | 104 | 9/5/2025 |
2021.1.14 | 157 | 8/29/2025 |
2021.1.13 | 94 | 5/31/2025 |
2021.1.12 | 168 | 5/18/2025 |
2021.1.11 | 122 | 5/18/2025 |
2021.1.10 | 180 | 4/29/2025 |
2021.1.9 | 185 | 3/18/2025 |
2021.1.8 | 132 | 3/1/2025 |
2021.1.7 | 130 | 2/22/2025 |
2021.1.6 | 125 | 2/22/2025 |
2021.1.5 | 123 | 2/18/2025 |
2021.1.4 | 131 | 1/26/2025 |
2021.1.3 | 119 | 1/26/2025 |
2021.1.2 | 115 | 1/22/2025 |
2021.1.1 | 113 | 1/22/2025 |
2020.1.20 | 114 | 9/20/2025 |
2020.1.18 | 114 | 9/20/2025 |
2020.1.17 | 124 | 9/5/2025 |
2020.1.14 | 159 | 8/29/2025 |
2020.1.13 | 94 | 5/31/2025 |
2020.1.12 | 169 | 5/18/2025 |
2020.1.11 | 122 | 5/18/2025 |
2020.1.10 | 178 | 4/29/2025 |
2020.1.9 | 172 | 3/18/2025 |
2020.1.8 | 134 | 3/1/2025 |
2020.1.7 | 139 | 2/22/2025 |
2020.1.6 | 121 | 2/22/2025 |
2020.1.5 | 138 | 2/18/2025 |
2020.1.4 | 137 | 1/26/2025 |
2020.1.3 | 115 | 1/26/2025 |
2020.1.2 | 115 | 1/22/2025 |
2020.1.1 | 120 | 1/22/2025 |
2020.1.0 | 112 | 1/21/2025 |