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

ADN Club => AutoCAD .NET API => Тема начата: Павел55 от 21-08-2019, 18:52:26

Название: Как получить контур из 2 замкнутых пересекающихся между собой полилиний
Отправлено: Павел55 от 21-08-2019, 18:52:26
Добрый  вечер! Есть 2 3Dполилинии (можно и 2D - это не особо важно) необходимо получить третью полилинию (как на картинке). В какую сторону копать? Можно ли это реализовать силами api автокада или придется разбираться в геометрических алгоритмах?
(https://i.postimg.cc/hzsjnKJH/image.jpg) (https://postimg.cc/hzsjnKJH)
Название: Re: Как получить контур из 2 замкнутых пересекающихся между собой полилиний
Отправлено: avc от 21-08-2019, 18:54:40
Какие-то 2 тысячи строк кода и я это сделал :) https://sites.google.com/site/avcplugins/osl
Название: Re: Как получить контур из 2 замкнутых пересекающихся между собой полилиний
Отправлено: avc от 21-08-2019, 18:56:38
Но именно для вашего частного случая можно создать регионы и найти их пересечение. А потом опять перегнать в полилинию. Последний момент не так тривиален с учетом наличия дугообразных сегментов.
Название: Re: Как получить контур из 2 замкнутых пересекающихся между собой полилиний
Отправлено: Павел55 от 21-08-2019, 19:10:38
Какие-то 2 тысячи строк кода и я это сделал :) https://sites.google.com/site/avcplugins/osl

Мне нужен именно алгоритм, или хотя бы направление куда копать, а не готовый лисп, ввиду того что этот алгоритм будет частью программы.
Название: Re: Как получить контур из 2 замкнутых пересекающихся между собой полилиний
Отправлено: avc от 21-08-2019, 19:12:48
Мне нужен именно алгоритм
простой алгоритм я вам только что описал. ЛИСП тут не обсуждаем
Название: Re: Как получить контур из 2 замкнутых пересекающихся между собой полилиний
Отправлено: Павел55 от 21-08-2019, 19:31:21
Но именно для вашего частного случая можно создать регионы и найти их пересечение. А потом опять перегнать в полилинию. Последний момент не так тривиален с учетом наличия дугообразных сегментов.
Что есть регион? я так понимаю - это какой то объект типа контура. Допустим получилось 3 региона, как понять какой из них мне нужен?
Название: Re: Как получить контур из 2 замкнутых пересекающихся между собой полилиний
Отправлено: Павел55 от 21-08-2019, 19:37:56
в случае как на картинке, это будет самый большой по площади, но если попадется случай когда, все наоборот или 2 региона равны, тогда как?
Название: Re: Как получить контур из 2 замкнутых пересекающихся между собой полилиний
Отправлено: Александр Ривилис от 21-08-2019, 21:15:35
Добрый  вечер! Есть 2 3Dполилинии (можно и 2D - это не особо важно) необходимо получить третью полилинию (как на картинке). В какую сторону копать? Можно ли это реализовать силами api автокада или придется разбираться в геометрических алгоритмах?
(https://i.postimg.cc/hzsjnKJH/image.jpg) (https://postimg.cc/hzsjnKJH)

Поиском:
https://adn-cis.org/forum/index.php?topic=8738
https://adn-cis.org/forum/index.php?topic=8639
Название: Re: Как получить контур из 2 замкнутых пересекающихся между собой полилиний
Отправлено: Debalance от 21-08-2019, 22:06:13
Можно ли это реализовать силами api автокада или придется разбираться в геометрических алгоритмах?
Плавали, знаем! Реализовано, но только на ObjectARX. Лично я не смог обойтись (для достижения должного быстродействия) силами только API AutoCAD. Дополнительно использовал boost'овые алгоритмы и свои собственные. Вот такой есть практический пример:

(https://secure.avangate.com/images/merchant/bb96ff7f5c9505fd971126ecd171bec2/Atst-11.gif)