Предопределённый массив CLD
Массив CLD хранит числовые параметры выполняемой в данный момент команды CLData. Перед вызовом обработчика команды параметры команды помещаются в этот массив; внутри обработчика параметры анализируются чтением отдельных элементов массива, и на основе этого анализа формируются кадры управляющей программы.
Параметры команды доступны либо индексированием соответствующего элемента массива, либо по уникальному имени параметра.
Доступ из sppx
Массив CLD — это массив вещественных чисел. Он предназначен для хранения числовых параметров выполняемой в данный момент технологической команды CLData. Перед вызовом обработчика текущей команды её параметры заполняются в этот массив. Внутри обработчика параметры команды можно анализировать, обращаясь к отдельным элементам массива, и на основе анализа формировать кадры управляющей программы.
Параметры команды доступны либо индексированием соответствующего элемента массива CLD, либо по уникальному имени параметра.
Для доступа по индексу используйте обычный синтаксис массива: CLD[i] — i-й элемент массива, вещественное число, i — индекс элемента, положительное целое число. Индекс элемента массива может быть переменной или выражением целого типа. Например: CLD[3], CLD[n], CLD[2*n+1] и т. д. Общее число элементов массива CLD содержится в предопределённой переменной RecNum.
Для доступа к параметрам по имени используйте следующий синтаксис: CLD.Имя параметра, где Имя параметра — уникальный идентификатор параметра. Например, CLD.X, CLD.Mode и так далее. Имена параметров специфичны для каждой команды. Подробное описание технологических команд CLData и их параметров приведено в описании технологических команд. Также можно увидеть список параметров на панели Текущие параметры страницы Шаблон главного окна и на вкладке CLData внизу главного окна.
Пример использования массива CLD:
program Circle
if CLD.R > 0 then INTERP_ = 3
else INTERP_ = 2 ! G3/G2
X = cld[5]
Y = cld[6]
Z = cld[7]
I = CLD.Xc
J = CLD.Yc
R = abs(cld.R)
OutBlock
end
Приведённый выше обработчик команды CIRCLE выводит в кадры управляющей программы движение по окружности G2 или G3 (по часовой стрелке или против) с конечной точкой (X, Y, Z), центром (I, J) и радиусом (R).
Доступ к параметрам команды CLData, в том числе нечисловым, можно также получить оператором Cmd.
Доступ из .NET
Обработчик команды получает тот же массив числовых параметров вторым аргументом — экземпляр класса CLDArray (по соглашению именуемый cld). Его члены отражают массив CLD из sppx:
| sppx | .NET | Описание |
|---|---|---|
CLD[i] |
cld[i] |
i-й параметр, вещественное число; индекс 1-based ([1..Count]), как и в sppx |
CLD.Name |
cld["Name"] |
параметр, адресуемый по его уникальному текстовому имени (без учёта регистра) |
RecNum |
cld.Count |
число параметров в массиве |
Тот же обработчик CIRCLE в .NET:
public override void OnCircle(ICLDCircleCommand cmd, CLDArray cld)
{
int interp = cld["R"] > 0 ? 3 : 2; // G3 / G2
double x = cld[5];
double y = cld[6];
double z = cld[7];
double i = cld["Xc"];
double j = cld["Yc"];
double r = Math.Abs(cld["R"]);
// ... вывод кадра
}
В .NET параметры обычно читаются вместо этого из строго типизированного объекта cmd (cmd.EP.X, cmd.R, ...) — см. Текущая команда; «сырой» массив cld доступен для случаев, которые не покрываются типизированными членами.