Работа с параметрическими библиотеками

Материал из K3-Macro
Макро | Создание макропрограмм | Переменные и выражения | Вызов из ZIP | Типовые параметры | Создание геом. объектов | Буфер обмена | Сценарии | Параметрические библиотеки | Геометрические характеристики | Атрибуты | Структурные объекты | Текстовые файлы | Системные параметры | Работа с файлами | Редактирование объектов | Удаление объектов | Размеры | Штриховка | Объект «Текст» | Камера | Работа с видом | Наборы параметров | Запрос информации у пользователя | Фильтры | Слои | Графы | Универсальные плоские объекты | Функции работы с системой | Функции работы с объектами сцены | Работа с динамически подключаемыми библиотеками | Функции работы с массивами | Работа со строками | Математические функции | Работа с файлами DBF dBASE IV | Унифицированная работа с базами данных | Вычисление выражений | Присвоение имени объекту | Откатка и восстановление команд | Изменение режима трассировки макропрограмм | Вызов внешних приложений и задач | Проверка условия | Проверка типа переменной | Установкв статуса вывода сообщений | Выдача системного сообщения | Выбор объектов | Версия системы | Информация о системе | Проверка принадлежности к списку | Помещение строки в буфер команд | Получение метапути | Установка курсора ожидания | Мебельные команды и функции для макропрограммирования‎

Параметрические библиотеки (прототипы) - одно из мощных средств автоматизации, предлагаемое комплексом K3. K3 предоставляет возможности создания собственных параметрических объектов (прототипов), добавление прототипа в сцену K3, редактирование прототипа и пр.

Большую часть работы по созданию прототипа K3 берет на себя. Пользователю необходимо лишь создать заголовок (название) прототипа, определиться с набором параметров прототипа и написать макропрограмму создания прототипа.

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

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

protoobj <Keys> <Params>

Команда protoobj позволяет создавать прототип, редактировать прототип и т. д., в зависимости от ключей <Keys> и значений параметров <Params>

Варианты работы данной команды представлены ниже.

Добавление прототипа в сцену без диалогового окна[править | править код]

protoobj create [<ProtoLibName>] <ProtoID> <ParName1> <ParValue1> <ParName2> <ParValue2>,..., <ParNameN> <ParValueN> done <Point>

Команда добавляет прототип с номером <ProtoID> из библиотеки прототипов <ProtoLibName> в сцену в точку <Point>. Если имя библиотеки прототипов <ProtoLibName> опущено, прототип добавляется из текущей библиотеки прототипов. Точка <Point> указывает положение ЛСК прототипа в текущей ПСК. Параметры <ParName1>, <ParName2>, ..., <ParNameN> — строки, определяющие имена параметров прототипов. При добавлении прототипа в сцену им присваиваются соответственно значения параметров <ParValue1>, <ParValue2>,..., <ParValueN>. Если параметру прототипа значение не присвоено, значение берется из умолчаний библиотеки прототипов.

Добавление прототипа в сцену при помощи диалогового окна[править | править код]

protoobj add

Команда добавляет в сцену прототип, указанный при помощи диалогового окна «Выбор прототипа» с параметрами, введенными в диалоговом окне «Установка параметров прототипа». Поскольку данная команда использует диалоговое окно, применять эту команду в макропрограммах не рекомендуется.

Если выполнить команду

ProtoObj add [<ProtoLibName>] <ProtoID>

в одной строке, то сразу появится диалоговое окно параметров прототипа без диалогового окна выбора прототипа.

Выбор прототипа в диалоговом окне
Установка параметров прототипа

Редактирование прототипа[править | править код]

protoobj edit [list] <Object> <ParName1> <ParValue1> <ParName2> <ParValue2>,..., <ParNameN> <ParValueN> done

Команда редактирует прототип <Object>, изменяя его параметры, заданные строками <ParName1>, <ParName2>, ..., <ParNameN> и присваивая им соответственно значения <ParValue1>, <ParValue2>,..., <ParValueN>. При этом неизмененные параметры сохраняют свои прежние значения.

Необязательный ключ list указывает на то, что ввод параметров прототипа и их значений будет осуществляться без диалогового окна. По умолчанию ввод параметров осуществляется в диалоговом окне «Установка параметров прототипа» (см. выше).

Функции работы с прототипами[править | править код]

ProtoLib[править | править код]

STRING ProtoLib(OBJECT <Obj>)

Функция возвращает имя библиотеки прототипов (с расширением ".ptl") объекта <Obj>, если он является прототипом или пустую строку, если объект прототипом не является.

ProtoID[править | править код]

INT ProtoID(OBJECT <Obj>)

Функция возвращает идентификатор (ID) прототипа объекта <Obj>, если он является прототипом или ноль, если объект прототипом не является.

GetProtoMac[править | править код]

STRING GetProtoMac(STRING <NameLib>)

Функция возвращает полный путь к папке с макропрограммами из библиотеки прототипов с именем <NameLib> или пустую строку, если указанная библиотека не зарегистрирована. Имя библиотеки может быть полным или кратким.

GetProtoVal[править | править код]

logical GetProtoVal(OBJECT <Obj>, {VARIANT <ParName> | 0 | ""}, VARNAME DOUBLE <Value>)

logical GetProtoVal(OBJECT <Obj>, {VARIANT <ParName> | 0 | ""}, VARNAME STRING <Value>)

Функция осуществляет запрос параметра прототипа объекта <Obj>. <ParName> – имя (STRING) или идентификатор (INT) параметра прототипа. <Value> – переменная для возвращаемого значения. Если вместо параметра <ParName> задано 0 или пустая строка (""), то функция записывает в переменную <Value> номер прототипа

Функция возвращает:

0 — в случае ошибки (отсутствия параметра),
1 — успешное завершение функции.

Пример:

PrMater=0;
err=GetProtoVal(pnt,"PrMater",PrMater);
=err;
1
=PrMater;
358

ChangePInfo[править | править код]

logical ChangePInfo(OBJECT <Obj>, STRING <ParName>, double <Value>)

logical ChangePInfo(OBJECT <Obj>, STRING <ParName>, string <Value>)

Функция изменяет параметр с именем <ParName> у прототипа объекта <Obj> на значение <Value>. Функция не перестраивает объект с новым (измененным) значением параметра. Для перестроения объекта необходимо воспользоваться командой редактирования прототипа. Функция возвращает:

0 — в случае ошибки (отсутствия параметра),
1 — успешное завершение функции.

Пример:

objident last 1 pnt;
=ChangePInfo(pnt,"PrMater",0);
1

dbVar[править | править код]

Double dbVar(string <ParName>, double <Default>)

Double dbVar(string <ParName>, string <Default>)

Функция читает и возвращает значение параметра с именем <ParName> текущего прототипа, а если такого параметра нет, возвращает значение <Default>. Функция используется исключительно в макропрограмме прототипа.

Также эта функция используется для чтения значения глобальной константы с именем <ParName> из библиотеки прототипов. Если такая константа отсутствует, возвращается значение <Default>. В этом случае чтение константы может происходить не только в макропрограмме прототипа.

Если глобальная константа в библиотеке прототипов и параметр текущего прототипа имеют одинаковое имя, то предпочтение отдается параметру прототипа.

Пример:

=dbVar(“HDSP”,10); // Такая константа есть
16
=dbVar(“qwe”,10); // Такой константы нет. Берется умолчание
10

dbSetVar[править | править код]

LOGICAL dbSetVar(string <ParName>, double <Value>)

LOGICAL dbSetVar(string <ParName>, string <Value>)

Для версий К3 от 7.4 и выше

Функция записывает в текущий прототип значение <Value> параметра с именем <ParName>. Если у прототипа есть такой параметр и значение подходит по типу и допустимому диапазону, то функция возвращает 1. Иначе — 0.

Функция используется исключительно в макропрограмме прототипа.

Пример:

//-- Переписываем значения параметров
err=DbSetVar("ПовРуч",0);
err=DbSetVar("Шир",400);
err=DbSetVar("Глуб",5840);
err=DbSetVar("ШирС",100);
err=DbSetVar("ШирС2",100);
err=DbSetVar("ShiftDuct",0);

Об атрибуте $ProtoInfo[править | править код]

Параметры прототипа у созданного объекта-прототипа хранятся в специальном системном атрибуте $ProtoInfo. Это — текстовый атрибут, представляющий собой набор строк и имеющий следующую структуру:

<ProtoLibName>
<ProtoID>
<ProtoParName1>=<ProtoValue1>
<ProtoParName2>=<ProtoValue2>
...
<ProtoParNameN>=<ProtoValueN>
0

где

<ProtoLibName> — имя библиотеки прототипов
<ProtoID> — ID прототипа в данной библиотеке прототипов
<ProtoParNameK> — Имя К-го параметра прототипа
<ProtoValueK> — значение данного параметра прототипа

или устаревший формат

<ProtoLibName>
<ProtoID>
<ProtoParID1>
<ProtoValue1>
<ProtoParID2>
<ProtoValue2>
...
<ProtoParIDN>
<ProtoValueN>
0

где

<ProtoLibName> — имя библиотеки прототипов
<ProtoID> — ID прототипа в данной библиотеке прототипов
<ProtoParIDK> — ID K-го параметра прототипа
<ProtoValueК> — значение данного параметра прототипа

Завершается перечисление параметров прототипа символом 0 (ноль).

Если в атрибуте $ProtoInfo пропущен какой-либо параметр прототипа, то при перестроении прототипа для этого параметра в качестве значения будет взято умолчание на значение из описания прототипа.

Пример атрибута $ProtoInfo

Shkaf.ptl
10
x=2000
y=450
z=1870
Ktype=1
top=0
Symmetry=0
0

LOGICAL AddattrPI(OBJECT <Obj>, INT <LibID>, INT <ProtoNum>)

Функция AddattrPI создает и присваивает объекту <Obj> атрибут $ProtoInfo по scratch-атрибуту. Функция принимает на вход объект <Obj>, которому будет присвоен атрибут, ID библиотеки прототипов <LibID> и ID прототипа <ProtoNum>. Функция возвращает:

1 — в случае успешного выполнения
0 — в случае ошибки

Пример

ScrMod=InitScratch();
err=AddScratch(ScrMod,FurnType,"w",w);
err=AddScratch(ScrMod,FurnType,"D",d);
err=AddScratch(ScrMod,FurnType,"H",h);
...
err=AddScratch(ScrMod,FurnType,"ots",g_BottomOts);
NULLOUT=writescratch(ScrMod,Namescr,kbx);
NULLOUT=TermScratch(ScrMod);
NULLOUT=addattrpi(kbx,1,position);

Макро | Создание макропрограмм | Переменные и выражения | Вызов из ZIP | Типовые параметры | Создание геом. объектов | Буфер обмена | Сценарии | Параметрические библиотеки | Геометрические характеристики | Атрибуты | Структурные объекты | Текстовые файлы | Системные параметры | Работа с файлами | Редактирование объектов | Удаление объектов | Размеры | Штриховка | Объект «Текст» | Камера | Работа с видом | Наборы параметров | Запрос информации у пользователя | Фильтры | Слои | Графы | Универсальные плоские объекты | Функции работы с системой | Функции работы с объектами сцены | Работа с динамически подключаемыми библиотеками | Функции работы с массивами | Работа со строками | Математические функции | Работа с файлами DBF dBASE IV | Унифицированная работа с базами данных | Вычисление выражений | Присвоение имени объекту | Откатка и восстановление команд | Изменение режима трассировки макропрограмм | Вызов внешних приложений и задач | Проверка условия | Проверка типа переменной | Установкв статуса вывода сообщений | Выдача системного сообщения | Выбор объектов | Версия системы | Информация о системе | Проверка принадлежности к списку | Помещение строки в буфер команд | Получение метапути | Установка курсора ожидания | Мебельные команды и функции для макропрограммирования‎