CAM API
  • CAM API
v20.0.1
Search Results for

    Show / Hide Table of Contents

    Урок 4 — выгрузка расширения во время работы CAM-системы

    Цели

    • Создать простое работающее расширение на C#;
    • Рассмотреть способы выгрузки расширений.

    Практическая часть

    Порядок действий:

    • Запустите CAM-систему: список утилит будет изменяться во время её работы.
    • Откройте репозиторий GitVerse и клонируйте его.
    • Найдите каталог GCodeGeneration\ExtensionUtilityNCMakerNet — он послужит основой расширения.
    • Код расширения уже готов. В этом уроке изменяется только файл конфигурации.
    • Откройте и соберите .NET-проект. Должен появиться файл bin/debug/ExtensionUtilityNcMakerNet.dll;
    • Скопируйте ExtensionUtilityNcMakerNet.settings.json в bin/debug/;
    • Установите расширение в первый раз:
      • Поместите DLL и settings.json в архив с расширением .dext;
      • Запустите созданный файл .dext, чтобы добавить расширение в CAM-систему. Параметр unload_mode не задан, поэтому используется значение по умолчанию umJustAfterExecution;
    • В меню утилит CAM-системы выберите Generate G code by C#, затем закройте Блокнот с результатами.
    • Не закрывая CAM-систему, установите расширение во второй раз:
      • Измените bin/debug/ExtensionUtilityNcMakerNet.settings.json:
        • Задайте режим выгрузки umManuallyFromUI;
        • Измените подпись пункта меню;
        {
          "name": "Extension on C# to generate G code",
          "description": "Extension on C# to generate G code",
          "module_path": "${extensionJsonFolder}/ExtensionUtilityNcMakerNet.dll",
          "unload_mode": "umManuallyFromUI",
          "extensions": [
            {
              "utility": {
                "name": "Generate G code by C#",
                "caption": "Generate G code by C# (version 2)",
                "id": "Extension.Utility.NcMaker.Net"
              }
            }
          ]
        }
        
      • Поместите JSON-файл и DLL в архив с расширением .dext;
      • Запустите файл .dext, чтобы установить расширение. DLL будет перезаписана, поскольку она была выгружена. Если библиотека остаётся загруженной, возникнет ошибка;
      • Откройте меню утилит CAM-системы. В нём должен появиться пункт Generate G code by C# (version 2). Новая подпись означает, что расширение обновлено;
      • Выберите Generate G code by C# (version 2) и закройте Блокнот с результатами;
      • Повторно запустите созданный ранее файл .dext. Появится ошибка Access to the path 'ExtensionUtilityNcMakerNet.dll' is denied: расширение осталось в памяти, как и предусмотрено режимом umManuallyFromUI;
      • Выгрузите расширение вручную через интерфейс:
        • Откройте Settings → Extensions;
        • Выберите Generate G code by C# — значение поля name из settings.json;
        • Нажмите unload. После успешной выгрузки кнопка станет недоступной; при неудаче появится ошибка;
      • Снова запустите файл .dext. Теперь установка пройдёт успешно, поскольку расширение выгружено вручную;
    • Не закрывая CAM-систему, установите расширение в третий раз:
      • Измените bin/debug/ExtensionUtilityNcMakerNet.settings.json:
        • Задайте режим выгрузки umBeforeProgramFinalization;
        • Измените подпись пункта меню;
        {
          "name": "Extension on C# to generate G code",
          "description": "Extension on C# to generate G code",
          "module_path": "${extensionJsonFolder}/ExtensionUtilityNcMakerNet.dll",
          "unload_mode": "umBeforeProgramFinalization",
          "extensions": [
            {
              "utility": {
                "name": "Generate G code by C#",
                "caption": "Generate G code by C# (version 3)",
                "id": "Extension.Utility.NcMaker.Net"
              }
            }
          ]
        }
        
      • Поместите JSON-файл и DLL в архив с расширением .dext;
      • Запустите созданный файл .dext, чтобы установить расширение;
      • Откройте меню утилит CAM-системы. В нём должен появиться пункт Generate G code by C# (version 3), подтверждающий обновление подписи;
      • Выполните команду расширения и закройте Блокнот с результатами;
      • Повторно запустите созданный ранее файл .dext. Появится ошибка Access to the path 'ExtensionUtilityNcMakerNet.dll' is denied;
      • Проверьте возможность ручной выгрузки через интерфейс:
        • Откройте Settings → Extensions;
        • Выберите Generate G code by C# — значение поля name из settings.json;
        • Убедитесь, что кнопка unload недоступна. Режим umBeforeProgramFinalization запрещает ручную выгрузку;
    • Закройте CAM-систему и запустите файл .dext. Библиотека выгружается из памяти при завершении CAM-системы, поэтому теперь её можно обновить.
    In this article