Сообщество программистов Autodesk в СНГ
Разное => Работа для программистов => Работа для разработчиков => Тема начата: Павел55 от 08-05-2020, 14:12:13
-
Суть задачи: после извлечения горизонталей и границы из поверхности необходимо создать контур из всех полилиний(см. Рис1). То есть это должна быть функция, использующая средства API AutoCAD, которая принимает два набора (Selection) полилиний и возвращает полилинию.
Длинна границы поверхности может содержать в себе до 3-4 тыс точек и иметь длинну в несколько км, при этом там может быть очень много коротеньких полилиний (Горизонталей), которые эту границу пересекают . При извлечении границы - вершины этой границы всегда идут по ходу часовой стрелки, а вот вершины горизонталей могут идти и по часовой и против(всегда рандомно). При извлечении из поверхности, горизонтали в коллекцию тоже добавляются рандомно.
Проблема в том, что нельзя использовать TraceBoundary - срабатывает только на маленьких простых контурах. С предложениями о цене писать в ЛС.
(https://i.postimg.cc/GTRQcV03/image.jpg) (https://postimg.cc/GTRQcV03)
(https://i.postimg.cc/cKVhz6Xn/2.jpg) (https://postimg.cc/cKVhz6Xn)
-
Извлечь координаты вершин всех полилиний - получиться своеобразное облако точек. По облаку точек построить минимальную выпуклую оболочку (МВО).
-
Извлечь координаты вершин всех полилиний - получиться своеобразное облако точек. По облаку точек построить минимальную выпуклую оболочку (МВО).
МВО - строится так, что внутри контура могут быть точки, этот алгоритм не подходит. Мне нужен такой контур - чтоб не было ни одной точки внутри. Если посмотреть на Рис1 - то контур должен быть ограничен желтыми горизонталями там, где они есть и зеленой границей, где нет горизонталей.Тут на ум приходит только одно - последовательный обход всех сегментов границы и поиск таких горизонталей, которые этот контур пересекают.
-
Здравствуйте.
Для какой версии Автокада нужно сделать? Нет ли файла .dwg? (чтобы получше представить какими массивами исходные данные заданы).