Переместить тела до пересечения

Автор Тема: Переместить тела до пересечения  (Прочитано 2254 раз)

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

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Решаема ли методами АПИ следующая задача:

есть два солида, необходимо сместить один из них в направлении другого по вектору линия которого соединяет их центры



до их соприкосновения



Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Переместить тела до пересечения
« Ответ #1 : 22-03-2019, 10:23:47 »
А чего Вы хотите добиться? Solid - это внутреннее представление геометрии, чтобы что-то поменять в модели нужно править положение элементов. Но если только для анализа - смотрите класс SolidUtils, там есть метод CreateTransformed. У самого solid-а есть метод ComputeCentroid

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Переместить тела до пересечения
« Ответ #2 : 22-03-2019, 10:44:59 »
А чего Вы хотите добиться?
1.Получить солиды двух объектов из ревита.
2.Произвести операцию на картинках выше
3.Получить координату центра смещенного солида
4.Сместить объект ревита в модели в полученную координату


Может подход неверный, пытаюсь с чего то начать.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Переместить тела до пересечения
« Ответ #3 : 22-03-2019, 10:52:34 »
Перемудрили. Скорее всего, достаточно получить bounding box-ы элементов и сдвинуть второй элемент по направлению вектора от центра второго к центру первого box-а. Ну на край, так же, но с solid-ами с использованием метода ComputeCentroid. Двигать сам 2 solid не нужно. ElementTransformUtils Вам в помощь

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Переместить тела до пересечения
« Ответ #4 : 22-03-2019, 10:58:40 »
А как определить что дела соприкоснулись ?  Мне нужно переместить один объект пока он не соприкоснется вплотную к другому (чтобы один объект не "вошел" в другой)

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Переместить тела до пересечения
« Ответ #5 : 22-03-2019, 11:09:22 »
Ну тогда да, получить solid-ы, построить Line из центров, методом Solid.IntersectWithCurve получить точки пересечения линии и тел, по этим точкам построить вектор смещения 2-ого объекта