Определение площади пересечения двух замкнутых полилиний

Автор Тема: Определение площади пересечения двух замкнутых полилиний  (Прочитано 12034 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 382
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Всем привет! Какие вы знаете способы определения площади пересечения двух замкнутых полилиний? Я сейчас использую Region.BooleanOperation(), но при большом количестве подобных проверок общее время выполнения кода неприлично возрастает. Вот думаю, как можно избавиться от этих Region.
PS. приложение работает в Civil3D, так что я могу использовать возможности и Map3D и Civil3D и Architecture, но только я не знаю, какие :(

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Алексей Терно,
Ну тогда писать свой алгоритм. Кстати, а дуговые сегменты могут быть? Это прилично усложнит алгоритм.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 382
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Кстати, а дуговые сегменты могут быть?
Да - дуговые сегменты будут всегда ((
Писать свой алгоритм - вы имеете в виду находить точки пересечения и "вручную" получать контур пересечения?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Кстати, а дуговые сегменты могут быть?
Да - дуговые сегменты будут всегда ((
Писать свой алгоритм - вы имеете в виду находить точки пересечения и "вручную" получать контур пересечения?
Именно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 839
  • Карма: 168
    • Мои плагины к Автокаду
По собственному опыту - искать пересечения сегментов не быстрее. Даже скорее замедление получится - количество тестов "пересекает/не пересекает" увеличится. Так что если реально много полилиний, то становится выгодно померить их габариты и искать пересечения через RTree.


Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 839
  • Карма: 168
    • Мои плагины к Автокаду
Цитировать
All rights reserved.

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 382
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
В инструментах редактирования AD есть команда "Обрезать" (LineworkCrop), которая делает то, что надо:

Может до неё можно как-то добраться?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Алексей Терно,
Посмотри на всякий случай: https://sourceforge.net/projects/polyclipping/
В любом случае дуговые сегменты для использования в этом алгоритме придётся аппроксимировать. Впрочем это совсем не сложно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 382
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Александр Ривилис, а где вы смотрели набор параметров для команды map_dwgtrimobj из этой темы https://adn-cis.org/forum/index.php?topic=7676.msg26032#msg26032? Может получиться аналогичным способом вызвать LineworkCrop?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Александр Ривилис, а где вы смотрели набор параметров для команды map_dwgtrimobj из этой темы https://adn-cis.org/forum/index.php?topic=7676.msg26032#msg26032? Может получиться аналогичным способом вызвать LineworkCrop?
Где находил тогда уже не вспомню, но Google подсказывает даже несколько ссылок: https://documentation.help/LDD-ARX-CPP-SDK/map_dwgtrimobj.htm
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Может получиться аналогичным способом вызвать LineworkCrop?
Честно говоря я не понял что это тебе может дать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 382
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Честно говоря я не понял что это тебе может дать.
Я надеюсь, что эта команда будет работать быстрее, чем области.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
В любом случае для неё нет API.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Judas

  • ADN OPEN
  • **
  • Сообщений: 80
  • Карма: 0
« Последнее редактирование: 19-11-2020, 18:19:28 от Judas »