Указание мебельных объектов
MbGet <Prompt> <Params>
Команда MbGet позволяет указывать мебельный объект в соответствии с параметрами <Params>
. Строка <Prompt>
задает подсказку для выбора.
Указание торца панели
MbGet <Prompt> panel <IDPoly> <IDLine> [separately | together] [band fix butt] ^x,y,z [^x1,y1,z1]
Команда выбирает объект Панель, попавший в ловушку с координатами x,y,z. При этом, если в ловушку попал торец панели (он подсвечивается), то в переменные <IDPoly> <IDLine>
попадет номер контура в рамках панели и номер элемента контура соответственно. Эти значения можно использовать для назначения крепежа, кромок и пр. на торцы панели. Если при указании панели не выбран ни один торец, а указана только панель, то команда попросит указать торец той панели, которая выбрана при предыдущем шаге.
Если используется необязательный ключ separately
, то указание торца панели происходит принудительно в два этапа. Если ввести ключ together
, то выбор торца панели происходит по предыдущему сценарию (сразу торец и панель, а если это невозможно, то поочередно сначала панель, а потом торец).
Необязательные ключи band
, fix
и butt
включают подсказку с типом кромки, крепежа и торцевой обработки соответственно.
Пример:
#hobj MbGet "Укажите торец мебельной панели" panel IdPoly IdLine band fix butt =idPoly 1 =idLine 5 =hobj Не имеющий литерального представления тип данных: 16
Указание края профиля
MbGet <Prompt> profile <Begin> [separately | together] [angle] ^x,y,z [^x1,y1,z1]
Команда выбирает объект Профиль, попавший в ловушку с координатами x,y,z. При этом, если в ловушку попал конец профиля (он подсвечивается), то в переменную <Begin>
попадет номер конца профиля (0 — начало, 1 — конец). Это значение можно использовать для назначения угла подрезки конца профиля. Если при указании профиля не выбран ни один конец, а указан только профиль, то команда попросит указать конец того профиля, который выбран при предыдущем шаге.
Если используется необязательный ключ separately
, то указание конца профиля происходит принудительно в два этапа. Если ввести ключ together
, то выбор конца профиля происходит по предыдущему сценарию (сразу конец и профиль, а если это невозможно, то поочередно сначала профиль, а потом конец).
Необязательный ключ angle
включает подсказку с углом подреза профиля.
Пример:
#hobj MbGet "Укажите конец мебельного профиля" profile Begin angle =begin 0 =hobj Не имеющий литерального представления тип данных: 16
Указание ниши
#hObj MbGet <Prompt> niche <XGab> <YGab> <ZGab> ^x,y,z
Команда выбирает нишу, попавшую в ловушку с координатами x,y,z. Команда перемещает текущую систему координат в правый нижний дальний угол ниши. Сама ниша при этом подсвечивается и показываются ее габариты. Габариты ниши по осям X, Y, Z присваиваются переменным <XGab>
<YGab>
<ZGab>
соответственно.
либо
#hObj MbGet <Prompt> niche <arrout> ^x,y,z
hObj — имя переменной, в которую будет занесена ссылка на изделие или каркас, в котором указана ниша
arrout — массив с выходными данными из 15 элементов:
arrout[1]-[3]
— элементы, в которые будут занесены габариты указанной ниши
arrout[4]-[9]
— флаги наличия панелей по сторонам ниши в порядке — нижняя, верхняя, задняя, передняя, правая, левая
arrout[10]-[15]
— указатели на панели образующие нишу в том же порядке
ПСК будет установлена в ЛСК указанной ниши. Положение ЛСК ниши зависит от исходного положения ПСК от открытости сторон ниши
Пример1:
NULLOUT=getsnap(); MbGet "Укажите нишу" Niche XGab, YGab, ZGab =XGab; 500 =YGab; 500 =ZGab; 164 NULLOUT=ReSnap();
Пример2:
defarr arrout[15]; NULLOUT=getsnap(); #hobj Mbget "Укажите нишу" niche arrout NULLOUT=ReSnap(); PutMsg(arrout) arrout[1]=500 arrout[2]=500 arrout[3]=164 arrout[4]=1 arrout[5]=1 arrout[6]=0 arrout[7]=0 arrout[8]=1 arrout[9]=1 arrout[10]=Группа 0DECBF88 arrout[11]=Группа 0DECEDF0 arrout[12]=Группа 0DAE3BE8 arrout[13]=Группа 0DAE3BE8 arrout[14]=Группа 0DAE4188 arrout[15]=Группа 0DAE3D50 =hobj; Не имеющий литерального представления тип данных: 16
Установка панели
MbGet <Prompt> {shell | post | wall | cutwall} [exactly] [regular] [ongravitation | offgravitation] <ArrIn> <ArrOut> ^x,y,z
Команда определяет положение панели (полки — shell
, стойки — post
, утопленные стенки — wall
, врезные стенки — cutwall
) в нише, попавшей в ловушку с координатами x,y,z.
Массив <ArrIn>
содержит входные параметры для построения.
<ArrIn>[1]
— толщина "резиновой" панели
Массив <ArrOut> содержит выходные параметры.
<ArrOut>[1], <ArrOut>[2], <ArrOut>[3]
— координаты правого нижнего дальнего угла панели
<ArrOut>[4], <ArrOut>[5]
— габариты "резиновой" панели
<ArrOut>[6]
— число "резиновых" панелей (для кратного дублирования)
<ArrOut>[7]
— сдвиг "резиновых" панелей (для кратного дублирования)
<ArrOut[8]>
—<ArrOut[13]>
— признак наличия панели по нижней, верхней, задней, передней, правой и левой стороне соответственно
<ArrOut[14]>
— высота ниши, куда установлена панель
<ArrOut[15]>
—<ArrOut[20]>
— ссылки на панели по нижней, верхней, задней, передней, правой и левой стороне соответственно
Ключи ongravitation
и offgravitation
позволяют включить и выключить соответственно "притяжение" точки установки "панели" к панелям. Работать с включенном режимом притяжения удобней.
Ключ exactly
позволяет указать положение "панели" точно в диалоговом окне, пример которого представлен ниже.
ПСК будет установлена в ЛСК указанной ниши. Положение ЛСК ниши зависит от исходного положения ПСК
Пример:
defarr ArrIn[1], ArrOut[7]; ArrIn[1]=20; // Толщина панели MbGet "Укажите положение" shell ArrIn, ArrOut : =ArrOut[1]; 0 =ArrOut[2]; 0 =ArrOut[3]; 127 =ArrOut[4]; 556 =ArrOut[5]; 600 =ArrOut[6]; 1 =ArrOut[7]; 407
Указание ниши попанельно
MbGet <Prompt> {door | backwall} {Panel | Carcase} <ArrOut> ^x1,y1,z1, ^x2,y2,z2, [^x3,y3,z3, ^x4,y4,z4]
Команда просит последовательно указать два или четыре торца панели или каркаса, которые будут определять нишу. Первые два указания определяют положение и размер ниши по одному направлению, два других указания — по перпендикулярному направлению. В процессе указания будет подсказка выбранной ниши. По окончании система координат устанавливается в правый нижний дальний угол указанной ниши.
Ключи Panel
и Carcase
позволяют указать, определяется торец панели (Panel
) или каркаса (Carcase
). В случае панели торец указать можно явно или последовательно указав саму панель и торец на уже выбранной панели (см. Указание торца панели).
В массив <ArrOut>
последовательно заносятся:
<ArrOut>[1]
— ссылка на первый указанный объект
<ArrOut>[2]
— "сторона открывания" — направление ниши относительно первой панели
- 1 — Открывание слева
- 2 — Открывание справа
- 3 — Открывание сверху
- 4 — Открывание снизу
<ArrOut>[3]
,<ArrOut>[4]
,<ArrOut>[5]
— координаты первой точки ниши в СК ниши
<ArrOut>[6]
,<ArrOut>[7]
,<ArrOut>[8]
— координаты второй точки ниши в СК ниши
<ArrOut>[9]
,<ArrOut>[10]
,<ArrOut>[11]
— координаты третьей точки ниши в СК ниши
<ArrOut>[12]
,<ArrOut>[13]
,<ArrOut>[14]
— координаты четвертой точки ниши в СК ниши
<ArrOut>[15]
,<ArrOut>[16]
,<ArrOut>[17]
— габариты ниши по осям X,Y,Z
<ArrOut>[18]
,<ArrOut>[19]
,<ArrOut>[20]
— ссылки на второй, третий и четвертый указанные объекты соответственно.
Разница между ключами door
и backwall
в том, что при использовании ключа door
ниша всегда развернута "лицом" наружу. Это нужно, чтобы, например, ручка двери всегда стояла вовне. При использовании ключа backwall
поворота ниши не происходит и ниша ориентирована так же, как и локальная система координат объекта, в котором указывается ниша. Это удобно при создании задний стенок.
Глубина ниши по оси Y всегда устанавливается равной нулю |
Пример:
defarr ArrOut[17]; MbGet "Укажите положение" door ArrOut
Установка профиля
MbGet <Prompt> line <ArrIn> <ArrOut> [rotate | flip ] [back] [exactly] [ongravitation | offgravitation] ^x,y,z
Команда просит указать положение "профильного объекта" (объекта, протяженного только в одном направлении) в зависимости от ключей и параметров в нише, на которую указывает ловушка с координатами x,y,z.
<ArrIn>
— массив входных параметров для построения. Он содержит:
<ArrIn>[1]
— зарезервировано
<ArrIn>[2]
— флаг, нужно ли учитывать двери при установке
- 0 — не нужно
- 1 — нужно
<ArrIn>[3]
— угол в градусах — шаг угла для контекстного меню "поворот" (ключrotate
). На этот угол будет поворачиваться "профиль" вокруг своей оси при каждом выборе пункта меню "поворот" (указании ключаrotate
).
<ArrIn>[4]
— зарезервировано
<ArrIn>[5], <ArrIn>[6]
— габариты сечения "профиля" по оси X и Y соответственно
<ArrIn>[7]
— зарезервировано
<ArrIn>[8], <ArrIn>[9]
— сдвиг габаритов сечения "профиля" относительно середины этого профиля
<ArrOut>
— массив выходных параметров для построения. Он содержит:
<ArrOut>[1]
— ссылка на объект каркаса или панели, по которому осуществляется установка "профиля"
<ArrOut>[2], <ArrOut>[3], <ArrOut>[4]
— координаты точки установки "профиля" в системе координат "профиля" (должна быть 0,0,0)
<ArrOut>[5], <ArrOut>[6], <ArrOut>[7]
— координаты конечной точки установки "профиля" в системе координат "профиля" (должна быть 'L,0,0, где L' — длина профиля)
Ключ rotate
осуществляет поворот "профиля" на угол <ArrIn>[3]
.
Ключ flip
позволяет "перевернуть" "профиль". Т.е. поставить его "с ног на голову".
Ключ back
позволяет установить "профиль" в сторону, противоположную нише.
Ключи ongravitation
и offgravitation
позволяют включить и выключить соответственно "притяжение" точки установки "профиля" к панелям. Работать с включенном режимом притяжения удобней.
Ключ exaclty
позволяет указать положение «профиля» точно в диалоговом окне:
Пример:
defarr ArrIn[9], ArrOut[7]; ArrIn[2]=0; ArrIn[3]=90; ArrIn[4]=30; ArrIn[5]=20; ArrIn[6]=45; ArrIn[7]=0; ArrIn[8]=-10; ArrIn[9]=-22.5; mbget "Укажите положение" line ArrIn ArrOut : dx=((ArrOut[5]-ArrOut[2])*(ArrOut[5]-ArrOut[2])); dy=((ArrOut[6]-ArrOut[3])*(ArrOut[6]-ArrOut[3])); dz=((ArrOut[7]-ArrOut[4])*(ArrOut[7]-ArrOut[4])); d=sqrt(dx+dy+dz); =d 600
Установка комплектующего
MbGet <Prompt> point <ArrIn> <ArrOut> [rotate | flip ] [back] [exactly] [mirror] [^x,y,z]
Команда просит указать положение «комплектующего» (штучного элемента) в зависимости от ключей и параметров в нише, на которую указывает ловушка с координатами x,y,z.
<ArrIn>
— массив входных параметров для построения. Он содержит:
<ArrIn>[1]
— ссылка на устанавливаемый объект — комплектующий или 0, если вместо комплектующего в момент задания положения будем рисовать только габаритный бокс, параметры которого должны быть заданы в ArrIn и не должны быть нулевыми
<ArrIn>[2]
— флаг, нужно ли учитывать двери при установке
- 0 — не нужно
- 1 — нужно
<ArrIn>[3]
— угол в градусах — шаг угла для контекстного меню "поворот" (ключrotate
). На этот угол будет поворачиваться "комплектующий" вокруг своей оси при каждом выборе пункта меню "поворот" (указании ключа rotate).
<ArrIn>[4]
,<ArrIn>[5]
,<ArrIn>[6]
— габариты комплектующего, или (0,0,0), если габариты берутся из объекта-комплектующего
<ArrIn>[7]
,<ArrIn>[8]
,<ArrIn>[9]
— положение задаваемой точки относительно габаритов комплектующего или (0,0,0) если задан объект — комплектующий. Если объект-комплектующий не задан, заданные габариты (xg,yg,zb), то положение задаваемой точки обычно (-xg/2,0,-zg/2) — центр основания габаритного бокса;
<ArrIn>[10]
,<ArrIn>[11]
,<ArrIn>[12]
— координаты оси в ЛСК комплектующего, которую надо разместить перпендикулярно к стороне ниши. Если задан объект-комплектующий, то это обычно (0,1,0)
<ArrOut>
— массив выходных параметров для построения. Он содержит:
<ArrOut>[1]
— ссылка на объект каркаса или панели, по которому осуществляется установка комплектующего
<ArrOut>[2]
,<ArrOut>[3]
,<ArrOut>[4]
— координаты точки установки комплектующего в системе координат комплектующего (должна быть 0,0,0)
<ArrOut>[5]
,<ArrOut>[6]
,<ArrOut>[7]
— координаты конечной точки установки комплектующего в системе координат комплектующего (должна быть вдоль оси X)
Ключ rotate
осуществляет поворот комплектующего на угол <ArrIn>[3]
.
Ключ flip
позволяет "перевернуть" комплектующий. Т.е. поставить его "с ног на голову".
Ключ back
позволяет установить комплектующий в сторону, противоположную нише.
Ключ mirror
задаёт симметрию комплектующего относительно оси X ЛСК комплектующего
Ключ exaclty
позволяет указать положение комплектующего точно в диалоговом окне:
Пример:
defarr ArrIn[12], ArrOut[7]; ArrIn[2]=0; ArrIn[3]=90; ArrIn[4]=30; ArrIn[5]=20; ArrIn[6]=45; ArrIn[7]=0; ArrIn[8]=-10; ArrIn[9]=-22.5; ArrIn[10]=0; ArrIn[11]=0; ArrIn[12]=1; mbget "Укажите положение" point ArrIn ArrOut :
Указание связного фрагмента торца панели
MbGet <Prompt> PanelCrd <ArrCrd> [separately | together] [band fix butt] ^x,y,z [^x1,y1,z1]
Команда выбирает объект Панель, попавший в ловушку с координатами x,y,z. При этом, если в ловушку попал торец панели,или его фрагмент (он подсвечивается), то в массив <ArrCrd>
попадет информация об этом торце или его фрагменте. Если при указании панели не выбран ни один торец, а указана только панель, то команда попросит указать торец той панели, которая выбрана при предыдущем шаге.
Если используется необязательный ключ separately
, то указание торца панели происходит принудительно в два этапа. Если ввести ключ together
, то выбор торца панели происходит по предыдущему сценарию (сразу торец и панель, а если это невозможно, то поочередно сначала панель, а потом торец).
Массив <ArrCrd>
должен быть предварительно описан и должен содержать не менее 10 элементов, в которые помещаются:
<ArrCrd>[1]
— тип выбранного фрагмента торца:
- 1 — отрезок
- 2 — дуга
Если фрагмент <ArrCrd>[1]
= 1 (отрезок), то <ArrCrd>[2...7]
— координаты X, Y, Z начала и конца отрезка в текущей системе координат
Если фрагмент <ArrCrd>[1]
= 2 (дуга), то <ArrCrd>[2...10]
— координаты X, Y, Z начала, середины и конца дуги в текущей системе координат
Необязательные ключи band
, fix
и butt
включают подсказку с типом кромки, крепежа и торцевой обработки соответственно.
Пример:
defarr arrin[10]; #hobj MbGet "Укажите торец мебельной панели" PanelCrd arrin band fix butt : putmsg(arrin); arrin[1]=1 arrin[2]=2000 arrin[3]=600 arrin[4]=1523 arrin[5]=0 arrin[6]=600 arrin[7]=1523 arrin[8]=0 arrin[9]=0 arrin[10]=0 =hobj Не имеющий литерального представления тип данных: 16
Торец типа "сплайн" не выбирается |
Указание положения профильного объекта по двум отрезкам
MbGet <Prompt> 2segment <ArrIn> <ArrOut> [ {ortho | along } ] [rotate] ^x,y,z
Команда просит указать положение «профильного объекта» (объекта, протяженного только в одном направлении) по двум отрезкам в зависимости от ключей и параметров в нише, на которую указывает ловушка с координатами x,y,z.
<ArrIn>
— массив входных параметров для построения. Он содержит:
<ArrIn>[1]
— ID устанавливаемого профиля в номенклатурном справочнике или 0<ArrIn>[2]
— Шаг размещения вдоль отрезков<ArrIn>[3]
— Угол в градусах — шаг угла для контекстного меню "поворот" (ключ rotate). На этот угол будет поворачиваться "профиль" вокруг своей оси при каждом выборе пункта меню "поворот" (указании ключа rotate).<ArrIn>[4]
–<ArrIn>[6]
— Габариты устанавливаемого профиля. Эти габариты будут отображаться в "резиновом" параллелепипеде — отображении будущего профиля Если в первом элементе массива задан 0, то габариты будут браться из свойств профиля, заданного в первом элементе.<ArrIn>[7]
–<ArrIn>[9]
— Сдвиг "резинового" параллелепипеда<ArrIn>[10]
— Ссылка на первый опорный элемент. Он обязательно должен быть профильным элементом или 0. В случае, если задан не ноль, то происходит расчет подреза профильного элемента<ArrIn>[11]
— Ссылка на второй опорный элемент. Он обязательно должен быть профильным элементом или 0. В случае, если задан не ноль, то происходит расчет подреза профильного элемента<ArrIn>[12]
— Режим построения профильного элемента:
- 0 — просто отрезок по параметру длины
- 1 — отрезок, перпендикулярно 2-му опорному профилю
- 2 — отрезок, параллельный указанной плоскости
<ArrIn>[13]
–<ArrIn>[15]
— Координаты первой точки 1-го отрезка<ArrIn>[16]
–<ArrIn>[18]
— Координаты второй точки 1-го отрезка<ArrIn>[19]
–<ArrIn>[21]
— Координаты первой точки 2-го отрезка<ArrIn>[22]
–<ArrIn>[24]
— Координаты второй точки 2-го отрезка<ArrIn>[25]
— зарезервировано<ArrIn>[26]
–<ArrIn>[29]
— Нормаль плоскости параллельности. Если не задана, то плоскостью параллельности считается плоскость XOY.
Команда устанавливает ПСК в положение, в котором нужно разместить "профильный объект".
<ArrOut>
— массив выходных параметров для построения. Он содержит:
<ArrOut>[1]
— Рассчитанная длина профильного элемента<ArrOut>[2]
— Рассчитанный угол профильного элемента с осью X 1-го опорного профиля в плоскости<ArrOut>[3]
— Рассчитанный угол профильного элемента и плоскости XOZ 1-го опорного профиля<ArrOut>[4]
— Толщина 1-го опорного профиля в направлении построения<ArrOut>[5]
— Смещение 1-го опорного профиля в направлении построения<ArrOut>[6]
— Рассчитанный угол профильного элемента с осью X 2-го опорного профиля в плоскости<ArrOut>[7]
— Рассчитанный угол профильного элемента и плоскости XOZ 2-го опорного профиля<ArrOut>[8]
— Толщина 2-го опорного профиля в направлении построения<ArrOut>[9]
— Смещение 2-го опорного профиля в направлении построения
Ключ rotate
осуществляет поворот профильного элемента на угол <ArrIn>[3]
.
Ключ ortho
осуществляет установку профильного элемента перпендикулярно второму опорному профилю (режим <ArrIn>[12]
=1)
Ключ along
осуществляет установку профильного элемента вдоль линии, соединяющей точки первого и второго опорного профиля, деля их в одинаковой пропорции (режим <ArrIn>[12]
=0)
Пример:
defarr arrin[29], arrout[9]; switch autosingle on; selbyattr "(Left(FurnType,2)==\"02\")||iif(IsAssign(\"Posit\"),Posit==39,1)" partly // (Left(FurnType,2)==\"02\")||iif(IsAssign(\"Posit\"),Posit==39,1) prompt "Укажите первый профиль:" : ; switch autosingle off; if (sysvar(61)==0) { exit; } point1=getselnum(1); switch autosingle on; selbyattr "(Left(FurnType,2)==\"02\")||iif(IsAssign(\"Posit\"),Posit==39,1)" partly prompt "Укажите второй профиль:" : ; switch autosingle off; point2=getselnum(1); arrin[1]=2688; // ID текущего профиля arrin[2]=10; // Шаг arrin[3]=90; // Угол arrin[4]=0; // Габариты, если нулевые — то расчет в коде по объекту arrin[5]=0; arrin[6]=0; arrin[7]=0; // Сдвиг 0 arrin[8]=0; arrin[9]=0; arrin[10]=point1 // Объект 1 профиля arrin[11]=point2 // Объект 2 профиля arrin[12]=1 // режим установки по умолчанию arrin[26]=1 // Вектор нормали к плоскости параллальности (для режима 2) arrin[27]=1 // arrin[28]=1 // onerror final; NULLOUT=getsnap(); mbget "Укажите положение:" 2segment arrin arrout : Line 0 0 0 arr[1] 0 0 ; exit;