Пространство имен: ARO.AIS.API.Revit Сборка: ARO.AIS.API.dll
Интерфейс описания команд для ПО Revit. Блок кода |
---|
| public interface IRevitCommand : ICommand |
Наследование: ICommand → IRevitCommand
СвойстваControl | Возвращает объект описывающий элемент управления для Команды | TooltipImage | Возвращает пиктограмму/картинку для расширенной подсказки Revit | GroupName | Возвращает имя группы команд на вкладке Разработчика |
МетодыПримеры Раскрыть |
---|
| В этом примере рассматривается создание класса команды. Блок кода |
---|
| 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 . Блок кода |
---|
| 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) { }
}
} |
В этом примере рассматривается отправка информационного лог-сообщения в ЛК с отладочными данными. Блок кода |
---|
| 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 . Блок кода |
---|
| 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 | GroupName | IRevitControl Control { get; } |
Якорь |
---|
| IRevitCommand_TooltipImage |
---|
| IRevitCommand_TooltipImage |
---|
|
TooltipImageGroupNameВозвращает имя группы команд на вкладке Разработчика в панели Revit. Не может быть пустой строкой или Возвращает пиктограмму/картинку для расширенной подсказки Revit в виде массива байт. Может быть null
.
Блок кода |
---|
|
stringbyte[] GroupNameTooltipImage { get; } |
Методы
Execute(object, IRevitTransaction, ILogs, IAudit)
Вызывается в момент запуска команды с панели Revit.
Блок кода |
---|
|
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(object)Вызывается в случаях программного прерывания выполнения команды и выгрузки команды.
Блок кода |
---|
|
void ForcedStop(object application) |
Параметры
object application
- ссылка на объект UIApplication
, который представляет активный сеанс пользовательского интерфейса Revit.