ADN Open CIS
Сообщество программистов Autodesk в СНГ

30/09/2014

Обновление таблицы ключевых пометок

Вопрос: Я пытаюсь создать кнопку, по нажатию на которую перечитывается файл с ключевыми пометками. Не уверен точно, как это написать правильно, так как я не программировал для Revit. Я сделал своей первый плагин, но я не уверен как правильно вызывать функцию KeyBasedTreeEntryTable.Reload();

У меня получился вот такой код:

Код - C#: [Выделить]
  1. public Result Execute(
  2.     ExternalCommandData commandData,
  3.     ref string message,
  4.     ElementSet elements)
  5. {
  6.   UIApplication uiApp = commandData.Application;
  7.   Document doc = uiApp.ActiveUIDocument.Document;
  8.   KeyBasedTreeEntryTable.Reload();
  9.   return Result.Succeeded;
  10. }

К сожалению, этот код не работает.

 

Ответ мы получили от команды разработчиков Revit

Ответ: Если вы просто хотите обновить таблицу ключевых пометок из текущего файла, то вам нужно:

  1. Вызвать метод KeynoteTable.GetKeynoteTable(Document doc). Это статический метод, который вернет таблицу пометок для документа (нужно передать текущий открытый документ в параметр)

  2. Затем вызовите метод Reload() на полученной таблице.

В случае, если вы хотите обновить таблицу из другого файла, то в этом случае нужно воспользоваться методом LoadFrom. Этот метод принимает ExternalResourceReference в качестве аргумента. И если вам надо загрузить пометки именно из файла, то можно создать ExternalResourceReference с помощью ExternalResourceReference.CreateLocalResource.

Вот пример кода, как обновить пометки во втором случае:

Код - C#: [Выделить]
  1. public Result Execute(
  2.   ExternalCommandData commandData,
  3.   ref string message,
  4.   ElementSet elements)
  5. {
  6.     UIApplication uiapp = commandData.Application;
  7.     UIDocument uidoc = uiapp.ActiveUIDocument;
  8.     Application app = uiapp.Application;
  9.     Document doc = uidoc.Document;
  10.  
  11.     Transaction tr = new Transaction(doc, "Обновление");
  12.     tr.Start();
  13.  
  14.     KeynoteTable.GetKeynoteTable(doc).Reload(null);
  15.  
  16.     tr.Commit();
  17.     return Result.Succeeded;
  18. }

Источник: http://adndevblog.typepad.com/aec/2014/09/keynote-table-reload-and-happy-iphone-day.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=992

Опубликовано 30.09.2014
Отредактировано 30.09.2014 в 08:30:35