Наборы параметров
Наборы параметров — scratch параметры («параметры-зарубки») – совокупность параметров с присвоенными значениями. Данные наборы параметров могут быть присвоены объекту, записаны в файл, прочитаны из файла. Также в процессе работы с набором параметров можно создать переменные K3 и присвоить им значения из набора параметров. Каждый набор параметров может быть разделен на несколько групп.
Параметры могут быть следующих типов:
- Числовые
- Строковые
- Подстановки (набор значений из списка «строка — значение»). То есть, например, подстановкой может служить содержимое следующего, например, вида:
- 11 — «стойка»
- 12 — «полка»
- 14 — «стенка»
В этом случае есть список возможных значений параметра (11, 12, 14) и строк им соответствующих («стойка», «полка», «стенка»). Параметр может принимать только одно значение и только из указанного списка. Аналогией может служить перечисляемый тип данных в языках программирования.
При работе с наборами параметров необходимо придерживаться следующих правил.
- Имя переменной должно быть строкой из букв, цифр и знаков $ и _ длиной до 12 символов, и не должно начинаться с цифры.
- Имя подстановки и имя группы может быть строкой из любых символов кроме ; , “ и =. Длина имени подстановки и имени группы не должна превышать 32 символов.
Наборы параметров являются достаточно мощным инструментом при работе со сложными параметрическими моделями, одни параметры которых определяются другими параметрами.
Инициализация набора параметров и завершение работы с набором параметров
INT InitScratch()
Функция InitScratch инициирует новый набор параметров. Функция возвращает индекс созданного набора или ноль в случае ошибки.
LOGICAL TermScratch(INT <Index>)
Функция TermScratch завершает работу с набором параметров с индексом <Index> и освобождает занятые ими ресурсы. Функция возвращает
- 1 — в случае успешного завершения работы с набором
- 0 — в случае ошибки
Чтение и запись наборов параметров
AddScratch
LOGICAL AddScratch(INT <Index>, STRING <SubstName>, LOGICAL <IsNumber>);
Функция AddScratch добавляет в набор параметров с индексом <Index> новую группу параметров – множество перечисляемых значений (подстановку) с именем <SubstName>. Логический параметр <IsNumber> определяет, параметры какого типа (числовые – 1 или строковые 2) содержатся в подстановке. Функция возвращает
- 1 — в случае успешного выполнения
- 0 — в случае ошибки
LOGICAL AddScratch(INT <Index>, STRING <GroupOrSubstName>, STRING <ParamName>, VARIANT <ParamValue>)
Функция AddScratch добавляет в группу или в подстановку с индексом <Index> и именем <GroupOrSubstName> простой параметр: имя параметра (<ParamName>) и его значение (<ParamValue>). Если указанной группы нет в наборе, то она создаётся. В разных группах имена параметров могут совпадать. Повторное добавление параметра осуществит замену его значения. При добавлении параметра в подстановку тип значения параметра должен соответствовать типу, декларированному при создании подстановки. Функция возвращает
- 1 — в случае успешного выполнения
- 0 — в случае ошибки
LOGICAL AddScratch(INT <Index>, STRING <GroupName>, STRING <ParamName>, VARIANT <ParamValue>, STRING <SubstName>)
Функция AddScratch добавляет в группу набора с индексом <Index> и именем <GroupName> параметр перечисляемого типа (подстановку с именем <SubstName>) с именем <ParamName> и значением <ParamValue>. Если указанной группы нет в наборе, то она создаётся. В разных группах имена параметров могут совпадать. Повторное добавление параметра осуществит замену его значения. Значение параметра должно быть одним из значений в указанной подстановке. Функция возвращает
- 1 — в случае успешного выполнения
- 0 — в случае ошибки
GetScratch
LOGICAL GetScratch(INT <Index>, STRING <GroupOrSubstName>, STRING <ParamName>, VARNAME <ParamValue>, STRING <SubstName>)
Функция GetScratch позволяет получить значение параметра из набора с индексом <Index> и именем <GroupOrSubstName>. <ParamName> содержит строку с именем параметра. <ParamValue> получает значение извлеченного параметра. Если набор является подстановкой, то в <SubstName> заносится имя подстановки. Иначе в <SubstName> заносится пустая строка. Функция возвращает
- 1 — в случае успешного выполнения
- 0 — в случае ошибки
DelScratch
LOGICAL DelScratch(INT <Index>, STRING <GroupOrSubstName>)
Функция DelScratch удаляет группу или подстановку с именем <GroupOrSubstName> из набора с индексом <Index>. Нельзя удалять подстановку, если на нее ссылается хотя бы один параметр в этом наборе. Функция возвращает
- 1 — в случае успешного выполнения
- 0 — в случае ошибки
LOGICAL DelScratch(INT <Index>, STRING <GroupOrSubstName>, STRING <ParamName>)
Функция DelScratch удаляет параметр с именем <ParamName> из группы или подстановки с именем <GroupOrSubstName> набора с номером <Index>. Функция возвращает
- 1 — в случае успешного выполнения
- 0 — в случае ошибки
WriteScratch
LOGICAL WriteScratch(INT <Index>, STRING <AttrName>, VARIANT <holder>)
Функция WriteScratch создаёт и приписывает текстовый атрибут с именем <AttrName> объекту или рабочей записи по содержимому набора параметров с индексом <Index>. Параметр <holder> может быть одним из следующих типов:
OBJECT— владелец — указанный объект;STRING— владелец — блок с именем заданным строкой holder;INT— владелец — рабочая запись.
Функция возвращает
- 1 — в случае успешного выполнения
- 0 — в случае ошибки
Формат создаваемого атрибута:
Scratch-атрибут
Группа1;{Число|Строка} // наименование подстановки с числовыми
// или строковыми значениями
Параметр1=Значение
Параметр2=Значение
…
ГруппаN // наименование обычной группы параметров (не подстановки)
Параметр1=Значение;Подстановка // перечисляемый параметр
Параметр2=Значение // простой параметр
Параметр3=”строка” // простой параметр со значением строка
…
ReadScratch
INT ReadScratch(STRING <AttrName>, VARIANT <holder>)
По текстовому атрибуту с именем <AttrName>, созданному по набору параметров, создать набор параметров. Параметр <holder> может быть одним из следующих типов:
OBJECT— владелец — указанный объект;STRING— владелец — блок с именем заданным строкой holder;INT— владелец — рабочая запись.
Функция возвращает индекс созданного набора или ноль в случае ошибки.
Пример использования функций, указанных выше
Пример на макроязыке к3:
// Инициализируем новый набор параметров. pars=initscratch(); // Создаем шаблон текстового атрибута c именем "atrname". attribute create "atrname" "Пользовательские параметры" text 10 20; // Добавляем в набор параметров подстановку // с именем "Панели" числового типа. NULLOUT=addscratch(pars,"Панели",1); // Добавляем в созданную подстановку с именем "Панели" параметры // "Полка", "Стойка", "Стенка" со значениями // 12, 11, 14 соответственно. NULLOUT=AddScratch(pars,"Панели","Полка",12); NULLOUT=AddScratch(pars,"Панели","Стойка",11); NULLOUT=AddScratch(pars,"Панели","Стенка",14); // Добавляем в созданный набор параметров с индексом pars // в группу с именем "Группа панелей" параметр // перечисляемого типа (подстановку) // с именем "Виды", значением 12 (одно из // значений в подстановке) и именем самой подстановки Панели. // Результатом произведённых операций будет создание // у указанного объекта scratch-атрибута с именем "atrname". NULLOUT=addscratch(pars,"Группа панелей","Виды",12,"Панели"); // Записываем набор параметров в атрибут objident : obj; NULLOUT=WriteScratch(pars,"atrname",obj); // Завершаем работу с набором параметров pars=termscratch(pars);
Если Вы хотите создать набор параметров и группу, в которой будут параметры числового или строкового типа и параметр(ы) перечисляемого типа, то независимо от нужного порядка создания параметров необходимо сначала добавить в набор подстановку (первый вариант функции
AddScratch), затем уже можно добавлять простые параметры в группу.
Вычислить группу набора
calcvarscr <Index> <GroupName>
Команда calcvarscr вычисляет группу набора параметров с индексом <Index> и именем <GroupName> — создает переменные, одноименные с параметрами и присваивает им значения из набора.
Результат работы команды можно поместить в переменную. Команда возвращает
- 1 — в случае успешного завершения;
- 0 — в случае ошибки.
Пример:
#res calcvarscr 1 "Fasad"; =res; 1
Получение количества и содержимого набора параметров
INT CntSubstScr(INT <Index>)
Функция CntSubstScr возвращает количество подстановок в наборе параметров с номером <Index>. В случае ошибки возвращает -1.
INT NameSubstScr(INT <Index>, STRING ARRAY <Names>)
Функция NameSubstScr заполняет массив <Names> именами подстановок набора параметров с номером <Index>. Функция возвращает количество заполненных элементов массива
INT CntGroupScr(INT <Index>)
Функция CntGroupScr возвращает количество групп в наборе параметров с номером <Index>. В случае ошибки функция возвращает -1.
INT NameGroupScr(INT <Index>, sttring ARRAY <Names>)
Функция NameGroupScr заполняет массив <Names> именами групп набора параметров с номером <Index>. Функция возвращает количество заполненных элементов массива.
INT CntVarScr(INT <Index>, STRING <GroupOrSubstName>)
Функция CntVarScr возвращает количество параметров в группе набора или подстановке с номером <Index> и именем <GroupOrSubstName>. В случае ошибки функция возвращает -1.
INT NameVarScr(INT <Index>, STRING <GroupOrSubstName>, string ARRAY <Names>)
Функция NameVarScr заполняет массив <Names> именами параметров в группе набора или подстановке с номером <Index> и именем <GroupOrSubstName>. Функция возвращает количество заполненных элементов массива.
Запись и чтение наборов параметров из файла
LOGICAL ScrtchToFile(INT <Index>, STRING <FileName>)
Функция ScrtchToFile сохраняет набор с номером <Index> в файл с именем <FileName>. У имени файла нет умолчания на расширение. Функция возвращает
- 1 — в случае успешного выполнения
- 0 — в случае ошибки
INT FileToScrtch(STRING <FileName>)
Функция FileToScrtch восстанавливает набор из файла с именем <FileName>, предварительно созданного функцией ScrtchToFile. Функция возвращает номер созданного набора в случае успешного выполнения и ноль (0) в случае ошибки.