Пространство имен: ARO.AIS.API.Revit

Сборка: ARO.AIS.API.dll


Интерфейс описания команд для ПО Revit.

 public interface IRevitCommand : ICommand

Наследование: ICommandIRevitCommand


Навигация

Свойства

Методы

Примеры

Подробное описание

Свойства

GroupNameВозвращает имя группы команд на вкладке Разработчика

Методы

Execute(object, IRevitTransaction, ILogs, IAudit)Вызывается в момент запуска команды с панели Revit. 
ForcedStop(object)Вызывается в случаях программного прерывания выполнения команды и выгрузки команды.

Примеры

В этом примере рассматривается создание класса команды.

using ARO.AIS.API;
using ARO.AIS.API.Audit;
using ARO.AIS.API.Logs;
using ARO.AIS.API.Revit;
using Autodesk.Revit.UI;
using System;
using System.Windows;

namespace ARO.AIS.Revit.Commands
{
    public class SampleCommand : MarshalByRefObject, IRevitCommand
    {
        public string GroupName => "Samples";

        public string Uid => "00000000000000000000000000000000";

        public string Name => "Sample command";

        public string Description => "Show current user login";

        public Version Version => new Version(1, 0);

        public int Product => SupportedProduct.REVIT_2022;

        public byte[] Logo => null;

        public bool Execute(object application, IRevitTransaction transaction, ILogs logs, IAudit audit)
        {
            _ = MessageBox.Show($"Current Username: {(application as UIApplication).Application.Username}.!.");

            return true;
        }

        public void ForcedStop(object application) { }
    }
}


В этом примере рассматривается процесс работы с транзакциями Revit в рамках команды.

Для возможности обработки транзакции требуется зарегистрировать обработчик и вызвать его через функцию запуска RunTransaction.

namespace ARO.AIS.Revit.Commands
{
    public class TransactionExample
    {
        private readonly IRevitTransaction _revitTransactions;
        private readonly string _sampleTransactionUid;

        public TransactionExample(IRevitTransaction revitTransactions)
        {
            _revitTransactions = revitTransactions;

            _sampleTransactionUid = _revitTransactions.RegisterHandler(SampleTransaction);
        }

        public void RunTransaction()
        {
            _revitTransactions.RunTransaction(_sampleTransactionUid);
        }

        private void SampleTransaction(object application)
        {
            UIApplication app = application as UIApplication;

            using (Transaction transaction = new Transaction(app.ActiveUIDocument.Document, "Sample transaction"))
            {
                transaction.Start();
                //
                transaction.Commit();
            }
        }
    }
}

Работа с объектом Transaction вне обработчика вызовет ошибку времени выполнения.

В этом примере рассматривается отправка информационного лог-сообщения в ЛК без отладочных данных.

namespace ARO.AIS.Revit.Commands
{
    public class LogExample
    {
        public LogExample(ILogs logs)
        {
            logs.AddToLog(LogLevel.INFO, "Test send log message");
        }
    }
}


В этом примере рассматривается отправка информационного лог-сообщения в ЛК с отладочными данными.

namespace ARO.AIS.Revit.Commands
{
    public class LogExample
    {
        public LogExample(ILogs logs)
        {
            try
            {
                int error = 1 / 0;
            }
            catch (Exception ex)
            {
                logs.AddToLog(LogLevel.ERROR, "Division by zero", ex.Message);
            }
        }
    }
}

Общий объем (размер в байтах) одного лог-сообщения, включая отладочную  информацию, не должен превышать 1024 байта (1 Кб).


В этом примере рассматривается отправка событий аудита в ЛК.

namespace ARO.AIS.Revit.Commands
{
    public class AuditExample
    {
        public AuditExample(IAudit audit)
        {
            // событие о смене значения
            audit.AddAuditEvent(AuditAction.CHANGE, AuditCategory.FUNCTIONAL, 10, 2, "Изменения значения");

            // событие о действиях с UI
            audit.AddAuditEvent(AuditAction.INFO, AuditCategory.INTERFACE, 5, null, "Кол-во нажатий кнопки");
        }
    }
}

Общий объем (размер в байтах) одного события аудита не должен превышать 512 байт.

Подробное описание

Свойства


GroupName

Возвращает имя группы команд на вкладке Разработчика в панели Revit. Не может быть пустой строкой или null.

string GroupName { get; }

Методы


Execute(object, IRevitTransaction, ILogs, IAudit)

 Вызывается в момент запуска команды с панели Revit.

bool Execute(object application, IRevitTransaction transaction, ILogs logs, IAudit audit)

Параметры
object application - ссылка на объект UIApplication, который представляет активный сеанс пользовательского интерфейса Revit.
IRevitTransaction transaction - объект для управления вызовами транзакций Revit.
ILogs logs - объект позволяющий отправлять в ЛК лог-сообшения. Ограничения: одно сообщение не более 1 Кб.
IAudit audit - объект позволяющий отправлять в ЛК события аудита. Ограничения: общий объем одного подготовленного события (описание + данные) не должен превышать 512 байт.

Возвращаемое значение
bool - флаг корректности работы/запуска команды.


ForcedStop(object)

Вызывается в случаях программного прерывания выполнения команды и выгрузки команды.

void ForcedStop(object application)

Параметры
object application - ссылка на объект UIApplication, который представляет активный сеанс пользовательского интерфейса Revit.