Введение

Для работы с проблемными файлами создано множество инструментов, позволяющих устранять те или иные сложности. Но что делать в случае, когда файлов, подлежащих очистке или восстановлению, — огромное количество? Неужели каждый из них придется открывать вручную и обрабатывать отдельно?

Решением стала утилита «Пакетная обработка файлов», которая позволяет автоматизировать процесс проверки и очистки файлов, производя все необходимые операции применительно к их набору (пакету). Предлагаем не только рассмотреть стандартную процедуру пакетной обработки, но и научиться настройке утилиты на автоматическое обновление версий файлов, а также созданию для нее новых скриптов.

Пакетная обработка как утилита очистки

Вызвать диалоговое окно пакетной обработки можно несколькими способами:

  • кнопка nanoCADУтилитыПакетная обработка файлов;
  • меню: ФайлУтилитыПакетная обработка файлов;
  • командная строка: ПАКЕТОБР (BATCHPROCESS).

После запуска открывается диалоговое окно Пакетная обработка, которое подразделяется на четыре области (рис. 1):

  1. перечень команд;
  2. выбор файлов для обработки;
  3. выбор профиля и запуск утилиты;
  4. область создания отчета.
Рис. 1. Диалоговое окно Пакетная обработка Рис. 1. Диалоговое окно Пакетная обработка

Давайте рассмотрим каждую область.

Перечень команд

В этой области располагается перечень стандартных команд, выполняемых утилитой (рис. 2).

Рис. 2. Область с перечнем команд Рис. 2. Область с перечнем команд

В стандартный набор входят следующие команды:

  • Очистка файлов (PURGE);
  • Очистка файла от объектов CIVIL (CLEARCIVIL);
  • Проверка файлов (AUDIT);
  • Проверка геометрии (AUDITGEOMETRY);
  • Сохранить (SAVE).

Остановимся немного подробнее на команде Очистка файлов. Во-первых, очистка производится в том числе на выключенных, замороженных и заблокированных слоях. Связано это с тем, что на время обработки создается вспомогательная конфигурация слоев, в которой все слои разморожены и разблокированы. Во-вторых, помимо стандартных возможностей команды PURGE, при пакетной обработке реализована возможность очистки файлов внешних ссылок (для этого следует установить флажок Очищать внешние ссылки).

Где это может пригодиться? Самый распространенный случай — очистка файлов от аннотативных масштабов. Аннотативные масштабы — это технология Autodesk. Зачастую неоправданно большие по размеру файлы получаются как результат наличия в них некоторого количества таких масштабов, из-за чего даже при банальном копировании объектов через буфер обмена программа может зависнуть. Следовательно, файлы всегда следует очищать от этих масштабов, причем очень важно чистить и все внешние ссылки. В противном случае удаленные масштабы могут вернуться именно из файлов внешних ссылок.

При очистке с помощью пакетной обработки программа автоматически открывает файлы внешних ссылок и очищает их от аннотативных масштабов, после чего обновляет все внешние ссылки.

Выбор файлов для обработки

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

Рис. 3. Область выбора файлов для обработки Рис. 3. Область выбора файлов для обработки

Рассмотрим предложенные кнопки.

Открыть файл

Позволяет открыть на обработку конкретный *.dwg-файл через Проводник.

Открыть папку

Позволяет открыть на обработку сразу все *.dwg-файлы, содержащиеся в папке, выбранной через Проводник. Следует учитывать, что на обработку будут открываться только файлы, размещенные непосредственно в корне выбранной папки. А настроить поиск файлов во вложенных подпапках можно с помощью инструмента Настройки.

Настройки

При нажатии на эту кнопку открывается диалоговое окно Настройки (рис. 4), где можно установить/сбросить флажок Искать в подпапках. Настройка отвечает за открытие на обработку не только *.dwg-файлов, содержащихся в выбранной папке, но и во всех вложенных папках.

Рис. 4. Диалоговое окно Настройки Рис. 4. Диалоговое окно Настройки

Использовать текущий чертеж

Позволяет добавить в список на обработку текущий открытый документ.

В окне отобразится список выбранных для обработки файлов (рис. 5).

Рис. 5. Список выбранных файлов Рис. 5. Список выбранных файлов

Здесь удобно исключать из обработки отдельные файлы (щелчок правой кнопкой мыши (ПКМ) по выбранному файлу → Исключить) или все файлы разом (щелчок ПКМ по любому файлу в списке → Очистить) — (рис. 6).

Рис. 6. Контекстное меню для работы с файлами Рис. 6. Контекстное меню для работы с файлами

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

Выбор профиля и запуск утилиты

Здесь размещены инструменты для работы с профилями (в нашем случае мы используем стандартный профиль default), а также управляющие кнопки (рис. 7).

Рис. 7. Область выбора профиля и запуска утилиты Рис. 7. Область выбора профиля и запуска утилиты

Представлены следующие кнопки:

  • Старт — запуск процесса пакетной обработки;
  • Закрыть — закрытие диалогового окна пакетной обработки файлов;
  • Справка — вызов справки.

После нажатия кнопки Старт процесс пакетной обработки будет запущен, а в окне появится информация, подобная той, что представлена на рис. 8.

Рис. 8. Диалог пакетной обработки после запуска утилиты Рис. 8. Диалог пакетной обработки после запуска утилиты

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

Приостановить процесс пакетной обработки вы можете при помощи кнопки Стоп, которая появляется вместо кнопки Старт.

Анализ пакетной обработки

По завершении процесса пакетной обработки утилита формирует отчет, который располагается в предназначенной для этого области окна (рис. 9).

Рис. 9. Область создания отчета Рис. 9. Область создания отчета

Над этой областью находятся следующие кнопки:

Копировать в буфер обмена

Кнопка позволяет скопировать отчет в буфер обмена.

Сохранить лог

Лог-файлы помогают выяснить, в чем именно заключается проблема того или иного файла. Сохранять подобные файлы зачастую весьма практично, ведь к ним всегда можно вернуться, чтобы отследить ошибку, а также определить, каким именно образом ее удалось исправить. Также лог-файлы можно передавать другим специалистам, которые проанализируют их и сделают соответствующие выводы.

Кнопка Сохранить лог позволяет сохранить через Проводник отчет о проделанной обработке — в виде файла формата LOG. Файл можно открыть и прочитать с помощью любого текстового редактора.

Давайте разберем, что вообще представляет собой отчет.

Проведем пакетную обработку проблемного файла, который содержит некое количество аннотативных объектов, после чего сохраним отчет в виде лог-файла и запустим его через текстовый редактор (рис. 10).

Рис. 10. Структура лог-файла, запущенного через текстовый редактор Рис. 10. Структура лог-файла, запущенного через текстовый редактор

В данном отчете можно увидеть все этапы проведения пакетной обработки проблемного файла X.dwg:

1 — очистка файла (PURGE): файл очищается от содержащихся в нем аннотативных стилей (размерных, текстовых, стилей таблиц);

2 — очистка файла от объектов CIVIL (CLEARCIVIL, вызывающая команду DICTREMOVE (namedobjdict) «Siberia»);

3 — проверка файла (AUDIT);

4 — проверка геометрии (AUDITGEOMETRY), в том числе проверка Z-координат и штриховок;

5 — сохранение исправленного файла (SAVE).

Также, если зайти в свойства этого файла (щелчок ПКМ по выбранному файлу → Свойства), можно увидеть, что после проведения пакетной обработки, очистившей файл от аннотативных объектов, его вес значительно уменьшился:
c 4,32 Мб до 300 Кб (рис. 11).

Рис. 11. Уменьшение веса файла после пакетной обработки Рис. 11. Уменьшение веса файла после пакетной обработки

Расширенные возможности утилиты

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

Корректировка рабочих команд

Чтобы понять, какие операции мы можем производить с перечнем команд, вернемся к соответствующей области окна Пакетная обработка (рис. 12).

Рис. 12. Подробнее рассмотрим область перечня рабочих команд Рис. 12. Подробнее рассмотрим область перечня рабочих команд

Над перечнем команд расположены три кнопки.

Новый скрипт

Эта кнопка отвечает за создание нового профиля с пустым набором команд (рис. 13).

Рис. 13. Создание нового профиля через Новый скрипт Рис. 13. Создание нового профиля через Новый скрипт

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

Добавить команду

Кнопка, позволяющая добавлять новые команды вручную. После вызова команды открывается диалоговое окно Добавить команду (рис. 14).

Рис. 14. Диалоговое окно Добавить команду Рис. 14. Диалоговое окно Добавить команду

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

Узнать внутреннее имя команды можно в диалоге Настройка пользовательского интерфейса (НастройкиАдаптацияИнтерфейс или команда INTERFACE).

В открывшемся окне отобразится список всех доступных команд (рис. 15).

Рис. 15. Список доступных команд в окне Настройка пользовательского интерфейса Рис. 15. Список доступных команд в окне Настройка пользовательского интерфейса

К примеру, давайте найдем внутреннее имя команды Сохранить как. Для этого в окне настроек пользовательского интерфейса пропишем имя искомой команды в поисковой строке (рис. 16).

Рис. 16. Поиск внутреннего имени команды Сохранить как Рис. 16. Поиск внутреннего имени команды Сохранить как

В разделе Свойства можно увидеть ее внутреннее имя: SaveAsDocument (рис. 17).

Рис. 17. Внутреннее имя команды Сохранить как Рис. 17. Внутреннее имя команды Сохранить как

Зная, как находить внутренние имена, добавим в перечень рабочих команд новую — к примеру, Конвертировать в 2D. Для этого вышеописанным способом выясним внутреннее имя этой команды (FLATTEN), после чего в диалоговом окне Добавить команду заполним соответствующие графы (рис. 18).

Рис. 18. Добавление новой команды в утилиту Рис. 18. Добавление новой команды в утилиту

После нажатия кнопки OK текущий перечень пополнится командой Конвертировать в 2D, которая будет применяться ко всем файлам, обрабатываемым по данному профилю (рис. 19).

Рис. 19. Обновленный перечень рабочих команд Рис. 19. Обновленный перечень рабочих команд

Изменить порядок команд

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

После вызова команды откроется диалоговое окно Изменить порядок команд (рис. 20).

Рис. 20. Диалоговое окно Изменить порядок команд Рис. 20. Диалоговое окно Изменить порядок команд

Чтобы установить другой порядок команд, используйте перетаскивание курсором (drag-and-drop) — (рис. 21).

Рис. 21. Изменение порядка следования рабочих команд Рис. 21. Изменение порядка следования рабочих команд

Завершив эту операцию, нажмите кнопку ОК — изменения перенесутся в перечень (рис. 22).

Рис. 22. Измененный перечень рабочих команд Рис. 22. Измененный перечень рабочих команд

Работа с профилями

Теперь вернемся к области с профилями и управляющими кнопками (рис. 23).

Рис. 23. Подробнее рассматриваем область выбора профиля и запуска утилиты Рис. 23. Подробнее рассматриваем область выбора профиля и запуска утилиты

Как уже сказано, есть возможность создавать новые профили, хранящие в себе информацию об определенном заданном наборе команд. В этой области мы можем оперативно переключаться между ними через раскрывающийся список (рис. 24).

Рис. 24. Раскрывающийся список профилей Рис. 24. Раскрывающийся список профилей

Над списком расположены три кнопки.

Сохранить профиль

Сохраняет через Проводник текущий настроенный профиль в виде файла формата *.json, обеспечивая возможность последующего использования этого профиля.

По умолчанию файл профиля сохраняется по следующему пути:

%AppData%\Nanosoft\nanoCAD X\Batches,

где X — версия и сборка программного продукта.

Переименовать профиль

Позволяет переименовать текущий профиль. Не работает со стандартным профилем default.

Удалить профиль

Позволяет удалить текущий профиль. Также не работает со стандартным профилем default.

Пакетная обработка как инструмент обновления версии файла

Утилита пакетной обработки также имеет ряд неочевидных, но вполне полезных применений: к примеру, возможность автоматически пересохранить множество файлов в более новую версию *.dwg-формата.

Чтобы узнать версию *.dwg-файла, откройте его через текстовый редактор — например, Блокнот. Первые символы укажут на версию, остальная часть файла будет отображаться в зашифрованном виде (рис. 25).

Рис. 25. *.dwg-файл, открытый через текстовый редактор Рис. 25. *.dwg-файл, открытый через текстовый редактор

Узнать версию, в которой сохранен файл, можно из списка:

  • AC1015 — dwg 2000;
  • AC1018 — dwg 2004;
  • AC1021 — dwg 2007;
  • AC1024 — dwg 2010;
  • AC1027 — dwg 2013;
  • AC1032 — dwg 2018.

Следует отметить, что наиболее предусмотрительно работать и сохранять файлы в более новых версиях формата *.dwg, так как это обеспечит лучшую совместимость файла, а также уменьшит риск потери части информации.

Давайте рассмотрим порядок действий при пересохранении, к примеру, архива файлов устаревшего формата в актуальный формат.

  1. Откройте окно Настройки программы (НастройкиАдаптацияНастройки программы или команда OPTIONS), после чего в графе Сохранять в формате выберите требуемый формат файла (в нашем случае — Документ, совместимый с AutoCAD 2018 и выше).
  2. В графе Применять выбранный формат установите Для всех документов (рис. 26).
    Рис. 26. Диалоговое окно Настройки программы Рис. 26. Диалоговое окно Настройки программы
  3. Запустите утилиту пакетной обработки, пересохраните в любое место стандартный профиль default (с помощью кнопки Сохранить профиль), а затем сделайте этот новый профиль текущим.
  4. Исключите из перечня все команды, кроме Сохранить (щелчок ПКМ → Исключить).
  5. Откройте на обработку ваш архив файлов, после чего запустите процедуру обработки (рис. 27).
    Рис. 27. Новый профиль, настроенный на обновление формата файлов Рис. 27. Новый профиль, настроенный на обновление формата файлов

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

Пакетная обработка как инструмент создания пользовательских скриптов

Помимо добавления стандартных команд в перечень для пакетной обработки, можно подгружать команды из LISP-приложений. Рассмотрим такую возможность на примере приложения layers (wmatch).lsp (рис. 28).

Рис. 28. Внутренний код LISP-приложения Рис. 28. Внутренний код LISP-приложения

Применяя команду layerstate-delete-wmatch «*», это приложение удаляет все конфигурации слоев в файле. Сразу запомним, что инициализирующая команда в нашем приложении — nanooolayer (определяется в строке defun с:), именно с ее помощью мы в дальнейшем подгрузим приложение в утилиту.

Чтобы использовать это приложение, его следует загрузить в программу. Прежде всего нужно открыть диалоговое окно Загрузка/Выгрузка приложений — для этого перейдите в НастройкиДополненияПриложения (или команда APPLOAD). В открывшемся окне можно через встроенный Проводник выбирать необходимый для загрузки LSP-файл и загружать его в программу при помощи кнопки Загрузить (рис. 29).

Рис. 29. Диалоговое окно Загрузка/Выгрузка приложений Рис. 29. Диалоговое окно Загрузка/Выгрузка приложений

Настроим LISP-приложение на автоматическую загрузку при запуске программы. Нажмем в окне Загрузка/Выгрузка приложений (рис. 30) кнопку Приложения (1), а в открывшемся окне Автозагрузка — кнопку Добавить (2), после чего через Проводник укажем наш LSP-файл.

Рис. 30. Настройка LISP-приложения на автозагрузку Рис. 30. Настройка LISP-приложения на автозагрузку

Далее необходимо зарегистрировать инициализирующую команду приложения в nanoCAD. Откроем окно настроек пользовательского интерфейса, в котором щелкнем ПКМ по перечню инструментов и в появившемся контекстном меню выберем Создать команду (рис. 31).

Рис. 31. Создание новой команды через диалог Настройка пользовательского интерфейса Рис. 31. Создание новой команды через диалог Настройка пользовательского интерфейса

Откроется диалоговое окно Создать команду, в котором мы укажем всю необходимую информацию. Как уже сказано, инициализирующая команда в нашем LISP-приложении — nanooolayer, она отвечает за запуск его работы. Внесем ее значение в графу Внутреннее имя. Именно по значению внутреннего имени команды утилита пакетной обработки сможет добавить ее в свой перечень (рис. 32).

Рис. 32. Задание внутреннего имени команды Рис. 32. Задание внутреннего имени команды

После нажатия кнопки ОК можно видеть, что команда nanooolayer добавилась в перечень инструментов (рис. 33).

Рис. 33. Новая команда в общем списке Рис. 33. Новая команда в общем списке

Далее запустим утилиту пакетной обработки, создадим новый профиль и воспользуемся уже знакомым нам инструментом Добавить команду. В графе Внутреннее имя укажем команду nanooolayer (рис. 34).

Рис. 34. Добавление новой команды в диалоге пакетной обработки Рис. 34. Добавление новой команды в диалоге пакетной обработки

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

Заключение

Резюмируя все сказанное, можно отметить, что утилита пакетной обработки файлов обеспечивает следующие возможности:

  1. автоматическая проверка и очистка большого количества файлов;
  2. отслеживание и анализ ошибок, накопившиеся в файлах, благодаря полученным лог-файлам;
  3. автоматическое пересохранение множества файлов в более новые версии *.dwg-формата;
  4. создание пользовательских скриптов с командами, подгружаемыми из LISP-приложений.

Полезные ссылки

Горюнов А.А.

Работа с проблемными *.dwg-файлами в среде nanoCAD версия 2.0

Вебинар

«Новые возможности Платформы nanoCAD 22»

Спирин С.В.

Создание кнопки LISP-приложения в nanoCAD


Матвей Лукьянов,
технический специалист
группы технической поддержки
отдела внедрения и интеграции базовых продуктов
компании «Нанософт»