Сообщество программистов Autodesk в СНГ
ADN Club => Revit API => Тема начата: enot от 22-03-2019, 10:05:41
-
Решаема ли методами АПИ следующая задача:
есть два солида, необходимо сместить один из них в направлении другого по вектору линия которого соединяет их центры
(https://i.postimg.cc/G8tc0GTb/2019-03-22-10-01-13.png) (https://postimg.cc/G8tc0GTb)
до их соприкосновения
(https://i.postimg.cc/hzNRHwq0/2019-03-22-10-05-05.png) (https://postimg.cc/hzNRHwq0)
-
А чего Вы хотите добиться? Solid - это внутреннее представление геометрии, чтобы что-то поменять в модели нужно править положение элементов. Но если только для анализа - смотрите класс SolidUtils, там есть метод CreateTransformed. У самого solid-а есть метод ComputeCentroid
-
А чего Вы хотите добиться?
1.Получить солиды двух объектов из ревита.
2.Произвести операцию на картинках выше
3.Получить координату центра смещенного солида
4.Сместить объект ревита в модели в полученную координату
Может подход неверный, пытаюсь с чего то начать.
-
Перемудрили. Скорее всего, достаточно получить bounding box-ы элементов и сдвинуть второй элемент по направлению вектора от центра второго к центру первого box-а. Ну на край, так же, но с solid-ами с использованием метода ComputeCentroid. Двигать сам 2 solid не нужно. ElementTransformUtils Вам в помощь
-
А как определить что дела соприкоснулись ? Мне нужно переместить один объект пока он не соприкоснется вплотную к другому (чтобы один объект не "вошел" в другой)
-
Ну тогда да, получить solid-ы, построить Line из центров, методом Solid.IntersectWithCurve получить точки пересечения линии и тел, по этим точкам построить вектор смещения 2-ого объекта