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

ADN Club => Revit API => Тема начата: Павел Тер-Микаэлян от 14-11-2018, 16:08:07

Название: Не копируется группа методом .CopyElements
Отправлено: Павел Тер-Микаэлян от 14-11-2018, 16:08:07
Добрый день, подскажите пожалуйста, я хочу скопировать группу из одного сем-ва в другое. Но при копировании выдается исключение "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.  
Название: Re: Не копируется группа методом .CopyElements
Отправлено: Александр Игнатович от 14-11-2018, 16:12:06
Ну так в описании ошибки конкретно указано, что некоторые элементы специфичны для вида, т.е., например, аннотации, тексты, размеры и т.д. Есть метод
Код - C# [Выбрать]
  1. public static ICollection<ElementId> CopyElements(
  2.         View sourceView,
  3.         ICollection<ElementId> elementsToCopy,
  4.         View destinationView,
  5.         Transform additionalTransform,
  6.         CopyPasteOptions options
  7. )

для копирования между видами. Возможно, лучшим решением будет копировать элементы, содержащиеся в группе, и затем их в новом документе уже пересобирать обратно в группу
Название: Re: Не копируется группа методом .CopyElements
Отправлено: Павел Тер-Микаэлян от 14-11-2018, 16:33:21
Ну так в описании ошибки конкретно указано, что некоторые элементы специфичны для вида, т.е., например, аннотации, тексты, размеры и т.д. Есть метод
Код - C# [Выбрать]

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


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

На счет CopyElements, мне нужно копировать из документа в документ, а CopyElements, как я понимаю, копирует в одном документе с вида на вид.
Попробовал разбить группу и скопировать отдельный элемент - одну линию (DetailLine) - выдает ту же ошибку. То есть как я понимаю, линия - это специфичный элемент и его нельзя скопировать из документа в документ (копирую из семейства  категории "Типовая Аннотация" в такое же семейство)?
Название: Re: Не копируется группа методом .CopyElements
Отправлено: Александр Игнатович от 14-11-2018, 16:37:02
Да, DetailLine специфичный для вида. Насколько помню, указанный метод для копирования элементов поддерживает копирование между видами из разных документов.
В справке
Цитировать
The destination view can be in the same document as the source view.

Can be, а может и не быть)
Название: Re: Не копируется группа методом .CopyElements
Отправлено: Павел Тер-Микаэлян от 14-11-2018, 16:56:14
Ясно, спасибо, попробую скопировать с вида на вид, может получится)