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

    Show / Hide Table of Contents

    Текущая команда (оператор Cmd)

    Текущая команда — это команда CLData, обработчик которой выполняется. Помимо числового массива CLD, постпроцессор может прочитать код, имя, текстовые данные команды и любой из её именованных параметров (включая вложенные). Это обеспечивают оператор Cmd в sppx и строго типизированный объект cmd в .NET.

    Доступ из sppx

    Оператор Cmd предоставляет гибкий механизм работы с текущей командой CLData. Он возвращает ссылку на текущую команду, у которой можно запросить код, имя и параметры этой команды. Формат доступа к конкретным данным команды следующий.

    Cmd.Code — возвращает уникальный числовой код команды CLData. Каждая команда однозначно определяется этим кодом. Список кодов команд приведён в описании технологических команд.

    Cmd.Name — возвращает текстовое имя команды или параметра команды.

    Cmd.Data — для отдельных команд CLData, имеющих единственный строковый параметр (таких как Comment, PartNo и т. п.), возвращает строковое значение. Для остальных команд возвращает строковое представление команды — в точности то, что отображается на вкладке CLData главного окна.

    Cmd.Data[Index] — альтернативный способ доступа к массиву числовых параметров команды CLD. Возвращает вещественное значение элемента массива параметров с индексом Index.

    Ниже приведено несколько языковых конструкций, дающих доступ к параметрам команды CLData по имени параметра. Подробнее см. раздел Именованные параметры CLData. Каждая команда CLData может характеризоваться собственным набором именованных параметров. Имена параметров с описанием для каждой команды перечислены в описании технологических команд. Имена параметров видны на вкладке CLData внизу главного окна.

    Cmd.Str["ParameterName"] — возвращает значение параметра команды с именем ParameterName в виде текстовой строки String.

    Cmd.Int["ParameterName"] — возвращает значение параметра команды с именем ParameterName в виде целого числа Integer.

    Cmd.Flt["ParameterName"] — возвращает значение параметра команды с именем ParameterName в виде вещественного числа Real (числа с плавающей точкой).

    Cmd.Ptr["ParameterName"] — возвращает ссылку на параметр команды с именем ParameterName.

    Рассмотрим несколько примеров использования параметров команды CLData.

    Пример 1. Внутри обработчика команды загрузки инструмента LoadTl вывести в управляющую программу строку с адресом T, номером инструмента и именем револьверной головки в скобках.

    program LoadTl
      Output "T" + Cmd.Int["ToolID"] + "(" + Cmd.Str["RevolverID"] + ")"
    end
    

    Возможный результат вывода в управляющую программу: T3 (TopTurret)

    Пример 2. Пример обработки команды MultiGoto с использованием различных способов доступа к элементам параметра-массива Axes.

    program MultiGoto
      i: Integer
      AxisName: String
      for i = 1 to Cmd.Ptr["Axes"].ItemCount do begin
        AxisName = cmd.Ptr["Axes"].Item[i].Str["AxisID"]
        if AxisName="AxisXPos" then begin
          X = cmd.Ptr["Axes"].Item[i].Flt["Value"]
        end else
        if AxisName="AxisYPos" then begin
          Y = cmd.Ptr["Axes("+Str(i)+")"].Flt["Value"]
        end else
        if AxisName="AxisZPos" then begin
          Z = cmd.Flt["Axes("+Str(i)+").Value"]
        end else
        if cmd.Ptr["Axes(AxisCPos)"]<>0 then begin
          C = cmd.Flt["Axes(AxisCPos).Value"]
        end
      end
      OutBlock
    end
    

    Пример 3. Пример обработки команды настройки системы координат Origin. Анализируется значение свойства OriginType. Если оно равно нулю, выводится стандартная команда выбора системы координат заготовки G54-G59. Номер системы координат берётся из параметра CSNumber. Иначе формируется команда переноса локальной системы координат G92 X Y Z. Значения смещений по осям системы координат берутся разными способами из соответствующих дочерних свойств параметра MCS.OriginPoint.

    program Origin
      if Cmd.Int["OriginType"]=0 then begin !G54-G59
        Output "G" + Cmd.Str["CSNumber"]
      end else begin                        !G92 X Y Z
        X = Cmd.Flt["MCS.OriginPoint.X"]
        Y = Cmd.Ptr["MCS.OriginPoint.Y"].Flt
        Z = Cmd.Ptr["MCS.OriginPoint"].Flt["Z"]
        Output "G92 X" + Str(X) + " Y" + Str(Y) + " Z" + Str(Z)
      end
    end
    

    Оператор Cmd (параметры с уникальным кодом)

    Для измерительных циклов параметры могут записываться в массив CLD в другом порядке. Каждый параметр имеет уникальный код, по которому можно получить значение параметра.

    Синтаксис доступа к параметрам команды CLData по числовому коду:

    • CmdPrm.ItemCount — число параметров команды;
    • CmdPrm.Flt[Code] — возвращает значение параметра по его коду в виде Double;
    • CmdPrm.Int[Code] — возвращает значение параметра по его коду в виде Integer;
    • CmdPrm.Str[Code] — возвращает значение параметра по его коду в виде String;
    • CmdPrm.Bol[Code] — возвращает значение параметра по его коду в виде Boolean;
    • CmdPrm.IndexOfCode(Code) — найти индекс параметра по его коду;
    • CmdPrm.Item[i].ItemType — тип параметра по индексу (String, Integer, Double, Boolean);
    • CmdPrm.Item[i].Flt — значение параметра по индексу в виде Double;
    • CmdPrm.Item[i].Int — значение параметра по индексу в виде Integer;
    • CmdPrm.Item[i].Str — значение параметра по индексу в виде String;
    • CmdPrm.Item[i].Bol — значение параметра по индексу в виде Boolean;
    • CmdPrm.Item[i].Code — числовой код параметра по индексу.

    Доступ из .NET

    В .NET текущая команда — это первый аргумент обработчика, строго типизированный интерфейс (ICLDCircleCommand, ICLDGotoCommand, ...), производный от ICLDCommand. Чтение типизированных свойств (cmd.EP.X, cmd.R, ...) — рекомендуемый способ; перечисленные ниже члены покрывают ту же информацию, что и оператор Cmd в sppx:

    sppx .NET (ICLDCommand) Описание
    Cmd.Code cmd.CmdTypeCode уникальный числовой код типа команды
    - cmd.CmdType тип команды как перечисление CLDCmdType
    Cmd.Name cmd.Caption имя команды, как оно отображается в окнах
    Cmd.Data cmd.CLDataS текстовые данные команды (или её строковое представление)
    Cmd.Data[i] cmd.CLD[i] i-й числовой параметр (см. Массив CLD)
    - cmd.Index индекс команды в её файле CLData

    Доступ к именованным параметрам (Str / Int / Flt / Ptr) идентичен, поскольку ICLDCommand реализует общую модель именованных свойств:

    public override void OnLoadTl(ICLDLoadTlCommand cmd, CLDArray cld)
    {
        nc.OutWithN("T" + cmd.Int["ToolID"] + "(" + cmd.Str["RevolverID"] + ")");
    }
    

    Вложенные и массивные параметры используют cmd.Ptr["Name"], .Arr["Name"], .Item[i] и составной синтаксис имён "Group.Sub.Param" / "Array(Key)", в точности как в sppx — см. Именованные параметры CLData.

    Параметры с уникальным кодом. В .NET-постпроцессорах почти всё так же, но доступ выполняется через ключевое слово cmd.Prm (cmd.Prm.Flt[code], cmd.Prm.Int[code], cmd.Prm.IndexOfCode(code), cmd.Prm.Item[i]...).

    Сопутствующие ссылки

    • Именованные параметры CLData
    • Предопределённый массив CLD
    • Просмотр команд CLData
    • Функции и операторы доступа к CLData
    In this article