Разработка постпроцессоров
  • Разработка постпроцессоров
v20.0.1
Search Results for

    Show / Hide Table of Contents

    Рабочий цикл .NET

    .NET-постпроцессор — это проект на C#, собираемый с SDK постпроцессирования: типизированные обработчики, .csproj и скомпилированная сборка, которую исполняет пакетный генератор. Ассистент работает здесь так же, как в любом проекте на C# — языковой сервис даёт расширение C#, сборку выполняет dotnet, — а специфика постпроцессора сводится к шаблону, файлу настроек и генератору.

    Справочник по API — в документации по .NET-постпроцессорам, входные данные — в справочнике CLData.

    С чего начинать

    Чаще всего не с нуля. Возьмите ближайший из уже существующих постпроцессоров — поставляемый с CAM-системой или написанный ранее для похожего станка или системы ЧПУ, — скопируйте и доработайте. Вы начинаете с кода, который уже работает, и разбираться приходится именно с теми отличиями, которые действительно важны.

    Если новый постпроцессор действительно нужен, создайте его в CLData Viewer: CLData viewer → Create new postprocessor → Simple postprocessor…, затем укажите пустую папку — её имя станет именем постпроцессора. Проект создаётся за вас, а из контекстного меню он открывается в VS Code. В документации по .NET-постпроцессорам это описано в разделе «How to prepare the computer to start writing the postprocessors». Просить ассистента создать проект из шаблонов стоит только если вы хотите именно этого — это его работа, а не ваша.

    Если вы копируете .NET-постпроцессор в папку с новым именем, переименуйте и файл .csproj, задав ему то же имя. Имя папки и имя .csproj должны совпадать: задача сборки из шаблона берёт путь к проекту из имени папки, а конфигурация отладки — имя сборки из него. Если имена различаются, обе конфигурации ищут несуществующие файлы.

    Работайте с ним, открыв в VS Code папку самого постпроцессора: этого ждут языковой сервис C#, сборка и отладчик. Чтобы постоянная памятка и заметки при этом оставались доступны, нужен один приём — он описан в организации рабочего пространства.

    В любом случае начинайте с известного состояния:

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

    Цикл

    1. Исследуйте CLData тестового проекта и найдите нужную команду. Инспектор показывает каждую команду и в типизированном .NET-представлении — интерфейс, имя обработчика и значения свойств — и умеет копировать имя параметра в том виде, в котором его вставляют в код C#.
    2. Найдите типизированный обработчик этой команды. Попросите ассистента перечислить обработчики проекта и открыть нужный.
    3. Внесите одно небольшое изменение, заранее сформулировав ожидаемый результат в УП. Пользуйтесь именованными типизированными свойствами SDK, а не индексами, там где SDK их предоставляет.
    4. Соберите проект. Относитесь к предупреждениям как к сведениям о вашем изменении, а не как к шуму, который надо заглушить.
    5. Запустите на тестовом проекте и прочитайте отчёт о запуске: сформированный файл УП, сообщения, код результата.
    6. Сравните полученную УП с эталоном и перейдите к проверке и подтверждению результата.

    Запуск из VS Code

    DotNet Posts выполняет запуск и показывает отчёт в панели Generate NC — так же, как это делает SPPX Tools. Две точки входа покрывают оба случая: Generate NC Program работает с открытым в воркспейсе проектом постпроцессора и сам находит собранную сборку, а Generate NC Program from DLL… принимает скомпилированный постпроцессор, на который вы указываете, без исходников — что позволяет держать несколько постпроцессоров в отдельных вкладках Generate NC и сравнивать их вывод на одном проекте.

    Настройка dotnetPosts.autoBuild заставляет расширение собрать проект перед запуском, чтобы правка не проверялась на устаревшей сборке. В панели есть и команды, которыми ассистент работает вместе с вами: перечислить и открыть обработчики, подсветить участок кода, сообщить, где стоит ваш курсор, и открыть текущий CLData в инспекторе.

    Запуск постпроцессора, к которому нет исходников

    Постпроцессор несёт настройки по умолчанию внутри сборки, и генератор умеет выгрузить их в виде файла Settings.xml рядом с входными данными — именно это делает возможной команду Generate NC Program from DLL…. Пользуйтесь файлом, который сформировал генератор: формат не совпадает с форматом SPPX, поэтому написанный вручную не подойдёт. Если настройки извлечь не удаётся, установленная CAM-система старее, чем требует этот сценарий, — проверьте её версию, прежде чем подозревать постпроцессор.

    Запуск считается завершённым только тогда, когда отчёт и результат процесса согласуются. Молча завершившийся прогон не дал ничего, что стоит сравнивать.

    Что проверять в коде

    Просмотрите обработку null и границ, единицы измерения, зависящее от локали форматирование чисел, кодировку и переводы строк выходного файла, модальное состояние между командами, коррекцию инструмента, преобразования координат и ветви обработки исключений. Сформированный код на C# нужно собрать и прогнать на представительных данных, прежде чем ему доверять: для типизированного API компилятор ловит меньшую долю реальных ошибок, чем кажется.

    In this article