Пространство имен: ARO.AIS.API.Revit Сборка: ARO.AIS.API.dll
Интерфейс описания команд для ПО Revit. public interface IRevitCommand : ICommand |
Наследование: ICommand → IRevitCommand
Свойства
GroupName | Возвращает имя группы команд на вкладке Разработчика |
Методы
Примеры
В этом примере рассматривается создание класса команды. 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. |