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

ADN Club => Revit API => Тема начата: Vladislav от 13-09-2019, 16:28:32

Название: Координаты модели
Отправлено: Vladislav от 13-09-2019, 16:28:32
Добрый вечер. Возник такой вопрос.
   От какой точки отсчитываются координаты элементов модели в Revit API?.
Я имею в виду координаты, получаемые после вызова Face.Triangulate().
Судя по всему, это не та точка, от которой отсчитываются координаты Базовой точки проекта
и Точки съемки.
Благодарю за ответы.
Название: Re: Координаты модели
Отправлено: Александр Игнатович от 14-09-2019, 13:44:10
Почему Вы так решили?

Вообще говоря, Вы можете получать отличные координаты, если получаете геометрию типоразмера семейства, т.е. GetSymbolGeometry() вместо GetInstanceGeometry()

Если смотрите значения параметров базовой точки, то не забывайте, что координаты считаются в футах (лучше использовать UnitUtils.ConvertFrom... / ConvertTo...)
Название: Re: Координаты модели
Отправлено: Vladislav от 16-09-2019, 14:34:41
   Я работаю над конвертером моделей из Ревит в формат нашего программного продукта.
После того как я получаю меш Ревит-модели (вершины и треугольники) и отображаю его у себя
нулевая точка этого меша не совпадает ни с Базовой точкой проекта, ни с Точкой Съемки, ни с началом координат Ревит-модели.
При этом взаимное расположение всех элементов модели является корректным, всё отображается хорошо.
Геометрию получаю через свойство Geemetry для каждого FamilyInstance. Отсюда я делаю вывод, что у модели есть какой-то свой ноль.
Преобразование футов  в миллиметры не забываю.
Может, существует отдельная система координат модели? Со своим нулем?
Название: Re: Координаты модели
Отправлено: Алексей Кузин от 19-09-2019, 15:36:49
Если я правильно понимаю суть вопроса, то в семейсвах есть закрепленные плоскости, вроде бы начало системы модели определяется относительно этой системы.

Была задача корректно отправить геометрию, но она иногда отправлялась со смешением. Использовал вот такое дополнительное смещение.  Попробуйте, возможно поможет...

               
Цитировать
if (famInstance.Location is LocationPoint location)
                {
                    var inv = famInstance.GetTotalTransform().Inverse;
                    return inv.OfPoint(location.Point);
                }

Название: Re: Координаты модели
Отправлено: Александр Пекшев aka Modis от 22-09-2019, 14:05:17
Может, существует отдельная система координат модели? Со своим нулем?
Конечно существует - это внутренняя система координат модели. Её невозможно изменить и все методы возвращают координаты в этой системе координат