Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Выборка

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

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


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

Блок кода
languagec#
titleC#
 public interface IRevitCommand : ICommand

Наследование: ICommand IRevitCommand


Section

Навигация

Column

Свойства

Методы

Примеры

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

Якорь
Свойства
Свойства
Свойства

Возвращает имя группы команд на вкладке Разработчика
ControlВозвращает объект описывающий элемент управления для Команды
TooltipImageВозвращает пиктограмму/картинку для расширенной подсказки Revit
GroupName

Якорь
Методы
Методы
Методы

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

Якорь
Примеры
Примеры
Примеры

В этом примере рассматривается отправка событий аудита в ЛК
Раскрыть
titleОписание команды

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

Блок кода
languagec#
titleC#
using ARO.AIS.API;
using ARO.AIS.API.AuditRevit;
using ARO.AIS.API.LogsUtils;
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 GroupNameUid => "Samples00000000000000000000000000000000";

        public string UidName => "00000000000000000000000000000000Sample command";

        		public string NameTooltip => "SampleShort commandtooltip";

            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}.!.IRevitControl Control => AISTools.RevitTool.CreateButton().AsSingleOnly().SetSize(RevitButtonSize.LARGE).ToGroup("Samples");

		public byte[] TooltipImage          return true;
        }

        public void ForcedStop(object application) { }
    }
}
Раскрыть
titleРабота с транзакцией Revit

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

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

Блок кода
languagec#
titleC#
namespace ARO.AIS.Revit.Commands
{
    public class TransactionExample
    {
        private readonly IRevitTransaction _revitTransactions;
        private readonly string _sampleTransactionUid;

        public TransactionExample(IRevitTransaction revitTransactions=> null;

        public byte Execute(object application, IRevitTransaction transaction)
        {
            _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();
                //MessageBox.Show($"Current Username: {(application as UIApplication)?.Application?.Username}");

            return    transaction.Commit()RevitCommandStatus.OK;
            }
        }
    }
}
Предупреждение

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

Раскрыть
titleОтправка лог-сообщения

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

Блок кода
namespace ARO.AIS.Revit.Commands
{
    public class LogExample
    {
        public LogExample(ILogs logs)
        {
            logs.AddToLog(LogLevel.INFO, "Test send log message");
        void ForcedStop(object application) { }
    }
}

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

Блок кода
languagec#
titleC#
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 Кб).

Раскрыть
titleОтправка события аудита


Якорь
ПодробноеОписание
ПодробноеОписание
Подробное описание

Свойства


Якорь
IRevitCommand_Control
IRevitCommand_Control
Control

Возвращает объект описывающий элемент управления для Команды. Не может быть null.

Блок кода
languagec#
titleC#
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 байт.

ЯкорьПодробноеОписаниеПодробноеОписаниеПодробное описание

Свойства

ЯкорьGroupNameGroupName
IRevitControl Control { get; }


Якорь
IRevitCommand_TooltipImage
IRevitCommand_TooltipImage
TooltipImage

GroupName

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

Блок кода
languagec#
titleC#
stringbyte[] GroupNameTooltipImage { get; }

Методы


Якорь
Execute
Execute
Execute(object, IRevitTransaction

, ILogs, IAudit

)

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

Блок кода
languagec#
titleC#
boolbyte Execute(object application, IRevitTransaction transaction, ILogs logs, IAudit audit)

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

Возвращаемое значение
ILogs logs - объект позволяющий отправлять в ЛК лог-сообшения. Ограничения: одно сообщение не более 1 Кб.
IAudit audit - объект позволяющий отправлять в ЛК события аудита. Ограничения: общий объем одного подготовленного события (описание + данные) не должен превышать 512 байт.
Возвращаемое значение
bool - флаг корректности работы/запуска командыbyte - результат (статус) работы Команды. Допустимые значения могут быть получены из вспомогательного класса по кодированию статуса Команды для Revit (RevitCommandStatus).


Якорь
ForcedStop
ForcedStop
ForcedStop(object)

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

Блок кода
languagec#
titleC#
void ForcedStop(object application)

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

...