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

ADN Club => Revit API => Тема начата: shss от 13-08-2018, 07:53:19

Название: Получение координат элемента из связанного файла
Отправлено: shss от 13-08-2018, 07:53:19
Добрый день!

У меня есть центральная модель со связанными файлами, где настроены общие координаты модели. Из центральной модели я легко получаю все элементы связанного файла в системе координат центральной модели через трансформацию
Код - C# [Выбрать]
  1. revitLinkInstance.GetLinkDocument().GetTotalTransform()
. Но не все пользователи работают с центральной моделью, а лишь со связанными файлами или не имеют доступа к центральной модели вовсе. Возможно ли получить координаты из связанного файла в координатах центральной модели?
Название: Re: Получение координат элемента из связанного файла
Отправлено: Александр Пекшев aka Modis от 13-08-2018, 10:08:50
Несколько раз прочитал, но так и не понял...
Разве это
Из центральной модели я легко получаю все элементы связанного файла в системе координат центральной модели через трансформацию
и это
Возможно ли получить координаты из связанного файла в координатах центральной модели?
не одно и тоже?
Название: Re: Получение координат элемента из связанного файла
Отправлено: shss от 13-08-2018, 10:13:14
нет.
Из открытой центральной модели я могу получить доступ к элементам связанного файла и конвертировать координаты.
Мне нужно получить координаты(в системе координат центральной модели) из открытого связанного файла.
Название: Re: Получение координат элемента из связанного файла
Отправлено: Александр Игнатович от 13-08-2018, 10:19:26
Привет. Средствами Revit API - никак. Да и один и тот же файл может быть связанным файлом в разных моделях. Только сторонними - писать данные из матрицы трансформации RevitLinkInstance.GetTotalTransform() в файл, базу, облако...
Название: Re: Получение координат элемента из связанного файла
Отправлено: shss от 13-08-2018, 10:25:25
писать данные из матрицы трансформации RevitLinkInstance.GetTotalTransform() в файл
Пробовал такое провернуть несколькими вариантами:
1. Сериализацию класса - с этим проблема, потому как COM, сложно сериализовать, и при десериализации возникают проблемы.
2. Копировал доступные свойства и хотел создать элемент трансформации, но у него нет конструктора, для реализации свойств. Как я понял он может быть только скопирован или получен.

Нашел, временное решение:
Элементы связанного файла (при инициализации общих координат) в свойстве Host содержат RevitLinkInstance на центральную модель... но как быть с элементами дверей, у которых Host - это стена? 
Название: Re: Получение координат элемента из связанного файла
Отправлено: Александр Пекшев aka Modis от 13-08-2018, 10:26:48
но как быть с элементами дверей, у которых Host - это стена?
Взять хост у самого хоста
Название: Re: Получение координат элемента из связанного файла
Отправлено: Александр Игнатович от 13-08-2018, 10:28:31
А зачем так сложно? Достаточно сохранить координаты transform.Origin, transform.BasisX, transform.BasisY, transform.BasisZ.

Конструктора нет, но есть статический Transform.Identity, вышеперечисленные свойства доступны для записи
Название: Re: Получение координат элемента из связанного файла
Отправлено: shss от 13-08-2018, 10:30:30
Взять хост у самого хоста
Возможно...Надо попробовать, реализовать этот вариант
Название: Re: Получение координат элемента из связанного файла
Отправлено: shss от 13-08-2018, 10:30:59
Достаточно сохранить координаты transform.Origin, transform.BasisX, transform.BasisY, transform.BasisZ.
Разве этого будет достаточно?
Название: Re: Получение координат элемента из связанного файла
Отправлено: Александр Игнатович от 13-08-2018, 10:35:43
Ага, четвертый столбец матрицы преобразования (0, 0, 0, 1)T. А с хостом вообще сильно сомневаюсь, что получится, тем более, если по условию задачи к центральной модели вообще может не быть доступа, или если файл является связанным для разных моделей
Название: Re: Получение координат элемента из связанного файла
Отправлено: shss от 13-08-2018, 10:47:12
Ага, четвертый столбец матрицы преобразования (0, 0, 0, 1)T.
Тогда буду пробовать этот вариант реализации.

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