Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Справка по программе «Массовый редактор файлов Vericut»

1. Назначение программы

Программа предназначена для массового редактирования XML-файлов проектов Vericut. Поддерживаются следующие типы файлов:

  • .vcproject — файлы проектов Vericut
  • .tls — библиотеки инструментов (Tool Library)
  • .mch — описания станков (Machine)
  • .ctl — описания систем ЧПУ (Control)

Все четыре типа файлов имеют идентичную XML-структуру и обрабатываются одинаково.

Основные возможности

  • Точечное изменение конкретных узлов XML через XPath-правила (значения тегов и атрибуты)
  • Массовая замена подстрок во всех значениях атрибутов и текстах тегов (например, путей к моделям CATIA)
  • Автоматическое создание log-файлов рядом с каждым выходным файлом с прописыванием пути в теге <Log>
  • Выбор обрабатываемых типов файлов — можно обрабатывать только нужные расширения
  • Фильтр исключаемых папок — возможность пропустить архивные и служебные папки при рекурсивном обходе
  • Сохранение и загрузка наборов правил в JSON-файлы для повторного использования
  • Сохранение лога работы программы в отдельный .log-файл
  • Копирование всех остальных файлов из исходной папки в целевую с полным сохранением структуры каталогов (модели CATIA, G-код, библиотеки, картинки и т.д.)

Типичный сценарий — перенос проектов Vericut на новый сервер или в новую рабочую папку с массовой заменой путей к моделям, библиотекам, G-коду и другим ресурсам, а также полным клонированием структуры проекта.


2. Интерфейс программы

Окно разделено на две колонки и пять строк.

2.1. Верхняя панель — «Пути»

Элемент Назначение
Исходная папка + Обзор... Папка, в которой рекурсивно ищутся файлы .vcproject, .tls, .mch, .ctl
Целевая папка + Обзор... Папка, куда сохраняются обработанные файлы (структура подпапок сохраняется)

2.2. Левая колонка — «Образец и дерево»

Кнопка 1. Загрузить образец

Открывает диалог выбора файла. Поддерживаются все четыре типа:

Файлы Vericut (*.vcproject;*.tls;*.mch;*.ctl)
Vericut Project (*.vcproject)
Tool library (*.tls)
Machine (*.mch)
Control (*.ctl)
Все файлы (*.*)

Файл используется только как источник структуры — для визуального выбора узлов и построения XPath. Загружать образец не обязательно, если правила уже есть в JSON-файле.

Дерево тегов

Визуальное представление XML-структуры:

  • Теги с текстом отображаются как TagName = "значение" (если у тега есть только текст, без дочерних элементов-тегов)
  • Атрибуты — как @attrName = "value" (синий цвет)
  • Текстовые узлы в смешанном контенте — как #text = "..." (зелёный цвет)
  • Полный текст виден в ToolTip при наведении мыши

Панель поиска над деревом

  • Поле ввода текста
  • Кнопки / для навигации между найденными узлами
  • Счётчик N / всего справа
  • Горячие клавиши:
    • Enter — следующее совпадение
    • Esc — сброс поиска
  • Поиск регистронезависимый, работает по именам тегов, значениям атрибутов и тексту

2.3. Правая колонка — «Правила» (TabControl)

Содержит три вкладки:

Вкладка «Правила XPath»

Таблица с двумя колонками:

Колонка Содержание
XPath (автоматический) Путь к узлу, построенный автоматически при выборе в дереве
Новое значение Значение, которое будет записано в узел

Кнопки:

  • Удалить выбранные — удаляет выбранные строки правил
  • Сохранить — сохраняет правила в JSON-файл (rules.json)
  • Загрузить — загружает правила из JSON-файла (дубликаты пропускаются)

Вкладка «Замены подстрок»

Таблица с тремя колонками:

Колонка Содержание
Искать Подстрока, которую нужно найти (например, \\oldserver\path\)
Заменить на На что заменить (например, \\newserver\path\)
Только в тегах Опциональный фильтр. Пусто = применять везде. File,CATIAV5 = только в этих тегах

Кнопки:

  • Добавить — добавляет пустую строку и сразу начинает редактирование
  • Удалить — удаляет выбранные строки
  • Сохранить — сохраняет правила в JSON-файл (substrings.json)
  • Загрузить — загружает правила из JSON-файла

Вкладка «Настройки»

Содержит две группы:

«Обрабатываемые типы файлов» (CheckedListBox)

Список из четырёх расширений: .vcproject, .tls, .mch, .ctl. Все отмечены по умолчанию.

  • Если отмечены конкретные типы — обрабатываются только они
  • Если не отмечено ни одного — обрабатываются все 4 типа (защита от случайной ошибки)

«Исключаемые папки»

Список папок, которые будут пропущены при рекурсивном обходе. Два переключателя режима:

  • По полному пути (по умолчанию) — исключается только конкретная выбранная папка
  • По имени папки — исключаются все папки с таким именем на любом уровне вложенности

Кнопки:

  • Добавить папку... — открывает стандартный диалог выбора папки
  • Удалить выбранную — удаляет выбранную запись из списка

2.4. Панель добавления правила

  • Новое значение: — поле ввода нового значения
  • 2. Добавить правило — берёт XPath из выбранного узла дерева и значение из поля, добавляет строку в таблицу правил XPath

2.5. Нижняя панель — «Обработка, копирование и логи»

  • 3. Обработать все файлы — запускает массовую обработку файлов выбранных типов
  • ☐ Копировать все остальные файлы (с сохранением структуры) — чекбокс, при включении которого после обработки XML-файлов программа скопирует все остальные файлы из исходной папки в целевую с полным сохранением иерархии каталогов. Обработанные файлы при этом не перезаписываются.
  • Поле логов — отображает ход выполнения, ошибки, статистику по обработке и копированию
  • Очистить логи — очищает поле
  • Сохранить лог в файл — сохраняет содержимое поля логов в .log-файл через стандартный диалог сохранения

3. Пошаговый сценарий работы

Шаг 1. Укажите папки

Выберите исходную папку (где лежат .vcproject, .tls, .mch, .ctl файлы и сопутствующие ресурсы) и целевую папку (куда будут сохранены обработанные копии и куда будут скопированы остальные файлы).

Шаг 2. Загрузите образец (опционально)

Нажмите 1. Загрузить образец и выберите любой поддерживаемый файл. Он будет использован только как источник структуры.

Примечание: если у вас уже есть сохранённый JSON-файл с правилами, этот шаг можно пропустить. Достаточно загрузить правила через кнопку Загрузить на соответствующей вкладке.

Шаг 3. Найдите нужный узел

  • Разверните дерево, найдите нужный тег или атрибут
  • При необходимости используйте поиск (поле над деревом + Enter)

Шаг 4. Добавьте правило XPath

  1. Выделите узел в дереве
  2. Введите новое значение в поле Новое значение:
  3. Нажмите 2. Добавить правило

Правило появится в таблице на вкладке «Правила XPath». XPath построен автоматически.

Шаг 5. Повторите шаги 3–4 для всех нужных узлов

Можно также загрузить ранее сохранённые правила из JSON-файла.

Шаг 6. (Опционально) Добавьте правила замены подстрок

Переключитесь на вкладку «Замены подстрок» и добавьте правила массовой замены. Например:

  • Искать: \\sgtfs2.srv.vsmpo.ru\CHPU\USER_WORK\SHOP54\
  • Заменить на: D:\NewPath\
  • Только в тегах: File

Шаг 7. (Опционально) Настройте параметры обработки

Перейдите на вкладку «Настройки»:

  1. Выберите обрабатываемые типы файлов — снимите галочки с тех расширений, которые не нужно обрабатывать (например, если нужно обработать только .tls и .ctl).
  2. Добавьте исключаемые папки — например, _Archive в режиме «По имени папки», чтобы пропустить все архивные папки на любом уровне.

Шаг 8. (Опционально) Включите копирование всех файлов

Если нужно перенести не только XML-файлы, но и всю структуру проекта (модели CATIA, G-код, библиотеки, картинки и т.д.), установите флажок Копировать все остальные файлы (с сохранением структуры) под кнопкой обработки.

Шаг 9. Запустите обработку

Нажмите 3. Обработать все файлы. Программа:

  1. Рекурсивно найдёт все файлы выбранных типов в исходной папке (с учётом исключаемых папок)
  2. Для каждого файла:
    • Загрузит XML
    • Применит все XPath-правила
    • Применит все замены подстрок
    • Создаст .log файл в целевой папке (имя = имя исходного файла без расширения + .log)
    • Обновит тег <Log> на путь к созданному .log файлу
    • Сохранит результат в целевую папку
  3. Если включён флажок копирования:
    • Найдёт все остальные файлы в исходной папке (кроме обрабатываемых типов)
    • Скопирует их в целевую папку с сохранением структуры подпапок
    • Обработанные XML-файлы не перезаписываются
  4. В окне логов отобразит статистику по обработке и копированию

Шаг 10. (Опционально) Сохраните лог

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


4. Настройки обработки

4.1. Выбор обрабатываемых типов файлов

На вкладке «Настройки» в группе «Обрабатываемые типы файлов» можно отметить галочками нужные расширения:

Расширение Описание
.vcproject Проект Vericut
.tls Библиотека инструментов
.mch Описание станка
.ctl Описание системы ЧПУ

Поведение:

  • Отмечены конкретные типы → обрабатываются только они
  • Не отмечено ни одного → обрабатываются все 4 типа (защита от случайной ошибки)

Выбор влияет на оба этапа:

  • Этап 1 — обработка XML-файлов выбранных типов
  • Этап 2 — копирование «остальных» файлов (все, кроме выбранных типов)

4.2. Исключение папок

В группе «Исключаемые папки» можно добавить папки, которые будут пропущены при рекурсивном обходе.

Режим «По полному пути» (по умолчанию)

  • Пользователь выбирает папку через диалог
  • Сохраняется полный путь: C:\Src\ProjectA\_Archive
  • Исключается только эта конкретная папка
  • Другие папки с именем _Archive на других уровнях не исключаются

Режим «По имени папки»

  • Пользователь выбирает любую папку с нужным именем через диалог
  • Сохраняется только имя: _Archive
  • При обходе все папки с именем _Archive на любом уровне вложенности исключаются
  • В логе видно: Исключаемых папок (по имени): 1 — _Archive

Пример

Исходная структура:

C:\Src\
├── ProjectA\
│   ├── main.vcproject
│   ├── _Archive\           ← старая версия
│   │   └── main.vcproject
│   └── Sub\
│       └── _Archive\       ← ещё одна старая версия
│           └── sub.vcproject
└── ProjectB\
    └── _Archive\           ← и ещё одна
        └── project.vcproject
Режим Что будет исключено
«По пути», выбран C:\Src\ProjectA\_Archive Только ProjectA\_Archive
«По имени», добавлено _Archive Все три папки _Archive на любом уровне

Особенности

  • Исключение работает на уровне папок целиком — если папка в списке, всё её содержимое (включая подпапки) пропускается
  • Сравнение путей регистронезависимое и нормализованное — C:\Temp\, c:\temp и C:\Temp считаются одной и той же папкой
  • Защита от дубликатов — при добавлении уже существующей записи выдаётся предупреждение
  • Список исключений не сохраняется между запусками — при необходимости его можно добавить в сохранение настроек позже

5. Создание log-файлов

Для каждого выходного XML-файла (.vcproject, .tls, .mch, .ctl) программа автоматически выполняет следующие действия:

  1. Ищет в документе первый тег <Log> (независимо от пространства имён)
  2. Формирует путь к log-файлу:
    <целевая папка>/<относительный путь>/<имя файла без расширения>.log
    
  3. Создаёт папку (если её нет) и сам .log файл (пустой, либо обновляет время изменения)
  4. Записывает полный абсолютный путь к log-файлу в тег <Log>
  5. Сохраняет документ — в выходном файле уже корректный путь

Важно: правило для изменения тега <Log> добавлять не нужно — программа обрабатывает его автоматически.

Пример

Исходный файл Целевой файл Созданный log
C:\Src\ProjectA\part.vcproject C:\Dst\ProjectA\part.vcproject C:\Dst\ProjectA\part.log
C:\Src\Tools\mill.tls C:\Dst\Tools\mill.tls C:\Dst\Tools\mill.log
C:\Src\Machines\5axis.mch C:\Dst\Machines\5axis.mch C:\Dst\Machines\5axis.log
C:\Src\Control\sinumerik.ctl C:\Dst\Control\sinumerik.ctl C:\Dst\Control\sinumerik.log

Если в исходном файле тега <Log> нет — log-файл не создаётся, обработка продолжается.


6. Копирование всех файлов

При включённом флажке Копировать все остальные файлы (с сохранением структуры) программа выполняет второй этап обработки после работы с XML-файлами.

Логика работы

  1. Берутся все файлы из исходной папки (рекурсивно, со всеми подпапками, с учётом исключаемых папок)
  2. Из них исключаются все обрабатываемые типы (те, что отмечены в CheckedListBox) — они уже обработаны и сохранены в целевой папке на первом этапе
  3. Для каждого оставшегося файла вычисляется относительный путь от исходной папки
  4. Этот же относительный путь прибавляется к целевой папке — структура сохраняется
  5. Файл копируется с перезаписью (если в целевой папке уже есть файл с таким именем)

Пример

Пусть:

  • Исходная папка: \\sgtfs2.srv.vsmpo.ru\CHPU\
  • Целевая папка: \\sgtfs3\CHPU\
  • В настройках отмечены все 4 типа файлов
  • В исключениях добавлена папка _Archive в режиме «По имени»

Исходная структура:

CHPU\
└── 120.1-120.4\
    └── TR644\
        ├── Machining\
        │   └── BTM1600\
        │       └── 120.1-120.4_FIXTURE_U1\
        │           ├── project.vcproject    ← обрабатывается
        │           ├── tools.tls            ← обрабатывается
        │           ├── machine.mch          ← обрабатывается
        │           ├── model1.CATPart       ← копируется
        │           └── model2.CATPart       ← копируется
        ├── _Archive\                        ← ИСКЛЮЧЕНА
        │   └── old.vcproject
        └── Vericut\
            └── Pic\
                └── picture.jpg              ← копируется

Результат в целевой папке:

CHPU\
└── 120.1-120.4\
    └── TR644\
        ├── Machining\
        │   └── BTM1600\
        │       └── 120.1-120.4_FIXTURE_U1\
        │           ├── project.vcproject    ← ОБРАБОТАН (с новыми путями)
        │           ├── project.log          ← создан log-файл
        │           ├── tools.tls            ← ОБРАБОТАН
        │           ├── tools.log            ← создан log-файл
        │           ├── machine.mch          ← ОБРАБОТАН
        │           ├── machine.log          ← создан log-файл
        │           ├── model1.CATPart       ← скопирован
        │           └── model2.CATPart       ← скопирован
        └── Vericut\
            └── Pic\
                └── picture.jpg              ← скопирован

Папка _Archive не попала в целевую папку — она была исключена на обоих этапах.

Важные замечания

  • Обрабатываемые XML-файлы не перезаписываются. Обработанные файлы остаются в целевой папке без изменений после этапа копирования.
  • Производительность. Копирование идёт в фоновом потоке, ошибки не прерывают процесс — просто логируются. Для тысяч файлов это может занять время, но прогресс отображается в логе.
  • Права доступа. Если в исходной папке есть файлы, к которым нет доступа на чтение, или в целевой — на запись, эти файлы будут пропущены с записью ошибки в лог. Остальные файлы продолжат копироваться.

7. Сохранение лога в файл

Кнопка Сохранить лог в файл в нижней части окна позволяет сохранить содержимое поля логов в отдельный .log-файл.

Как это работает

  1. Нажатие кнопки открывает стандартный диалог сохранения файла
  2. По умолчанию предлагается имя result.log
  3. После выбора пути всё содержимое поля логов записывается в файл в текстовом виде
  4. Файл можно открыть в любом текстовом редакторе для анализа

Когда это полезно

  • Долгие обработки — когда программа работает с тысячами файлов, лог может не поместиться в окне
  • Архивирование результатов — сохранение отчёта о проделанной работе
  • Отладка — анализ ошибок, если что-то пошло не так
  • Аудит — документирование изменений для последующих проверок

8. Особенности построения XPath

Программа строит XPath через позиционные индексы среди братьев с тем же именем, а не через атрибуты. Это критически важно для файлов Vericut, где множество тегов <CATIAV5> имеют полностью одинаковые атрибуты.

Пример

Для структуры:

<VcProject>
  <Setup Name="OP_005">
    <Build>
      <Component Name="Fixture">
        <CATIAV5 Unit="millimeter" ...>
          <File>\\server\path\model1.CATPart</File>
        </CATIAV5>
        <CATIAV5 Unit="millimeter" ...>
          <File>\\server\path\model2.CATPart</File>
        </CATIAV5>
      </Component>
    </Build>
  </Setup>
</VcProject>

Будет построен XPath:

/VcProject[1]/Setup[1]/Build[1]/Component[1]/CATIAV5[1]/File[1]
/VcProject[1]/Setup[1]/Build[1]/Component[1]/CATIAV5[2]/File[1]

Такой путь однозначен даже при совпадающих атрибутах.

Для атрибутов

XPath заканчивается на /@attrName:

/VcProject[1]/Setup[1]/Report/Tag[1]/@Name

9. Формат JSON-файлов правил

Файл правил XPath (rules.json)

[
  {
    "XPath": "/VcProject[1]/Setup[1]/Report/Tag[1]",
    "NewValue": "ШО-939.010"
  },
  {
    "XPath": "/VcProject[1]/Setup[1]/Report/Tag[2]",
    "NewValue": "Рыбаков"
  }
]

Файл правил подстрок (substrings.json)

[
  {
    "OldValue": "\\\\sgtfs2.srv.vsmpo.ru\\CHPU\\USER_WORK\\SHOP54\\",
    "NewValue": "\\\\newserver\\CAM\\",
    "TagFilter": "File"
  },
  {
    "OldValue": "OP_005",
    "NewValue": "OP_010",
    "TagFilter": ""
  }
]

Совместимость

  • Файлы можно редактировать вручную в любом текстовом редакторе
  • При загрузке дубликаты (по XPath) автоматически пропускаются
  • Файлы имеют человекочитаемый формат (с отступами)

10. Обработка пространств имён

Если корневой элемент XML-файла имеет пространство имён по умолчанию (xmlns="..."), программа автоматически:

  1. Регистрирует его с префиксом ns
  2. Модифицирует XPath-правила, добавляя префикс ns: ко всем именам тегов

Пользователю не нужно вручную учитывать пространства имён — XPath из дерева работает «как есть».


11. Порядок применения правил

  1. XPath-правила — точечные изменения конкретных узлов
  2. Замены подстрок — массовые изменения во всех значениях
  3. Создание log-файла и обновление тега <Log>
  4. Сохранение документа

После обработки всех XML-файлов (если включён флажок):

  1. Копирование остальных файлов с сохранением структуры

Это гарантирует, что все изменения будут применены до создания log-файла, а копирование не затронет уже обработанные XML-файлы.


12. Ограничения и известные особенности

  • Позиционные индексы привязаны к образцу. Если в другом файле структура тегов отличается (например, меньше <CATIAV5> в <Component>), XPath-правило может не сработать — будет выдано сообщение об ошибке в логе, обработка остальных файлов продолжится.
  • Один тег <Log> на файл. Если в файле несколько тегов <Log> (например, вложенный <GCode><Output><Log>), обрабатывается только первый найденный.
  • Кодировка. Выходные файлы сохраняются в UTF-8 с BOM (стандартное поведение XDocument.Save). Это корректно для Vericut.
  • Сетевые пути. Поддерживаются UNC-пути (\\server\share\...) как в исходных файлах, так и в целевой папке.
  • Замены подстрок применяются ко всем значениям. Если фильтр тегов пуст, замена применяется ко всем атрибутам и текстовым узлам во всём документе. Будьте внимательны при указании подстрок.
  • Настройки не сохраняются. Список обрабатываемых расширений, исключаемых папок и режим исключения сбрасываются при закрытии программы.
  • HTML-файлы (.vctemplate) обрабатываются ограниченно. К ним применяются только замены подстрок. XPath-правила игнорируются. Фильтр тегов в правилах подстрок для HTML также не работает — замены применяются ко всему содержимому файла.

13. Типичные ошибки и их диагностика

Сообщение в логе Причина Решение
Ошибка: укажите исходную папку. Не выбрана исходная папка Нажмите Обзор... у «Исходная папка»
Ошибка: укажите целевую папку. Не выбрана целевая папка Нажмите Обзор... у «Целевая папка»
Ошибка: не добавлено ни одного правила. Обе таблицы правил пусты Добавьте хотя бы одно правило или загрузите JSON
Родитель не найден по пути: ... В обрабатываемом файле структура отличается от образца Проверьте XPath вручную в дереве
Узел не найден: ... Узел отсутствует в конкретном файле Это нормально для неоднородных файлов — проверьте образец
Не удалось создать log-файл: Отказано в доступе Нет прав на запись в целевую папку Проверьте права доступа
Ошибка копирования (...): Отказано в доступе Нет прав на чтение исходного или запись целевого файла Проверьте права доступа к файлам

14. Типичные сценарии использования

Сценарий 1: Изменение путей к моделям CATIA

  1. Загрузите образец
  2. Перейдите на вкладку «Замены подстрок»
  3. Добавьте правило:
    • Искать: \\oldserver\path\
    • Заменить на: \\newserver\path\
    • Только в тегах: File
  4. Включите флажок Копировать все остальные файлы
  5. Запустите обработку

Сценарий 2: Изменение конкретных значений

  1. Загрузите образец
  2. Найдите в дереве нужный тег (например, <Tag Name="Шифр чертежа">)
  3. Выберите его, введите новое значение, нажмите 2. Добавить правило
  4. Повторите для всех нужных тегов
  5. Запустите обработку

Сценарий 3: Полная миграция проекта на новый сервер

  1. Добавьте XPath-правила для точечных изменений
  2. Добавьте правила подстрок для массовой замены путей
  3. Перейдите на вкладку «Настройки»
  4. В группе «Исключаемые папки» добавьте _Archive в режиме «По имени папки»
  5. Включите флажок Копировать все остальные файлы
  6. Запустите обработку — программа обработает все XML-файлы (.vcproject, .tls, .mch, .ctl) и скопирует все остальные файлы с сохранением структуры, пропустив архивные папки

Сценарий 4: Обработка только библиотек инструментов

  1. Перейдите на вкладку «Настройки»
  2. В группе «Обрабатываемые типы файлов» снимите галочки со всех расширений, кроме .tls
  3. Добавьте правила XPath и/или подстрок
  4. Запустите обработку — будут обработаны только .tls файлы

Сценарий 5: Повторное использование сохранённых правил

  1. Укажите исходную и целевую папки
  2. Нажмите Загрузить на вкладке «Правила XPath» — выберите ранее сохранённый rules.json
  3. При необходимости загрузите substrings.json на вкладке «Замены подстрок»
  4. Запустите обработку — образец загружать не нужно

15. Горячие клавиши

Клавиша Действие
Enter в поле поиска Следующее совпадение
Esc в поле поиска Сброс поиска

16. Поддерживаемые типы файлов

Расширение Описание Формат XPath-правила Замены подстрок Создание .log
.vcproject Проект Vericut XML ✅ Да ✅ Да ✅ Да
.tls Библиотека инструментов XML ✅ Да ✅ Да ✅ Да
.mch Описание станка XML ✅ Да ✅ Да ✅ Да
.ctl Описание системы ЧПУ XML ✅ Да ✅ Да ✅ Да
.vctemplate Карта наладки (HTML-отчёт) HTML ❌ Нет ✅ Да ❌ Нет
другие Модели, G-код, картинки и т.д. ❌ Нет ❌ Нет ❌ Нет (копируется)

Важно: файлы .vctemplate имеют HTML-структуру, а не XML. Для них применяются только замены подстрок. XPath-правила к ним не применяются. Кодировка HTML-файлов определяется автоматически (по BOM или <meta charset>) и сохраняется при записи.


Версия: 2.1.0

Платформа: .NET (Windows Forms), C#

Формат входных/выходных файлов: .vcproject, .tls, .mch, .ctl (XML); .vctemplate (HTML)

About

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

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages