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

ADN Club => AutoCAD .NET API => Тема начата: Алексей (IdeaSoft) от 31-10-2018, 06:54:28

Название: Получить площадь общего полигона
Отправлено: Алексей (IdeaSoft) от 31-10-2018, 06:54:28
Как мне получить полигон
для того чтобы потом подсчитать площадь карты.
Прикладываю картинку для пояснения задачи

1) Зеленая полилиния это полигон, площадь которого мне нужно получить (как сумму полигонов А, B,C D,E)

2) черные квадраты - это локальные сектора, сторона каждого квадрата всегда константа.

3) Красные прямоугольники это области  графической заполненности каждого примитива AutoCAD.
(на картинке не стал разрисовывать прямоугольник каждого примитива выборочно показал для пояснения)

По пункту 3) есть еще такая проблемка.
Если я буду для многострочного текста использовать функцию Mtext.GeometricExtents,
то она мне возвращает прямоугольник больше чем сам MText занимает в  графике.
Единственное, что пока вижу - это разбить Metxt на DBtext'ы.

Вставки блоков в наборе примитивов не будут учитываться.






(https://i.postimg.cc/9wFb9NLP/acad-map.png) (https://postimg.cc/9wFb9NLP)
Название: Re: Получить площадь общего полигона
Отправлено: Алексей (IdeaSoft) от 31-10-2018, 07:01:51
Хотя я тут еще немного подумал. Может же быть и такая ситуация (пустоты внутри карты).
На картинке синей заливкой показал, площадь, которую нужно получить.

(https://i.postimg.cc/YhFRWg3s/acad-map-2.png) (https://postimg.cc/YhFRWg3s)
Название: Re: Получить площадь общего полигона
Отправлено: Александр Ривилис от 03-11-2018, 15:44:34
Честно говоря не понял совсем ничего. Если есть готовый замкнутый полигон (полилиния), то его площадь можно получить из её же свойства Area. К чему всё остальное??? Если могут быть внутренние полигоны, площадь которых следует вычитать, то можно пойти через Region и его метод Region.BooleanOperation
Название: Re: Получить площадь общего полигона
Отправлено: Алексей (IdeaSoft) от 03-11-2018, 18:32:58
Да нет общего полигона и нет коллекции полигонов. На чертеже просто большое количество примитивов разных текстов блоков отрезков и т.д. И нужно получит линию очертания (границы) этого пятна графики. Можно конечно просто обвести вручную границу полилинией. Но это делать лень для более чем 500 файлов.
Название: Re: Получить площадь общего полигона
Отправлено: Александр Ривилис от 03-11-2018, 18:53:20
И нужно получит линию очертания (границы) этого пятна графики.
Сомневаюсь, что какой-нибудь алгоритм будет в состоянии обеспечить даже 90% правильного очертания.
Название: Re: Получить площадь общего полигона
Отправлено: Александр Пекшев aka Modis от 07-11-2018, 16:58:56
Посмотрите этот пост (http://drive-cad-with-code.blogspot.com/2016/11/getting-outline-of-overlapped-entities.html) - возможно поможет