Получить геометрический центр объектов находящихся в SelectionSets

Автор Тема: Получить геометрический центр объектов находящихся в SelectionSets  (Прочитано 5442 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Добрый день!
Есть задача....
Получить геометрический центр объектов находящихся в  SelectionSets , чтобы потом отзеркалить их через этот центр.
На ум приходит самый простой и трудоемкий способ....
Перебор поэлементно набора SelectionSets, определение типа его элементов (линия, окружность, сплайн и т.д.) получение  координат крайних точек элемента, проверка полученных значений по условию (<>) и если условие выполнено запись нового значения в переменную.
Вопрос...
А существует ли более элегантный способ выполнения поставленной задачи?
Примеры, ссылки, советы приветствуются.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Получить геометрический центр объектов
Осталось понять что такое геометрический центр. Его можно считать как центр центров объектов с учетом или без учета их площади. А можно превратить кривые в Region'ы, объединить их и получить Centroid суммарного Region.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Да, с учетом площади элементов .
Объединять не желательно и или не возможно (в прямоугольнике есть отверстия, размеры)

Отмечено как Решение Vladimir 09-06-2015, 14:44:50

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Ну тогда для каждого из примитивов в SelectionSet используя метод GetBoundingBox получаешь угловые точки окаймляющего прямоугольника. Получаешь площадь (S) и центр (x, y, z) этого прямоугольника.
Псевдокод:
Xcentr = ((x1*S1)+(x2*S2) + ... +(xn*Sn)) / (S1+S2+...+Sn)
Ycentr = ((y1*S1)+(y2*S2) + ... +(yn*Sn)) / (S1+S2+...+Sn)
Zcentr = ((z1*S1)+(z2*S2) + ... +(zn*Sn)) / (S1+S2+...+Sn)
« Последнее редактирование: 09-06-2015, 14:13:25 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Спасибо.
Если подошло, то отметь решение как у меня в подписи. Если нет - будем искать решение дальше.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Да, обязательно, закрутился.
Еще раз спасибо.