Функции поиска прототипа
INTEGER GetProtoID(STRING <ProtoLib>, STRING <Prototype>[, STRING <Field>, VARIANT <Value>])
Функция ищет прототип с именем <Prototype> в библиотеке прототипов с именем <ProtoLib> и возвращает его ID или 0, если такого прототипа в библиотеке нет. Если заданы дополнительные параметры <Field> и <Value>, то если прототипа с именем <Prototype> в библиотеке <Prototype> не найдено, функция пытается найти прототип в той же библиотеке, у которого значение поля с именем <Field> равно <Value>. В качестве <Field> можно указать ProtoMacro или GUID. Такая ситуация возможна, если пользователь переименовал прототип.
Возможные значения имен полей <Field>:
- ProtoMacro — Имя файла макропрограммы создания прототипа — строковое поле
INTEGER GetProtoInfo(STRING <ProtoLib>, INT <ProtoID>, ARRAY <info>) (с 18.02.2020)
Функция возвращает информацию о прототипе с ID <ProtoID> в библиотеке прототипов с именем <ProtoLib>.
Выходные параметры:
<info[1]>— название прототипа (строка);<info[2]>— макрокоманда создания прототипа (строка);<info[3]>— файл с картинкой к прототипу (строка).
Функция возвращает число:
- -2 — нет прототипа с данным ID;
- -1 — нет такой протобиблиотеки;
- 0 — ошибка;
- > 0 — количество заполненных элементов в массиве
<info>
Поиск параметра прототипа по смыслу
INTEGER GetPrParMean(STRING <ProtoLib>, INT <ProtoID>, STRING <meanGUID>, STRING <arrParName>[, STRING <arrParType>]) (с 14.02.2025)
Функция находит параметры прототипа с ID <ProtoID> в библиотеке прототипов с именем <ProtoLib> с заданным смыслом параметров <meanGUID> (строка в формате {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} задающая GUID смысла параметров)
<arrParName>, <arrParType> — строки с идентификаторами массивов, которые будет созданы, если в указанном прототипе есть хотя бы один параметр с требуемым смыслом.
Выходные параметры:
<arrParName>— массив с именами найденных параметров прототипа;<arrParType>— массив с типами найденных параметров прототипа.
Функция возвращает число:
- -2 — нет прототипа с данным ID;
- -1 — нет такой протобиблиотеки;
- -3 — ошибка;
- >= 0 — количество найденных параметров
Поиск параметра прототипа по типу
| Данная функция реализована только для К3-Мебель |
INT GetProtoPar(INT <ProtoID>, {INT <ProtoLibID> | STRING <ProtoLibName>}, INT <ParamType>, STRING <ParNameArray>)
Функция GetProtoPar находит среди параметров прототипа с ID = <ProtoID> в библиотеке с номером <ProtoLibID> или именем <ProtoLibName> все параметры, тип которых равен <ParamType>. По результатам этого функция создает массив с именем <ParNameArray> и заполняет его именами найденных параметров.
Функция возвращает количество найденных параметров. Если параметров не найдено, функция возвращает 0 и массив с именем <ParNameArray> не создает. Если прототипа с ID=<ProtoID> в библиотеке <ProtoLibName> (<ProtoLibID>) не существует, функция возвращает -1.
В качестве типа параметров <ParamType> может выступать ID группы подстановки или:
- 1 — размер
- 2 — количество
- 3 — значение да/нет
- 4 — набор значений
- 5 — индекс текстурного материала
Пример использования:
ProtoId=63; //-- ID прототипа для поиска параметров LibName="Shkaf"; //-- Название библиотеки для поиска параметров libid=1; //-- ID библиотеки (нужно лиьбо ID, либо название) ParamType=17; //-- Тип параметра прототипа arrayname="arrn"; //-- Имя массива для выходных данных num=GetProtoPar(ProtoId,libid,ParamType,arrayname); putmsg(num); putmsg(arrn); exit;