Сообщество программистов Autodesk в СНГ
ADN Club => Revit API => Тема начата: enot от 11-12-2018, 12:28:26
-
Есть ли метод АПИ для решения следующей задачи:
Получить поверхность соприкосновения двух кубов?
(https://i.postimg.cc/McWyg0kM/Touch-Surface.png) (https://postimg.cc/McWyg0kM)
(https://i.postimg.cc/34ckwmkw/Touch-Surface-2.png) (https://postimg.cc/34ckwmkw)
При пересечении кубов можно было бы получить пересечение так:
BooleanOperationsType.Intersect
Но как быть в случае соприкосновения (аналогично как пространство соприкасается со стеной к примеру)
-
Интересный вопрос. Площадь соприкосновения равна половине разности между суммой площадей и площадью объединённого тела в случае если тела именно касаются друг друга, а не пересекаются.
Посмотри вот эту тему: https://forums.autodesk.com/t5/revit-api-forum/check-intersection-between-solid-objects/td-p/7466728
Там описан метод определения того, что два тела касаются друг-друга.
P.S.: Это моё предположение, которое нужно проверять.
-
Да, вопрос интересный, RevitAPI для такого случая полезных методов не предоставляет.
Но можно получить границы обеих поверхностей и воспользоваться какой-нибудь сторонней библиотекой для работы с 2D геометрией (ну, или самому написать, если есть время и желание, алгоритмы гуглятся). Хороший пример библиотеки - NetTopologySuite
-
P.S.: Это моё предположение, которое нужно проверять.
Судя по всему, вы попали в точку
Еще буду тестить, но первые пробы полностью подтверждают
Площадь соприкосновения равна половине разности между суммой площадей и площадью объединённого тела
Александр Ривилис, очень рад вашему ответу
-
какой-нибудь сторонней библиотекой
В динамо такое пересечение определяется ) так что может и стоит попробовать подключить динамовские библиотеки и как то поработать с ними, а может и нет)