171 подписчик
Как может помочь высшая математика в BIM ?!?
Кратенько напишу как я мыслил, когда писал свой первый плагин. Задача была следующая:
- Упростить моделирование трубопроводных элементов на 3D видах.
- Ускорить соединение элементов.
- Соединять несоединяющиеся элементы :)
Все мы знаем как сложно добиться от Revit-а понимания какие коннектора нужно присоединить, а ещё в добавок надо всё идеально выровнять!
Логика у меня была следующая:
- Нужно взять координаты коннектора первого семейства и второго. Это два объекта XYZ.
- Далее просто переместить их в одну точку. Метод MoveElement который принимает вектор перемещения. Чтобы найти вектор по двум точкам нужно координаты этих точек просто отнять друг от друга.
- Дальше нам нужно найти плоскость в которой расположены 2 трубопроводных элемента. Метод "CreateByThreePoints". Из названия понятно, что метод строит плоскость по трём точкам. Возьмём точку "A","B","C", где точка "А" это вектор "Z" у коннектора первого элемента + единичный вектор "Z", точка "B" это вектор "Z" у коннектора второго элемента + единичный вектор "Z" и точка "C" это общая точка соприкосновения двух элементов.
- Теперь нам нужно узнать нормаль к этой плоскости, это свойство Normal у экземпляра класса Plane.
- Далее перемещаем нормаль в точку соприкосновения элементов и вуаля! мы получили ось вращения.
- Просто находим угол между элементами и вращаем на этот угол вокруг ранее найденной оси.
Если кому интересно могу поскидывать фрагменты кода.
1 минута
11 мая 2022
118 читали