Сообщество программистов Autodesk в СНГ
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
1 час
1 день
1 неделя
1 месяц
Навсегда
Новости:
Образовательный курс по платформе Autodesk Forge.
Начало
Сайт
Правила
Помощь
Поиск
Непрочитанные
Календарь
Вход
Регистрация
Сообщество программистов Autodesk в СНГ
»
ADN Club
»
Revit API
»
Как получить координаты Solid?
« предыдущая тема
следующая тема »
Печать
Страницы: [
1
]
Вниз
Автор
Тема: Как получить координаты Solid? (Прочитано 3860 раз)
0 Пользователей и 1 Гость просматривают эту тему.
Тема содержит сообщение с Решением.
Нажмите здесь чтобы посмотреть его.
Anatoly
ADN OPEN
Сообщений: 62
Карма: 3
Skype:
Как получить координаты Solid?
«
:
29-07-2017, 10:50:20 »
Здравствуйте.
Нужно получить координаты в модели Solid'а.
В частности, координаты центра типа BoundingBox(min+max)/2
Через .GetBoundingBox() всегда получаются координаты центра равные 0,0,0, где бы тело не находилось.
«
Последнее редактирование: 29-07-2017, 13:04:21 от Anatoly
»
Записан
Александр Ривилис
Administrator
Сообщений: 13830
Карма: 1784
Рыцарь ObjectARX
Skype:
Re: Как получить координаты Solid?
«
Ответ #1 :
29-07-2017, 13:36:44 »
Виктор Чекалин
сейчас в отпуске, так что придётся немного подождать.
Пока уточните:
1) Код, которым вы пытаетесь получить GetBoundingBox.
2) Версию Revit, так как если мне не изменят память в Revit 2013 был баг в этом методе.
Записан
Не забывайте про правильное
Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился
правильный ответ
, то не забудьте про кнопку
Решение
Anatoly
ADN OPEN
Сообщений: 62
Карма: 3
Skype:
Re: Как получить координаты Solid?
«
Ответ #2 :
29-07-2017, 18:35:40 »
Revit 2015, Visual Studio 2015
Код - vb.net
[Выбрать]
....
Dim
mysolid
As
Solid
=
CType
(
geomObj, Solid
)
....
Dim
boxs
As
BoundingBoxXYZ
=
mysolid.
GetBoundingBox
(
)
«
Последнее редактирование: 29-07-2017, 20:29:21 от Александр Ривилис
»
Записан
Александр Ривилис
Administrator
Сообщений: 13830
Карма: 1784
Рыцарь ObjectARX
Skype:
Re: Как получить координаты Solid?
«
Ответ #3 :
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
Записан
Не забывайте про правильное
Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился
правильный ответ
, то не забудьте про кнопку
Решение
Anatoly
ADN OPEN
Сообщений: 62
Карма: 3
Skype:
Re: Как получить координаты Solid?
«
Ответ #4 :
30-07-2017, 23:09:46 »
Судя по всему .GetBoundingBox() возвращает значения в локальной системе координат Solid'a,
где центр всегда в точке 0.0,0.
Поэтому нужен перевод в координатную систему проекта.
Вопрос как?
Пока перебором точек вершин граней Solid'a нашел Min и Max точки (у них координаты реальные), и по ним центр.
Записан
Отмечено как Решение
Александр Ривилис
31-07-2017, 16:00:15
Александр Ривилис
Administrator
Сообщений: 13830
Карма: 1784
Рыцарь ObjectARX
Skype:
Re: Как получить координаты Solid?
«
Ответ #5 :
30-07-2017, 23:55:54 »
Интересно, а метод
Solid.ComputeCentroid
не даёт тебе нужный результат?
Кстати, у BoundingBoxXYZ есть свойство Transform, которое (по описанию) как раз и должно быть матрицей преобразования из системы координат BoundingBoxXYZ в систему координат модели.
Т.е. тебе все координаты нужно преобразовать по матрице
boxs.Transform
Записан
Не забывайте про правильное
Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился
правильный ответ
, то не забудьте про кнопку
Решение
Anatoly
ADN OPEN
Сообщений: 62
Карма: 3
Skype:
Re: Как получить координаты Solid?
«
Ответ #6 :
31-07-2017, 15:21:28 »
Да, действительно, и по точкам вершин, и центроид и
Код - vb.net
[Выбрать]
Dim
bboxTransformed
As
Transform
=
intobj.
GetBoundingBox
.
Transform
Dim
ptc
As
XYZ
=
bboxTransformed.
Origin
выдают один результат, разница в 6-7 знаке после запятой.
Спасибо
Записан
+1/-0 к карме за данное сообщение
Александр Ривилис
Administrator
Сообщений: 13830
Карма: 1784
Рыцарь ObjectARX
Skype:
Re: Как получить координаты Solid?
«
Ответ #7 :
31-07-2017, 15:59:50 »
Можно считать, что проблема решена?
Записан
Не забывайте про правильное
Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился
правильный ответ
, то не забудьте про кнопку
Решение
Anatoly
ADN OPEN
Сообщений: 62
Карма: 3
Skype:
Re: Как получить координаты Solid?
«
Ответ #8 :
31-07-2017, 16:47:50 »
Да, спасибо
Записан
Печать
Страницы: [
1
]
Вверх
« предыдущая тема
следующая тема »
Сообщество программистов Autodesk в СНГ
»
ADN Club
»
Revit API
»
Как получить координаты Solid?