В данном посте рассматривается решение задачи обнаружения и построения контуров всех замкнутых областей сложного (насыщенного) чертежа с использованием плагина
SuperBoundary. Я хотел бы сразу оговориться, что это решение не более чем тест, так сказать проверка на прочность возможностей программы
SuperBoundary. Поэтому я бы попросил все Пытливые Умы относиться к подобному тесту и его целесообразности с долей снисхождения.
На самом деле вопрос о "сложности" чертежа в некоторой степени риторичен, а в некоторой требует определённого уточнения. КТО-НИБУДЬ из сторонников абсолютных цифр считает, что "навороченный" чертёж может содержать десятки тысяч объектов, а ,например, НЕКТО мыслит категориями большего масштаба - разумно полагая, что такой чертёж должен вмещать ни как не меньше сотни тысяч примитивов.
Я же являюсь приверженцем относительной шкалы ценностей. На мой взгляд сложность чертежа должна определяться в первую очередь "железом" т.е. рабочим местом, на котором с ним производят те или иные манипуляции. Ведь давно известно, что несколько миллионов примитивов открытых в среде AutoCAD легко "убивает" комп с
64 гигами памяти. Поэтому здесь (размышляя о степени сложности чертежа) я буду отталкиваться от конфигурации своей тестовой машины.
А конфигурация её такова:
- процессор
Core i5, 3,3 ГГц;
- оперативная память
32 Гб;
- операционная система
Windows 8.1;
- графическая среда
AutoCAD 2016.
Согласен - не густо, но что имеем тем и дорожим. Поэтому (отталкиваясь от опыта общения с AutoCAD'ом) приходим к выводу, что комфортная работа на такой конфигурации должна быть с чертежом, занимаемый объём которого в оперативной памяти не будет превышать
25 Гб. Именно такой чертёж в данном контексте мы и будем называть "сложным". Причем важно учитывать следующее условие: в обозначенные
25 ГБ памяти должны "влезать" созданные нами многочисленные контуры. Т.е. реальный исходный чертёж должен быть, примерно, в 2,5 раза более компактным.
Такой чертёж мне удалось раздобыть, точнее сказать он мне был любезно предоставлен одним из "Активнейших Членов" геодезического сообщества, за что выражаю Ему благодарность.
Итак предоставленный в моё полное распоряжение тестовый чертёж содержит порядка
245 000 объектов. Здесь стоит отметить - этот чертёж несёт в себе весьма объёмное количество полилиний с достаточно большим содержание вершин. Поэтому реальный вес таких объектов в памяти существенен по сравнению с элементарными примитивами типа ОТРЕЗОК или ДУГА.
Для желающих повторить описанные ниже тестовые манипуляции предоставляю
ссылку на исходный чертёж. Размер чертежа - чуть больше
60 МБ.
Переходим, собственно, к тесту. Будем действовать по-порядку:
1. Откываем чертёж:
2. Запускаем
SuperBoundary и выделяем все объекты:
Как видно из данного рисунка количество объектов попавших в рассмотрение программы составляет порядка
160 000 примитивов.
3. Лезем в настройки и устанавливаем следующие параметры:
Здесь для меня важными опциями с точки зрения визуализации будут:
- генерация заливок (Generate solid filled shape);
- цвет примитивов - произвольный (Use random color).
Для усложнения задачи активируем "Решение островков" (Island detection).
4. Запускаем процесс, нажав кнопку "
START". Собственно сам процесс выявления контуров занял у нас примерно
34 минуты, что видно по часам таймера на следующем скриншоте:
Как видно из этого скриншота в результате работы программы было обнаружено чуть больше
218 000 контуров.
Также на этом этапе я хотел бы отметить максимальный расход памяти зафиксированный при генерации контуров. Он составил в районе
16 ГБ, о чём свидетельствует ниже скриншот диспетчера задач:
5. Преобразуем все выявленные контуры в конкретные примитивы среды AutoCAD и добавляем их в базу чертежа. Для этого жмём появившуюся кнопку "
BUILD ALL" (
СТРОИТЬ ВСЁ). Итоговый скриншот диалогового окошка
SuperBoundary привожу ниже:
Из рисунка видно что на данную процедуру мы потратили всего лишь треть секунды времени.
6. Ну и наконец закрываем окно программы и наслаждаемся полученными результатами:
Или вот, некий приближённый фрагмент чертежа:
Как видите качество созданных созданных контуров "на высоте".
Ну и в заключение привожу скриншот диспетчера задач с итоговым потребляемым расходом памяти, необходимым для открытия и дальнейшей работы с нашим новым чертежом:
Цифра в
20,5 Гб хоть и большая но вполне комфортная для данной конфигурации системы. Размер обновлённого чертежа после сохранения составил чуть более
207 МБ.