Получение координат элемента из связанного файла

Автор Тема: Получение координат элемента из связанного файла  (Прочитано 3269 раз)

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

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Добрый день!

У меня есть центральная модель со связанными файлами, где настроены общие координаты модели. Из центральной модели я легко получаю все элементы связанного файла в системе координат центральной модели через трансформацию
Код - C# [Выбрать]
  1. revitLinkInstance.GetLinkDocument().GetTotalTransform()
. Но не все пользователи работают с центральной моделью, а лишь со связанными файлами или не имеют доступа к центральной модели вовсе. Возможно ли получить координаты из связанного файла в координатах центральной модели?

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Несколько раз прочитал, но так и не понял...
Разве это
Из центральной модели я легко получаю все элементы связанного файла в системе координат центральной модели через трансформацию
и это
Возможно ли получить координаты из связанного файла в координатах центральной модели?
не одно и тоже?

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
нет.
Из открытой центральной модели я могу получить доступ к элементам связанного файла и конвертировать координаты.
Мне нужно получить координаты(в системе координат центральной модели) из открытого связанного файла.

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Привет. Средствами Revit API - никак. Да и один и тот же файл может быть связанным файлом в разных моделях. Только сторонними - писать данные из матрицы трансформации RevitLinkInstance.GetTotalTransform() в файл, базу, облако...

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
писать данные из матрицы трансформации RevitLinkInstance.GetTotalTransform() в файл
Пробовал такое провернуть несколькими вариантами:
1. Сериализацию класса - с этим проблема, потому как COM, сложно сериализовать, и при десериализации возникают проблемы.
2. Копировал доступные свойства и хотел создать элемент трансформации, но у него нет конструктора, для реализации свойств. Как я понял он может быть только скопирован или получен.

Нашел, временное решение:
Элементы связанного файла (при инициализации общих координат) в свойстве Host содержат RevitLinkInstance на центральную модель... но как быть с элементами дверей, у которых Host - это стена? 

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

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
но как быть с элементами дверей, у которых Host - это стена?
Взять хост у самого хоста

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
А зачем так сложно? Достаточно сохранить координаты transform.Origin, transform.BasisX, transform.BasisY, transform.BasisZ.

Конструктора нет, но есть статический Transform.Identity, вышеперечисленные свойства доступны для записи

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Взять хост у самого хоста
Возможно...Надо попробовать, реализовать этот вариант

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Достаточно сохранить координаты transform.Origin, transform.BasisX, transform.BasisY, transform.BasisZ.
Разве этого будет достаточно?

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Ага, четвертый столбец матрицы преобразования (0, 0, 0, 1)T. А с хостом вообще сильно сомневаюсь, что получится, тем более, если по условию задачи к центральной модели вообще может не быть доступа, или если файл является связанным для разных моделей

Оффлайн shssАвтор темы

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Ага, четвертый столбец матрицы преобразования (0, 0, 0, 1)T.
Тогда буду пробовать этот вариант реализации.

А с хостом вообще сильно сомневаюсь
Попробовал, просто со связанными файлами - не работает, если задать общие координаты центральной модели с связанными файлами - работает, остался тест с несколькими файлами.. Но попробую реализовать первый вариант - кажется более стабильным.