Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Алексей (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)
-
Хотя я тут еще немного подумал. Может же быть и такая ситуация (пустоты внутри карты).
На картинке синей заливкой показал, площадь, которую нужно получить.
(https://i.postimg.cc/YhFRWg3s/acad-map-2.png) (https://postimg.cc/YhFRWg3s)
-
Честно говоря не понял совсем ничего. Если есть готовый замкнутый полигон (полилиния), то его площадь можно получить из её же свойства Area. К чему всё остальное??? Если могут быть внутренние полигоны, площадь которых следует вычитать, то можно пойти через Region и его метод Region.BooleanOperation
-
Да нет общего полигона и нет коллекции полигонов. На чертеже просто большое количество примитивов разных текстов блоков отрезков и т.д. И нужно получит линию очертания (границы) этого пятна графики. Можно конечно просто обвести вручную границу полилинией. Но это делать лень для более чем 500 файлов.
-
И нужно получит линию очертания (границы) этого пятна графики.
Сомневаюсь, что какой-нибудь алгоритм будет в состоянии обеспечить даже 90% правильного очертания.
-
Посмотрите этот пост (http://drive-cad-with-code.blogspot.com/2016/11/getting-outline-of-overlapped-entities.html) - возможно поможет