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

27/08/2014

Обработка случая дублирования типоразмеров при копировании элементов через API

При использовании метода ElementTransformUtils.CopyElements можно получить вот такое вот предупреждение:

 

Обработка случая дублирования типоразмеров при копировании элементов через API

Это окно может появится, когда вы копируете тип, которого не существует в проекте, но вложенный тип уже находится в этом же проекте.

Метод ElementTransformUtils.CopyElements имеет несколько перегруженных методов, в один из которых передается параметр CopyPasteOptions. С его помощью можно контролировать поведение Revit при возникновении ситуации с дублированием типов. Мы можем возвратить одно из двух значений:

  • UseDestinationTypes – продолжить операцию вставки с использованием имени типоразмера в проекте, в который осуществляется вставка.
  • Abort – Отмена операции

Для реализации нужно создать класс, реализующий интерфейс IDuplicateTypeNamesHandler. Класс должен иметь один метод и возвращать нужное действие.

Пример реализации класса:

Код - C#: [Выделить]
  1. public class CustomCopyHandler : IDuplicateTypeNamesHandler
  2. {
  3.   public DuplicateTypeAction OnDuplicateTypeNamesFound(
  4.     DuplicateTypeNamesHandlerArgs args)
  5.   {
  6.     return DuplicateTypeAction.UseDestinationTypes;
  7.   }
  8. }

Затем, перед вызовом метода CopyElements, создайте объект типа CopyPasteOptions и установите обработчик события, возникающий при копировании дублирующийся типов:

Код - C#: [Выделить]
  1. CopyPasteOptions options = new CopyPasteOptions();
  2.                 // задаем обработчик события обработчик события
  3.                 options.SetDuplicateTypeNamesHandler(new CustomCopyHandler());
  4.  
  5.                 //Копируем элементы
  6.                 ElementTransformUtils.CopyElements(document2, ss2, document1, Transform.Identity, options);

Спасибо Arnošt Löbel за ответ на нашем форуме.

Источник: http://adndevblog.typepad.com/aec/2014/08/handling-duplicate-types-on-copyelements.html

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

Опубликовано 27.08.2014