AnlaxRevitTools 2024.1.20

There is a newer version of this package available.
See the version list below for details.
dotnet add package AnlaxRevitTools --version 2024.1.20
                    
NuGet\Install-Package AnlaxRevitTools -Version 2024.1.20
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AnlaxRevitTools" Version="2024.1.20" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AnlaxRevitTools" Version="2024.1.20" />
                    
Directory.Packages.props
<PackageReference Include="AnlaxRevitTools" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AnlaxRevitTools --version 2024.1.20
                    
#r "nuget: AnlaxRevitTools, 2024.1.20"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AnlaxRevitTools@2024.1.20
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AnlaxRevitTools&version=2024.1.20
                    
Install as a Cake Addin
#tool nuget:?package=AnlaxRevitTools&version=2024.1.20
                    
Install as a Cake Tool

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();
Преимущества регистрации
  1. Предотвращение ошибок при горячем обновлении - все зарегистрированные окна будут корректно закрыты при перезагрузке плагина
  2. Защита от дублирования окон - можно проверить, не открыто ли уже нужное окно
  3. Централизованное управление - возможность закрыть все окна плагина одной командой
Основные методы
// Регистрация окна (ОБЯЗАТЕЛЬНО для модальных окон)
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" />

Ручная установка

  1. Скачайте последнюю версию библиотеки
  2. Добавьте ссылку на AnlaxRevitTools в ваш проект
  3. Убедитесь, что у вас установлена совместимая версия .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 Compatible and additional computed target framework versions.
.NET Framework net48 is compatible.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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