четверг, 24 июля 2014 г.

Как почистить пришедший к вам файл DWG?

Добрый день!

Достаточно часто пользователи задают вопрос - что можно сделать с файлом DWG, который пришел от другого пользователя? Как его почистить и оптимизировать для избежания возникновения проблем при его использовании? Писано-переписано на эту тему уже не мало, привожу свой опыт.


Действительно, даже в "приличном" файле, созданном по всем правилам и рекомендациям разработчика и в соответствии с опытом других искушенных пользователей, часто встречается всяческий мусор, лишние и неиспользуемые элементы. Возникновение таких лишних объектов неизбежно, поскольку при работе с файлом приходится по несколько раз перечерчивать геометрию, создавать временные объекты для проработки проектных решений и многое другое. Естественно, что-то можно и забыть удалить. Кроме того, если файл был создан в "вертикальном" AutoCAD или в стороннем приложении, то он может содержать прокси-объекты и ненужные данные об этих приложениях.

В статье я попытался описать максимально возможное число действий, которые можно совершить с DWG-файлом, в каждом конкретном случае надо смотреть, какие из них применять.

1. Удалите неиспользуемую геометрию


Описание проблемы:
Удалите из чертежа все промежуточные наброски, элементы проработки и прочее. Часто пользователи забывают удалить свои черновики из готовых файлов, избавьтесь от них. Также удалите геометрию, которая по ошибке может оказаться вдали от основной части чертежа.

Решение: 
Разморозьте все слои, выполните команду Показать все (двойное нажатие колеса мыши). Если в чертеже присутствует отдаленная геометрия, то вы сразу сможете ее увидеть. Используйте Выбрать все (Ctrl+A) для выбора всех объектов чертежа. После того, как вы выберите все объекты, зажмите клавишу Shift и выделите те объекты, которые вам нужны. Все остальное, не нужное, удалите. Будьте осторожны! Команда Выбрать все выбирает объекты, которые лежат на отключенных слоях, поэтому вы удалите все объекты, которые не видите в текущем состоянии чертежа, но которые могут вам понадобиться.

2. Найдите и удалите все невидимые объекты


Описание проблемы:
В чертежах могут встречаться пустые невидимые объекты, такие как точки, пустые строки, скрытые пустые атрибуты блоков, невидимые грани трехмерных объектов, группы и маскировки. Они занимают место на диске и требуют время на их обработку - удаляйте их смело!

Решение: 
  • Для поиска скрытых точек измените их вид командой ДИАЛТТОЧ (_DDPTYPE), они станут видны

    • Для удаления пустых строк присвойте переменной QTEXTMODE значение 1. В этом случае все строки будут отображаться в виде пустой рамки, даже пустые. Не забудьте вернуть значение переменной в 0.
    • Для отображения скрытых атрибутов введите команду АТЭКР (_ATTDISP) и выберите опцию Включить. В этом случае на экране отобразятся все атрибуты, даже скрытые. Удалите ненужные. Будьте осторожны! В скрытых атрибутах может храниться нужная информация.
    • Для отображения скрытых кромок и граней 3D-объектов присвойте переменной SPLFRAME значение 1. Удалите ненужные элементы, такие как управляющие многоугольники для спиралей, невидимые кромки граней и сетей и пр.
    • Запустите диспетчер групп командой ГРУППА (_GROUP) или КЛГРУППА (_CLASSICGROUP) и удалите ненужные группы
    • Для поиска невидимых объектов маскировки включите их рамки командой TFRAMES из состава Express Tools или установите значение переменной WIPEOUTFRAME = 1 и удалите ненужные.

      3. Удалите повторяющиеся геометрические объекты, перекрывающиеся линии, дуги и полилинии


      Описание проблемы:
      Во время черчения и изменения чертежа часто образуются перекрывающиеся линии, повторяющиеся объекты и прочие лишние объекты. Зрительно их не видно, но в реальности их много в каждом чертеже. Очистите чертеж от ненужного графического мусора.

      Решение:
      Используйте команду ПОДЧИСТИТЬ (_OVERKILL) для удаления дублирующихся или перекрывающихся линий, дуг и полилиний. Кроме того, команда объединяет частично перекрывающиеся или смежные элементы.


      4. Удалите неиспользуемые слои


      Описание проблемы:
      Часто в чертежах присутствуют слои, на которых ничего нет. Удалите их. Если слой не удаляется, значит на нем что-то есть, либо он заморожен в каком-то видовом экране. Проверьте состояние слоя во всех видовых экранах, очень часто невозможно удалить пустой слой именно из-за того, что он заморожен в видовом экране.

      Решение:

      • Используйте команду СЛОЙОБЪЕД (_LAYMRG) для слияния слоев. После слияния пустой слой удаляется из чертежа
      • Для удаления слоя, на котором есть объекты, используйте команду СЛОЙУДАЛ (_LAYDEL).
      • Для того, чтобы понять, используются ли слои, задайте переменной SHOWLAYERUSAGE значение 1. В этом случае в списке слоев отобразятся значки, указывающие, используются ли слои. Важно! Не забудьте отключить отображение, поскольку оно замедляет работу системы.


        5. Удалите неиспользуемые фильтры слоев


        Описание проблемы:
        Удалите неиспользуемые фильтры слоев. Даже если вы предварительно удалили ненужные слои, то фильтры, в которых они фигурировали, останутся.

        Решение: 
        Запустите команду ФИЛЬТРЫ (_FILTERS) и удалите ненужные фильтры.



        6. Удалите неиспользуемые и лишние стили оформления


        Описание проблемы:
        Практически в каждом чертеже есть неиспользуемые текстовые, размерные, табличные стили, стили мультивыносок, мультилиний, сечений, выносных элементов и печати. Избавьтесь от них. Будьте осторожны, возможно вы удалите стиль, который является настройкой корпоративного шаблона и может пригодиться вам в будущем!

        Решение:
        Для удаления неиспользуемых стилей используйте команду ОЧИСТИТЬ (_PURGE)



        7. Удалите неиспользуемые блоки, типы линий, формы и пр.


        Решение:
        Для удаления неиспользуемых объектов также используйте команду ОЧИСТИТЬ (_PURGE). Начиная с версии AutoCAD 2015 эта команда также позволяет удалить группы, пустые текстовые строки и данные, пришедшие из DGN файлов (из системы Microstation от Bentley). Если у вас AutoCAD более ранний, чем 2015, воспользуйтесь утилитой AutoCAD DGN Hotfix для версий 2013 и 2014, либо сторонними утилитами для удаления мусора от файлов DGN.

        8. Проверьте файл на наличие ошибок


        Описание проблемы:
        Проверьте базу данных чертежа на наличие ошибок

        Решение:
        Для проверки используйте команду ПРОВЕРИТЬ (_AUDIT). Если в файле будут обнаружены ошибки, то используйте команду восстановления чертежа ВОССТАН (_RECOVER) для их исправления.

        9. Удалите историю создания трехмерных тел


        Описание проблемы:
        При построении трехмерных тел в AutoCAD есть возможность сохранить историю их построения (системная переменная SOLIDHIST). Однако, эти данные сильно "утяжеляют" чертеж и приводят к замедлению работы. Удалите историю, если не планируете редактировать тела. 

        Решение:
        Сделать это можно с помощью команды ГРПРЕД (_BREP), она позволяет удалить журнал из трехмерных и составных тел, а также отменить ассоциативность поверхностей.


        10. Удалите данные о зарегистрированных приложениях


        Описание проблемы:
        Если к вам поступил файл, созданный в каком-нибудь "вертикальном" AutoCAD, например, AutoCAD Mechanical, то в нем могут содержаться данные об этой программе. Удалите эти данные, они занимают место и замедляют работу с файлом.

        Решение:
        Для удаления данных о зарегистрированных приложениях введите команду -ОЧИСТИТЬ (-_PURGE), выберите опцию ЗАРЕГПРИЛ (_REGAPPS) и нажмите Enter. Если команда найдет данные о зарегистрированных приложениях, то она выдаст зарос на их удаление.


        11. Удалите геометрические и размерные зависимости


        Описание проблемы:
        При построении параметрических эскизов и чертежей пользователи создают геометрические и размерные зависимости. Если вам не нужна параметризация в данном чертеже, то вы можете удалить эти зависимости.

        Решение:
        Используйте команду УДАЛОГР (_DELCONSTRAIN), она позволяет удалить все геометрические и размерные зависимости из набора объектов.


        12. Удалите неиспользуемые прокси-примитивы и прокси-объекты


        Описание проблемы:
        Если чертеж был создан с использование сторонних приложений под AutoCAD, либо в "вертикальном" AutoCAD, то он будет содержать множество прокси-примитивов, часть из которых скрыта. Прокси-примитивы используются в AutoCAD и других приложениях вместо сторонних объектов, созданных с помощью приложения ObjectARX, если последнее недоступно. В дальнейшем, когда приложение становится доступным, прокси-примитивы и прокси-объекты заменяются сторонними объектами.

        Решение:
        Присвойте переменной PROXYSHOW значение 2, тогда все прокси-примитивы отобразятся в виде ограничивающей рамки. Удалите ненужные. Подробнее процесс удаления описан в документе Алексея Кулика в пункте №5, повторяться не буду.

        13. Удалите неиспользуемые масштабы


        Описание проблемы:
        При работе с аннотативными объектами пользователь создает много масштаб аннотаций, часть из которых в итоге оказывается неиспользуемой. Удалите лишние.

        Решение:
        Используйте команду -СПИСМАСШТРЕД (-_SCALELISTEDIT), выберите опцию Удалить и введите *. Все неиспользуемые масштабы будут удалены. 


        14. Удалите данные о геопозиции


        Описание проблемы:
        В современных версиях AutoCAD появилась возможность включить данные о геопозиции в чертеж для того, чтобы его можно было привязать к конкретному месту на карте. Удалите данные геопозиции, если не планируете ими пользоваться.

        Решение:
        Используйте команду УДАЛГЕО (_GEOREMOVE) для удаления из файла чертежа всей информации о географическом местоположении.

        15. Не расчленяйте бездумно блоки


        Описание проблемы:
        Часто встречаю пользователей, которые при первой возможности расчленяют блоки в чужих чертежах, мотивируя это тем, что ведь никто не знает, что там в этих блоках и как они сделаны, а расчлененную геометрию можно скорректировать легко и быстро, не боясь испортить весь чертеж при изменении блока. С одной стороны, все верно, поскольку при изменении блока вы можете неверно выбрать, например, базовую точку, в этом случае все вхождения блока изменятся и чертеж придет в негодность. С другой стороны, блоки значительно экономят память - если в одном блоке 10 примитивов и этот блок вставлен 100 раз, то вы будете работать со 110 примитивами. Если все эти блоки расчленить, то вам придется работать уже с 1000 примитивов, у каждого из которых куча параметров. Поэтому, не спешите бездумно расчленять все блоки. 

        Решение:
        Если вам действительно необходимо внести изменения в блок, скопируйте его в новый файл, поэкспериментируйте с ним, а потом уже вносите изменения в исходном файле.

        Отдельная история - динамические блоки. С ними надо быть вдвойне внимательным, поскольку их расчленение практически гарантировано приведет к порче файла.

        16. Сделайте чертеж плоским


        Описание проблемы:
        Часто чертеж содержит трехмерные объекты. Если у пользователя включен вид сверху, то он просто не увидит эти объекты и будет привязываться к 3D-объектам при черчении. В итоге получится не чертеж, а набор пространственных объектов, у которых разные координаты по оси Z. Для избежания такой ситуации необходимо сделать плоским чертеж. Такие чертежи могут "выходить" из программ, работающих с объемными объектами, например, поэтажные планы из AutoCAD Architecture, результаты топосъемки из AutoCAD Civil 3D. Проверить чертеж на наличие трехмерных объектов легко - поверните его с помощью трехмерной орбиты или видового куба.

        Плоский чертеж может оказаться объемным

        Решение:
        Используйте команду FLATTEN из состава пакета Express Tools. При использовании инструмента FLATTEN создается 2D-представление выбранных объектов, которые проецируются на текущую плоскость вида. Результатом работы являются 2D-объекты, там, где это возможно, сохранившие исходные слои, типы линий, цвета и типы объектов. Это позволит вам избежать создания чертежа с привязкой примитивов к трехмерным объектам.
        Кроме того, можно выбрать все геометрические объекты и с помощью окна Свойства задать значение координаты Z равным 0.


        Заключение


        Все перечисленные приемы очистки и подготовки файла могут пригодиться пользователям в их повседневной деятельности, когда необходимо очистить файлы DWG. В реальности, конечно же, все эти способы одновременно использовать нет надобности, достаточно применить несколько.

        Если хотите автоматически очищать файл, то воспользуйтесь программой от Алексея Кулика aka kpblc. Подробно о ней в его блоге по ссылке.

        С остальными приемами работы в AutoCAD вы можете ознакомиться на странице блога.

        С уважением, Андрей


        Если вы получили ответ на свой вопрос и хотите поддержать проект материально - внизу страницы для этого есть специальная форма.


        UPD: добавил в пост удаление данных геопозиции и подправил пункт об удалении неиспользуемой геометрии. Спасибо коллегам Алексею Кулику, Евгению Елпанову, Александру Ривилису и Нейбоше Новковичу за помощь и подсказки. Спасибо, друзья!

        15 комментариев:

        1. Я бы где-то в самом начале ставил следующее:
          1. Разморозить и включить все слои
          2. Выполнить команду ZOOM All (или Extents), чтобы показать всю созданную геометрию.
          ...
          а потом все остальное. ;)

          ОтветитьУдалить
        2. Андрей, а как же эти приложения? Они очень хорошо справляются с этой задачей.
          https://apps.autodesk.com/CIV3D/ru/Detail/Index?id=appstore.exchange.autodesk.com%3aradicalpurge_windows32and64%3aen

          https://apps.autodesk.com/ACD/ru/Detail/Index?id=appstore.exchange.autodesk.com%3adrawingpurge_windows32and64%3aen


          https://apps.autodesk.com/ACD/ru/Detail/Index?id=appstore.exchange.autodesk.com%3azombiekiller_windows32and64%3aen

          ОтветитьУдалить
          Ответы
          1. Игорь, конечно, таких программ очень много. Я пишу лишь о том, чем пользуюсь сам. Спасибо за наводку, добавлю ссылки в сообщение

            Удалить
          2. Хочу поделиться еще одной проблемой - во многих чертежах используются ссылки на растровые чертежи и на другие векторные чертежи. Потом такой чертеж (оформленный и законченный) но содержащий внешние ссылки используется как шаблон для оформления других чертежей в которых применяются другие ссылки, потом количество этих ссылок как снежный ком накапливается и такой чертеж при его открытии начинает сильно тормозить. Накопление неиспользуемых ссылок происходит вследствие создания листа из уже созданного листа в похожем чертеже. При копировании листа копируются ссылки и имеют статус Unreferenced и при этом в чертеже они нигде не используются а также не удаляются командой _PURGE и удалить их можно только вручную из External Referencis командой Detach. После удаления неиспользуемых ссылок у меня чертеж просто летает. Я вот зачем - может быть кто-нибудь может написать программу по удалению таких ссылок со статусом Unreferenced? Очень достали. У нас на фирме на это обратили внимание очень недавно а таким образом работаем больше 10 лет. Удаляю ссылки - скорость загрузки файла увеличивается в разы. А обратил внимание на это чисто случайно - вот и делюсь, а заодно может кто-то поможет?

            Удалить
          3. Давно все решено. Скачайте программу отсюда https://www.dropbox.com/s/em8s63n54mr3wa1/Xref%26ImdDet.LSP?dl=0 и пользуйтесь. Программа удаляет неиспользуемые изображения и ссылки

            Удалить
        3. СПАСИБО ОГРОМНОЕ!!!!!!

          ОтветитьУдалить
        4. Андрей, подскажите, пожалуйста, читал в ваших статьях о системной переменной, которая поумолчанию геометрию рисует в одной плоскости. Появилась необходимость в такой примочке и не могу найти в какой статье читал.
          Спасибо.

          ОтветитьУдалить
          Ответы
          1. Дмитрий, хоть убейте, не помню такого. Может, речь о Flatten?

            Удалить
          2. Спасибо за ответ. о "Flatten" читал, не справилась с топосъемкой эта команда.Но о системной переменно точно где-то читал)

            Временное решение придумали. чтобы 100% чертить в одной плоскости в параметрах привязку к z отключить.

            Удалить
        5. Еще обязательно нужно проверять МАСКИРОВКИ. Бывает такие блоки стен и прочих элементов в разделе АР, что крайне негативно влияют как на работу файла, так и на его размер

          ОтветитьУдалить
          Ответы
          1. Спасибо, написал подробней в пункте 2 про маскировки и как их найти.

            Удалить
        6. Есть же чистилка которая все это делает CleanDWG. Только пользоваться нужно аккуратно!

          ОтветитьУдалить
          Ответы
          1. Этих утилит как грязи. Но что они делают - надо смотреть в каждом конкретном случае. Руками в основной массе случаев надежней.

            Удалить