Не копируется группа методом .CopyElements

Автор Тема: Не копируется группа методом .CopyElements  (Прочитано 2151 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Павел Тер-МикаэлянАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 124
  • Карма: 5
Добрый день, подскажите пожалуйста, я хочу скопировать группу из одного сем-ва в другое. Но при копировании выдается исключение "Some of the elements cannot be copied, because they are view-specific". В чем может быть ошибка?

Код - C# [Выбрать]
  1. public void copy_group(Document familyDoc,                        
  2.                        Document  familyDoc2,
  3.                        int id_group)
  4.         {
  5.             ElementId el_id = familyDoc2.GetElement(new ElementId(id_group)).Id;
  6.             ICollection<ElementId> Coll = new Collection<ElementId>();  
  7.             Coll.Add(el_id);
  8.             using (Transaction t = new Transaction(familyDoc, "Ред. сем."))
  9.             {
  10.                 t.Start();
  11.                 //копирование группы(здесь ошибка)
  12.                 ElementTransformUtils.CopyElements(familyDoc2,
  13.                                                    Coll,
  14.                                                    familyDoc,
  15.                                                    Transform.Identity,
  16.                                                    new CopyPasteOptions());
  17.                 t.Commit();
  18.             }            
  19.         }
  20.  

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Ну так в описании ошибки конкретно указано, что некоторые элементы специфичны для вида, т.е., например, аннотации, тексты, размеры и т.д. Есть метод
Код - C# [Выбрать]
  1. public static ICollection<ElementId> CopyElements(
  2.         View sourceView,
  3.         ICollection<ElementId> elementsToCopy,
  4.         View destinationView,
  5.         Transform additionalTransform,
  6.         CopyPasteOptions options
  7. )

для копирования между видами. Возможно, лучшим решением будет копировать элементы, содержащиеся в группе, и затем их в новом документе уже пересобирать обратно в группу

Оффлайн Павел Тер-МикаэлянАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 124
  • Карма: 5
Ну так в описании ошибки конкретно указано, что некоторые элементы специфичны для вида, т.е., например, аннотации, тексты, размеры и т.д. Есть метод
Код - C# [Выбрать]

    public static ICollection<ElementId> CopyElements(
            View sourceView,
            ICollection<ElementId> elementsToCopy,
            View destinationView,
            Transform additionalTransform,
            CopyPasteOptions options
    )


для копирования между видами. Возможно, лучшим решением будет копировать элементы, содержащиеся в группе, и затем их в новом документе уже пересобирать обратно в группу

На счет CopyElements, мне нужно копировать из документа в документ, а CopyElements, как я понимаю, копирует в одном документе с вида на вид.
Попробовал разбить группу и скопировать отдельный элемент - одну линию (DetailLine) - выдает ту же ошибку. То есть как я понимаю, линия - это специфичный элемент и его нельзя скопировать из документа в документ (копирую из семейства  категории "Типовая Аннотация" в такое же семейство)?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Да, DetailLine специфичный для вида. Насколько помню, указанный метод для копирования элементов поддерживает копирование между видами из разных документов.
В справке
Цитировать
The destination view can be in the same document as the source view.

Can be, а может и не быть)

Оффлайн Павел Тер-МикаэлянАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 124
  • Карма: 5
Ясно, спасибо, попробую скопировать с вида на вид, может получится)