Введение
Для работы с проблемными файлами создано множество инструментов, позволяющих устранять те или иные проблемы. Но что делать в случае, когда файлов, подлежащих очистке или восстановлению, – огромное количество? Неужели каждый из них придется открывать вручную и обрабатывать отдельно?
Решением стала утилита «Пакетная обработка файлов», которая позволяет автоматизировать процесс проверки и очистки файлов, производя все необходимые операции применительно к набору файлов (пакету). Предлагаем не только рассмотреть стандартную процедуру пакетной обработки, но и научиться настройке утилиты на автоматическое обновление версий файлов, а также создавать для нее новые скрипты.
Пакетная обработка как утилита очистки
Вызвать диалоговое окно пакетной обработки можно несколькими способами:
кнопка nanoCAD → Утилиты → Пакетная обработка файлов;
меню: Файл → Утилиты → Пакетная обработка файлов;
командная строка: ПАКЕТОБР (BATCHPROCESS).
После запуска открывается диалоговое окно Пакетная обработка, которое подразделяется на четыре области (рис. 1):
Перечень команд;
Выбор файлов для обработки;
Выбор профиля и запуск утилиты;
Область создания отчета.

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

В стандартный набор входят следующие команды:
Очистка файлов (PURGE);
Очистка файла от объектов CIVIL (CLEARCIVIL);
Проверка файлов (AUDIT);
Проверка геометрии (AUDITGEOMETRY);
Сохранить (SAVE).
Остановимся немного подробнее на команде Очистка файлов. Во-первых, очистка производится в том числе на выключенных, замороженных и заблокированных слоях. Связано это с тем, что на время обработки создается вспомогательная конфигурация слоев, в которой все слои разморожены и разблокированы. Во-вторых, помимо стандартных возможностей команды PURGE, при пакетной обработке реализована возможность очистки файлов внешних ссылок (для этого следует установить флажок Очищать внешние ссылки).
Где это может пригодиться? Самый распространенный случай – очистка файлов от аннотативных масштабов. Аннотативные масштабы – это технология Autodesk. Зачастую неоправданно большие по размеру файлы получаются как результат наличия в них некоторого количества таких масштабов, из-за чего даже при банальном копировании объектов через буфер обмена программа может зависнуть. Следовательно, файлы всегда следует очищать от этих масштабов, причем очень важно чистить и все внешние ссылки. В противном случае удаленные масштабы могут вернуться именно из файлов внешних ссылок.
При очистке с помощью пакетной обработки программа автоматически открывает файлы внешних ссылок и очищает их от аннотативных масштабов, после чего обновляет все внешние ссылки.
Выбор файлов для обработки
В этой области располагаются инструменты, позволяющие выбрать файлы для пакетной обработки, а также приводится перечень выбранных файлов (рис. 3):

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

4) Использовать текущий чертеж - позволяет добавить в список на обработку текущий открытый документ.
В окне отобразится список выбранных для обработки файлов (рис. 5).

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

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

Представлены следующие кнопки:
Старт – запуск процесса пакетной обработки;
Закрыть – закрытие диалогового окна пакетной обработки файлов;
Справка – вызов справки.
После нажатия кнопки Старт процесс пакетной обработки будет запущен, а в окне появится информация, подобная той, что представлена на рис. 8.

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

Над этой областью находятся следующие кнопки:
1) Копировать в буфер обмена - кнопка позволяет скопировать отчет в буфер обмена.
2) Сохранить лог - лог-файлы помогают выяснить, в чем именно заключается проблема того или иного файла. Сохранять подобные файлы зачастую весьма практично, ведь к ним всегда можно вернуться, чтобы отследить ошибку, а также определить, каким именно образом ее удалось исправить. Также лог-файлы можно передавать другим специалистам, которые проанализируют их и сделают соответствующие выводы.
Кнопка Сохранить лог позволяет сохранить через Проводник отчет о проделанной обработке – в виде файла формата LOG. Файл можно открыть и прочитать с помощью любого текстового редактора.
Давайте разберем, что вообще представляет собой отчет.
Проведем пакетную обработку проблемного файла, который содержит некое количество аннотативных объектов, после чего сохраним отчет в виде лог-файла и запустим его через текстовый редактор (рис. 10).

В данном отчете можно увидеть все этапы проведения пакетной обработки проблемного файла X.dwg:
1 – очистка файла (PURGE) : файл очищается от содержащихся в нем аннотативных стилей (размерных, текстовых, стилей таблиц);
2 – очистка файла от объектов CIVIL (CLEARCIVIL, вызывающая команду DICTREMOVE (namedobjdict) "Siberia");
3 – проверка файла (AUDIT);
4 – проверка геометрии (AUDITGEOMETRY), в том числе проверка Z-координат и штриховок;
5 – сохранение исправленного файла (SAVE).
Также, если зайти в свойства этого файла (щелчок ПКМ по выбранному файлу → Свойства), можно увидеть, что после проведения пакетной обработки, очистившей его от аннотативных объектов, вес файла значительно уменьшился: c 4,32 Мб до 300 Кб (рис. 11).

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

Над перечнем команд расположены три кнопки.
1) Новый скрипт - эта кнопка отвечает за создание нового профиля с пустым набором команд (рис. 13).

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

Чтобы добавить в текущий перечень новую команду, нужно ввести в этом окне и ее отображаемое имя, и внутреннее – то есть имя, под которым она зарегистрирована в приложении. Важно знать, что отображаемые и внутренние имена не всегда совпадают, поэтому внутреннее имя следует искать отдельно.
Узнать внутреннее имя команды можно в диалоге Настройка пользовательского интерфейса (Настройки → Адаптация → Интерфейс или команда INTERFACE).
В открывшемся окне отобразится список всех доступных команд (рис. 15).

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

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

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

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

Ссылка на профиль: https://corp.nanocad.ru/~ygvKP
3) Изменить порядок команд - позволяет изменять порядок выполнения рабочих команд. Важно помнить, что выполнение всех команд осуществляется сверху вниз по списку, поэтому с изменением порядка команд меняется и принцип работы утилиты. К примеру, можно настроить сохранение файла сразу после выполнения команды очистки и т.д.
После вызова команды откроется диалоговое окно Изменить порядок команд (рис. 20).

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

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

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

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

Над списком расположены три кнопки:
1) Сохранить профиль - сохраняет через Проводник текущий настроенный профиль в виде файла формата *.json, обеспечивая возможность последующего использования этого профиля.
По умолчанию файл профиля сохраняется по следующему пути:
%AppData%\Nanosoft\nanoCAD X\Batches,
где X – версия и сборка программного продукта.
2) Переименовать профиль - позволяет переименовать текущий профиль. Не работает со стандартным профилем default.
3) Удалить профиль - позволяет удалить текущий профиль. Также не работает со стандартным профилем default.
Пакетная обработка как инструмент обновления версии файла
Утилита пакетной обработки также имеет ряд неочевидных, но вполне полезных применений: к примеру, возможность автоматически пересохранить множество файлов в более новую версию *.dwg-формата.
Чтобы узнать версию *.dwg-файла, откройте его через текстовый редактор – например, Блокнот. Первые символы укажут на версию, остальная часть файла будет отображаться в зашифрованном виде (рис. 25).

Узнать версию, в которой сохранен файл, можно из списка:
AC1015 – dwg 2000;
AC1018 – dwg 2004;
AC1021 – dwg 2007;
AC1024 – dwg 2010;
AC1027 – dwg 2013;
AC1032 – dwg 2018.
Следует отметить, что наиболее предусмотрительно работать и сохранять файлы в более новых версиях формата .dwg, так как это обеспечит лучшую совместимость файла, а также уменьшит риск потери части информации.
Давайте рассмотрим порядок действий при пересохранении, к примеру, архива файлов устаревшего формата в актуальный формат.
Откройте окно Настройки программы (Настройки → Адаптация → Настройки программы или команда OPTIONS), после чего в графе Сохранять в формате выберите требуемый формат файла (в нашем случае – Документ, совместимый с AutoCAD 2018 и выше).
В графе Применять выбранный формат установите Для всех документов (рис. 26).

Запустите утилиту пакетной обработки, пересохраните в любое место стандартный профиль default (с помощью кнопки Сохранить профиль), а затем сделайте этот новый профиль текущим.
Исключите из перечня все команды, кроме Сохранить (щелчок ПКМ → Исключить).
Откройте на обработку ваш архив файлов, после чего запустите процедуру обработки (рис. 27).

Файлы автоматически пересохранятся в новой версии формата. Таким образом вы можете пакетно пересохранять огромные архивы, обновляя их формат до установленной в настройках версии.
Ссылка на профиль: https://corp.nanocad.ru/~u9lde
Пакетная обработка как инструмент создания пользовательских скриптов
Помимо добавления стандартных команд в перечень для пакетной обработки, можно подгружать команды из LISP-приложений. Рассмотрим такую возможность на примере приложения layers (wmatch).lsp (рис. 28).

Применяя команду layerstate-delete-wmatch "", это приложение удаляет все конфигурации слоев в файле. Сразу запомним, что инициализирующая команда в нашем приложении – nanooolayer (определяется в строке defun с:), именно с ее помощью мы в дальнейшем подгрузим приложение в утилиту.
Чтобы использовать это приложение, его следует загрузить в программу. Прежде всего нужно открыть диалоговое окно Загрузка/Выгрузка приложений – для этого перейдите в Настройки → Дополнения → Приложения (или команда APPLOAD). В открывшемся окне можно через встроенный Проводник выбирать необходимый для загрузки LSP-файл и загружать его в программу при помощи кнопки Загрузить (рис. 29).

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

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

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

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

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

После этого команда загрузится в утилиту и станет доступна для работы. Таким образом, пользователь имеет возможность создавать собс��венные скрипты с командами, подгружаемыми из LISP-приложений, и применять их для автоматической обработки пакета файлов.
Ссылка на используемый LSP-файл: https://corp.nanocad.ru/~D4ASp
Также следует сказать, что данный файл является частью главного LISP-приложения - layerstdel.lsp (ссылка на LSP-файл: https://corp.nanocad.ru/~4pIbc). Данное приложение разрабатывалось для работы с конфигурациями слоёв и имеет следующие опции:
(layerstate-delete-wcmatch "*") - удаляет все конфигурации слоев в файле;
(layerstate-delete-wcmatch "13.03.2019") - удаляет конкретную конфигурацию по ее имени;
Также имеется возможность использовать маски при указании имен, тем самым удаляя сразу несколько конфигураций, к примеру:
(layerstate-delete-wcmatch "01*");
(layerstate-delete-wcmatch "*$*$*");
Заключение
Резюмируя все сказанное, можно отметить, что утилита пакетной обработки файлов обеспечивает следующие возможности:
Автоматическая проверка и очистка большого количества файлов;
Отслеживание и анализ ошибок, накопившиеся в файлах, благодаря полученным лог-файлам;
Автоматическое пересохранение множества файлов в более новые версии *.dwg-формата;
Создание пользовательских скриптов с командами, подгружаемыми из LISP-приложений.
Полезные ссылки
1) Горюнов А.А. Работа с проблемными *.dwg-файлами в среде nanoCAD версия 2.0
2) Вебинар «Новые возможности Платформы nanoCAD 22»
3) Спирин С.В. Создание кнопки LISP-приложения в nanoCAD
Матвей Лукьянов
технический специалист группы технической поддержки отдела внедрения и интеграции базовых продуктов компании «Нанософт»
