ADN Club => Revit API => Тема начата: Anatoly от 29-07-2017, 10:50:20
Название: Как получить координаты Solid?
Отправлено: Anatoly от 29-07-2017, 10:50:20
Здравствуйте. Нужно получить координаты в модели Solid'а. В частности, координаты центра типа BoundingBox(min+max)/2 Через .GetBoundingBox() всегда получаются координаты центра равные 0,0,0, где бы тело не находилось.
Название: Re: Как получить координаты Solid?
Отправлено: Александр Ривилис от 29-07-2017, 13:36:44
Виктор Чекалин сейчас в отпуске, так что придётся немного подождать. Пока уточните: 1) Код, которым вы пытаетесь получить GetBoundingBox. 2) Версию Revit, так как если мне не изменят память в Revit 2013 был баг в этом методе.
Название: Re: Как получить координаты Solid?
Отправлено: Anatoly от 29-07-2017, 18:35:40
Dim boxs As BoundingBoxXYZ =mysolid.GetBoundingBox()
Название: Re: Как получить координаты Solid?
Отправлено: Александр Ривилис от 29-07-2017, 20:35:42
1. Прочитай у меня в подписи про форматирование кода на форуме и соблюдай его в дальнейшем. 2. Какие значения boxs.Min.X, boxs.Min.Y, boxs.Min.Z и boxs.Max.X, boxs.Max.Y, boxs.Max.Z получаешь? 3. Здесь пример использования GetBoundingBox, который строит на его основе параллелепипед (Solid): http://thebuildingcoder.typepad.com/files/om_samplesplitboundingbox.zip
Название: Re: Как получить координаты Solid?
Отправлено: Anatoly от 30-07-2017, 23:09:46
Судя по всему .GetBoundingBox() возвращает значения в локальной системе координат Solid'a, где центр всегда в точке 0.0,0. Поэтому нужен перевод в координатную систему проекта. Вопрос как?
Пока перебором точек вершин граней Solid'a нашел Min и Max точки (у них координаты реальные), и по ним центр.
Название: Re: Как получить координаты Solid?
Отправлено: Александр Ривилис от 30-07-2017, 23:55:54
Интересно, а метод Solid.ComputeCentroid не даёт тебе нужный результат? Кстати, у BoundingBoxXYZ есть свойство Transform, которое (по описанию) как раз и должно быть матрицей преобразования из системы координат BoundingBoxXYZ в систему координат модели. Т.е. тебе все координаты нужно преобразовать по матрице boxs.Transform
Название: Re: Как получить координаты Solid?
Отправлено: Anatoly от 31-07-2017, 15:21:28
Да, действительно, и по точкам вершин, и центроид и