Debalance Research Group • Forum

SuperBoundary • Superior replacement for the BOUNDARY (BPOLY) command => SuperBoundary • Русскоязычный форум => Topic started by: Debalance on March 03, 2017, 09:22:48 PM

Title: Построение всех контуров сложного топографического чертежа
Post by: Debalance on March 03, 2017, 09:22:48 PM
В данном посте рассматривается решение задачи обнаружения и построения контуров всех замкнутых областей сложного (насыщенного) чертежа с использованием плагина SuperBoundary. Я хотел бы сразу оговориться, что это решение не более чем тест, так сказать проверка на прочность возможностей программы SuperBoundary. Поэтому я бы попросил все Пытливые Умы относиться к подобному тесту и его целесообразности с долей снисхождения.

На самом деле вопрос о "сложности" чертежа в некоторой степени риторичен, а в некоторой требует определённого уточнения. КТО-НИБУДЬ из сторонников абсолютных цифр считает, что "навороченный" чертёж может содержать десятки тысяч объектов, а ,например, НЕКТО мыслит категориями большего масштаба - разумно полагая, что такой чертёж должен вмещать ни как не меньше сотни тысяч примитивов.
Я же являюсь приверженцем относительной шкалы ценностей. На мой взгляд сложность чертежа должна определяться в первую очередь "железом" т.е. рабочим местом, на котором с ним производят те или иные манипуляции. Ведь давно известно, что несколько миллионов примитивов открытых в среде AutoCAD легко "убивает" комп с 64 гигами памяти. Поэтому здесь (размышляя о степени сложности чертежа) я буду отталкиваться от конфигурации своей тестовой машины.
А конфигурация её такова:
- процессор Core i5, 3,3 ГГц;
- оперативная память 32 Гб;
- операционная система Windows 8.1;
- графическая среда AutoCAD 2016.

Согласен - не густо, но что имеем тем и дорожим. Поэтому (отталкиваясь от опыта общения с AutoCAD'ом) приходим к выводу, что комфортная работа на такой конфигурации должна быть с чертежом, занимаемый объём которого в оперативной памяти не будет превышать 25 Гб. Именно такой чертёж в данном контексте мы и будем называть "сложным". Причем важно учитывать следующее условие: в обозначенные 25 ГБ памяти должны "влезать" созданные нами многочисленные контуры. Т.е. реальный исходный чертёж должен быть, примерно, в 2,5 раза более компактным.
Такой чертёж мне удалось раздобыть, точнее сказать он мне был любезно предоставлен одним из "Активнейших Членов" геодезического сообщества, за что выражаю Ему благодарность.
Итак предоставленный в моё полное распоряжение тестовый чертёж содержит порядка 245 000 объектов. Здесь стоит отметить - этот чертёж несёт в себе весьма объёмное количество полилиний с достаточно большим содержание вершин. Поэтому реальный вес таких объектов в памяти существенен по сравнению с элементарными примитивами типа ОТРЕЗОК или ДУГА.
Для желающих повторить описанные ниже тестовые манипуляции предоставляю ссылку на исходный чертёж (http://files.mail.ru/965600C44FBF4147AA5E56767F726532). Размер чертежа - чуть больше 60 МБ.

Переходим, собственно, к тесту. Будем действовать по-порядку:
1. Откываем чертёж:
(http://img-fotki.yandex.ru/get/9746/105409719.1/0_1563ac_d61a39b6_orig.png)

2. Запускаем SuperBoundary и выделяем все объекты:
(http://img-fotki.yandex.ru/get/118982/105409719.1/0_156438_3ff40fe6_orig.png)

Как видно из данного рисунка количество объектов попавших в рассмотрение программы составляет порядка 160 000 примитивов.

3. Лезем в настройки и устанавливаем следующие параметры:
(http://img-fotki.yandex.ru/get/228104/105409719.1/0_15643b_6fd376ef_orig.png)

Здесь для меня важными опциями с точки зрения визуализации будут:
- генерация заливок (Generate solid filled shape);
- цвет примитивов - произвольный (Use random color).
Для усложнения задачи активируем "Решение островков" (Island detection).

4. Запускаем процесс, нажав кнопку "START". Собственно сам процесс выявления контуров занял у нас примерно 34 минуты, что видно по часам таймера на следующем скриншоте:
(http://img-fotki.yandex.ru/get/54353/105409719.1/0_15643c_14f46dd7_orig.png)

Как видно из этого скриншота в результате работы программы было обнаружено чуть больше 218 000 контуров.
Также на этом этапе я хотел бы отметить максимальный расход памяти зафиксированный при генерации контуров. Он составил в районе 16 ГБ, о чём свидетельствует ниже скриншот диспетчера задач:
(http://img-fotki.yandex.ru/get/251308/105409719.1/0_15643d_dcad92af_orig.png)

5. Преобразуем все выявленные контуры в конкретные примитивы среды AutoCAD и добавляем их в базу чертежа. Для этого жмём появившуюся кнопку "BUILD ALL" (СТРОИТЬ ВСЁ). Итоговый скриншот диалогового окошка SuperBoundary привожу ниже:
(http://img-fotki.yandex.ru/get/197102/105409719.1/0_15643e_88dd7c5_orig.png)

Из рисунка видно что на данную процедуру мы потратили всего лишь треть секунды времени.

6. Ну и наконец закрываем окно программы и наслаждаемся полученными результатами:
(http://img-fotki.yandex.ru/get/170815/105409719.1/0_156448_33af567_orig.png)

Или вот, некий приближённый фрагмент чертежа:
(http://img-fotki.yandex.ru/get/242441/105409719.1/0_156449_59344669_orig.png)

Как видите качество созданных созданных контуров "на высоте".

Ну и в заключение привожу скриншот диспетчера задач с итоговым потребляемым расходом памяти, необходимым для открытия и дальнейшей работы с нашим новым чертежом:
(http://img-fotki.yandex.ru/get/99562/105409719.1/0_156447_5cc9c7e7_orig.png)

Цифра в 20,5 Гб хоть и большая но вполне комфортная для данной конфигурации системы. Размер обновлённого чертежа после сохранения составил чуть более 207 МБ.