Работа с мебельными состояниями

Материал из K3-Macro
(перенаправлено с «Переменные и массивы состояния»)
Макро | Мебельные команды и функции | Работа с проектом | Длинномеры | Комната | Мебельная панель | Профиль | Каркас | Виды и фильтры | Расчёт стоимости | Мебельные объекты | Работа с изделиями в сцене | Работа с мебельными состояниями | Запрос данных из Номенклатуры | Получение информации о положении вспомогательных файлов | Создание отчётов FastReport | Работа с чертежами | Пользовательские подстановки | Параметризация кривых | Приписывание мебельных позиций | Состояние мебельных пунктов меню и панелей инструментов | Определение мебельных габаритных координат | Заполнение массива параметрами отверстий | Поиск прототипа | Информация о линии свободного крепежа | Хэш-код объекта | Выгрузка информации в мебельную базу

В процессе работы K3 Мебель в памяти содержит информацию о текущих установках для будущих мебельных изделий (тип кромки, тип крепежа и пр.), текущих установках проектирования (номер текущего каркаса, максимальное число каркасов и пр). Комплекс таких сведений называется состоянием среды.

В K3 Мебель существуют два типа состояние среды - состояние проектирования и состояние построения.

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

В данном разделе описаны функции работы с состояниями. В ряде этих функций присутствует параметр <InstNum> - номер состояния: Этот параметр может принимать два значения:

1 — Состояние проектирования.

2 — Состояние построения.

Новое текущее состояние[править | править код]

INT InitInst(INT <InstNum>)

Функция InitInst заводит новое текущее состояние с номером <InstNum>. Предыдущее состояние (то, с которым работали до сих пор) теряется. Новое состояние не имеет ни одной переменной.

Функция возвращает число запомненных состояний данного номера <InstNum>.

Работа со стеком состояний[править | править код]

INT PushInst(INT <InstNum>)

Функция PushInst помещает текущее состояние в стек. Текущим становится новое состояние с переменными, определенными в запомненном состоянии. Чтобы обнулить эти переменные, нужно вызвать функцию InitInst.

Функция возвращает число запомненных состояний данного номера <InstNum>.


INT PopInst(INT <InstNum>)

Функция PopInst извлекает из стека последнее запомненное состояние. Текущим становится новое состояние. Предыдущее — теряется. Число запомненных состояний уменьшается на 1. Функция обратна PushInst.

Функция возвращает число запомненных состояний данного номера <InstNum>.

Собрать и раздать состояние[править | править код]

LOGICAL CollectInst(INT <InstNum>)

Функция CollectInst "собирает" состояние из переменных, чьи имена заданы в системе и записанных в файлах состояния. То есть функция записывает в память состояния значения переменных и массивов, которые заданы в системе и записаны в файлах состояния. Текущее состояние теряется.

Функция возвращает 1 - в случае успеха, 0 - в случае ошибки.


LOGICAL ExploreInst(INT <InstNum>)

Функция ExploreInst "раздает" состояние в переменные, чьи имена заданы в системе и записанных в файлах состояния. То есть Функция присваивает переменным K3 (калькуляторным переменным) значения переменных состояния.

Функция возвращает 1 - в случае успеха, 0 - в случае ошибки.

Переменные и массивы состояния[править | править код]

LOGICAL GetVarInst(INT <InstNum>, STRING <VariableName>, VARNAME <VarName> , VARIANT <Default>[, INT <FirstIndex>[, INT <SecondIndex>]])

Функция GetVarInst записывает в калькуляторную переменную <VarName> значение переменной состояния с именем <VariableName>. Если переменной состояния с именем <VariableName> отсутствует, переменной <VarName> присваивается значение по умолчнию <Default>.

Функция возвращает 1 - в случае успеха, 0 - в случае ошибки.

Если заданы переменные <FirstIndex> и <SecondIndex>, функция записывает в переменную <VarName> значение, которое содержит переменная-массив состояния по индексу [<FirstIndex>,<SecondIndex>]. Если массив одномерный, то значение <SecondIndex> должно быть не задано. Если что-то напутано с размерностью массивов, то функция возвращает 0.


LOGICAL SetVarInst(INT <InstNum>, STRING <VariableName>[, VARNAME <VarName> [, INT <FirstIndex>[, INT <SecondIndex>]]])

Функция SetVarInst записывает в переменную состояния <VariableName> значение калькуляторной переменной с именем <VarName>.

Функция возвращает 1 - в случае успеха, 0 - в случае ошибки.

Если заданы переменные <FirstIndex> и <SecondIndex>, функция записывает в переменную-массив <VariableName> по индексу [<FirstIndex>,<SecondIndex>] значение, которое содержит переменная <VarName>. Если массив одномерный, то значение <SecondIndex> должно быть не задано. Если что-то напутано с размерностью массивов, то функция возвращает 0.

Если не задано значение <VarName>, то функция удаляет из состояния <InstNum> переменную с именем <VariableName>. Если такой переменной в состоянии не было, то функция ничего не делает.


LOGICAL GetArrInst(INT <InstNum>, STRING <ArrayName>, VARNAME <ArrName>)

Функция GetArrInst записывает в калькуляторный массив <ArrName> значение переменной-массива состояния с именем <ArrayName>.

Функция возвращает 1 - в случае успеха, 0 - в случае ошибки.

Массив <ArrName> должен быть предварительно определен и его размерность должна соответствовать размерности переменной-массива состояния.


LOGICAL SetArrInst(INT <InstNum>, STRING <ArrayName>[, VARNAME <ArrName>])

Функция SetArrInst записывает в переменную-массив состояния <ArrayName> значение массива с именем <ArrName>.

Функция возвращает 1 - в случае успеха, 0 - в случае ошибки.

Массив <ArrName> должен быть предварительно определен и его размерность должна соответствовать размерности переменной-массива состояния.

Если не задано значение <ArrName>, то функция удаляет из состояния <InstNum> массив с именем <ArrName>.


INT FindVarInst(INT <InstNum>, STRING <VariableName>)

Функция FindVarInst ищет в состоянии переменную с именем <VariableName> и возвращает 0 - в случае неудачи и 1 - в случае успеха.


INT FindArrInst(INT <InstNum>, STRING <ArrayName>)

Функция ищет в состоянии переменную-массив с именем <ArrayName> и возвращает 0 - в случае неудачи и m*100000+n для массива, где m и n - размерности массива в случае успеха.

Количество состояний[править | править код]

INT GetNumInst(INT <InstNum>)

Функция GetNumInst возвращает число запомненных состояний в стеке.

Удалить состояние[править | править код]

LOGICAL FreeInst(INT <InstNum>)

Функция FreeInst удаляет из памяти все состояния с номером <InstNum>. Функция нужна, как правило, для создания нового проекта.

Функция возвращает 1 - в случае успеха, 0 - в случае ошибки.

Pluso.png Функция удаляет полностью весь стек состояний.

Примеры[править | править код]

a=initinst(1);
b=initinst(2);

a=pushinst(1);
b=pushinst(2);

a=getvarinst(1,"g_KarkasNumb",qqq); //-- Проверить, чему равно qqq
a=setvarinst(1,"PrMater",PrMater);
a=setvarinst(1,"www",PrMater);
a=getvarinst(1,"www",qqq);  //-- Проверить, чему равно qqq
a=getnuminst(1);
b=getnuminst(2);
a=findvarinst(1,"www"); //-- Проверить, чему равно a
a=findvarinst(2,"www"); //-- Проверить, чему равно a
a=popinst(1);
PrMater=1000;
a=collectinst(1); //-- Проверить, чему равно PrMater
b=pushInst(1);
a=exploreinst(1); //-- Проверить, чему равно PrMater
a=popInst(1);
a=popInst(1);
a=popInst(1);
a=exploreinst(1); //-- Проверить, чему равно PrMater;
b=freeInst(1);
a=freeinst(2);

Очистить состояние[править | править код]

LOGICAL ClearInst(INT <InstNum>)

Функция ClearInst очищает текущее состояние. Функция возвращает 1 в случае успешного завершения, 0 - в случае ошибки


Макро | Мебельные команды и функции | Работа с проектом | Длинномеры | Комната | Мебельная панель | Профиль | Каркас | Виды и фильтры | Расчёт стоимости | Мебельные объекты | Работа с изделиями в сцене | Работа с мебельными состояниями | Запрос данных из Номенклатуры | Получение информации о положении вспомогательных файлов | Создание отчётов FastReport | Работа с чертежами | Пользовательские подстановки | Параметризация кривых | Приписывание мебельных позиций | Состояние мебельных пунктов меню и панелей инструментов | Определение мебельных габаритных координат | Заполнение массива параметрами отверстий | Поиск прототипа | Информация о линии свободного крепежа | Хэш-код объекта | Выгрузка информации в мебельную базу