Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: enot от 11-12-2018, 12:28:26

Название: Площадь соприкосновения
Отправлено: 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

Но как быть в случае соприкосновения (аналогично как пространство соприкасается со стеной к примеру)




Название: Re: Площадь соприкосновения
Отправлено: Александр Ривилис от 11-12-2018, 13:01:16
Интересный вопрос. Площадь соприкосновения равна половине разности между суммой площадей и площадью объединённого тела в случае если тела именно касаются друг друга, а не пересекаются.
Посмотри вот эту тему: https://forums.autodesk.com/t5/revit-api-forum/check-intersection-between-solid-objects/td-p/7466728
Там описан метод определения того, что два тела касаются друг-друга.
P.S.: Это моё предположение, которое нужно проверять.
Название: Re: Площадь соприкосновения
Отправлено: Александр Игнатович от 11-12-2018, 14:35:19
Да, вопрос интересный, RevitAPI для такого случая полезных методов не предоставляет.

Но можно получить границы обеих поверхностей и воспользоваться какой-нибудь сторонней библиотекой для работы с 2D геометрией (ну, или самому написать, если есть время и желание, алгоритмы гуглятся). Хороший пример библиотеки - NetTopologySuite
Название: Re: Площадь соприкосновения
Отправлено: enot от 11-12-2018, 14:51:42
P.S.: Это моё предположение, которое нужно проверять.
Судя по всему, вы попали в точку
Еще буду тестить, но первые пробы полностью подтверждают
Площадь соприкосновения равна половине разности между суммой площадей и площадью объединённого тела
Александр Ривилис, очень рад вашему ответу
Название: Re: Площадь соприкосновения
Отправлено: enot от 11-12-2018, 15:06:15
какой-нибудь сторонней библиотекой
В динамо такое пересечение определяется )  так что может и стоит попробовать подключить динамовские библиотеки и как то поработать с ними, а может и нет)