Как установить Transform для FamilyInstance?

Автор Тема: Как установить Transform для FamilyInstance?  (Прочитано 2128 раз)

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

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

  • ADN OPEN
  • ***
  • Сообщений: 124
  • Карма: 5
Добрый день, подскажите пожалуйста, есть два документа, в них два одинаковых 3D семейства, в одном документе семейство вставлено и имеет свои Transform и LocationPoint, задача вставить в другом документе это семейство по аналогии, т.е., чтобы оно имело те же LocationPoint и Transform. Тип размещения семейств FamilyPlacementType.OneLevelBased. Вставляю методом NewFamilyInstance, но он принимает только XYZ в качестве координаты. Методом LocationPoint.Rotate я поворачиваю экземпляр на нужный угол, а как задать Transform? Метод ElementTransformUtils.CopyElements из одного документа в другой не подходит, т.к. при малейших различиях в семействах, во вставляемом проекте создается новое семейство с новыми типоразмерами с припиской "2". Можно конечно вычислить на какой угол, сколько раз и относительно какой линии нужно повернуть семейство, чтобы Transform совпали, но кажется, должен быть другой способ. Смотрел свойство GeometryInstance.Transform, но оно только для чтения, объект FamilyInstance.GetTransform() не влияет никак на модель, свойства SetTransform нету.

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Как установить Transform для FamilyInstance?
« Ответ #1 : 17-07-2018, 13:53:29 »
Вам нужно использовать методы из вспомогательного класса ElementTransformUtils, чтобы трансформировать семейство в нужное состояние

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

  • ADN OPEN
  • ***
  • Сообщений: 124
  • Карма: 5
Re: Как установить Transform для FamilyInstance?
« Ответ #2 : 17-07-2018, 14:23:55 »
Вам нужно использовать методы из вспомогательного класса ElementTransformUtils, чтобы трансформировать семейство в нужное состояние
Просто я пытаюсь понять, а какой метод ElementTransformUtils использовать? CopyElement скопирует элемент и предыдущий мне придется удалять, т.к. таких действий нужно делать много, то это сильно затормозит процесс, хотелось бы сразу задать Transform для вставленного экземпляра. Для RotateElement нужно вычислять углы и вектора для поворота, и в этом собственно и вопрос, можно ли задать Transform у одного элемента, как у другого, не вычисляя их различия, без вспомогательного копирования и последующего удаления?

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Как установить Transform для FamilyInstance?
« Ответ #3 : 17-07-2018, 14:24:55 »
можно ли задать Transform у одного элемента, как у другого, не вычисляя их различия, без вспомогательного копирования и последующего удаления?
Нет

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

  • ADN OPEN
  • ***
  • Сообщений: 124
  • Карма: 5
Re: Как установить Transform для FamilyInstance?
« Ответ #4 : 17-07-2018, 14:29:10 »
Понятно, спасибо за ответ)