Left = 0;
Right = 0;
Top = 0;
Bottom = 0;
// если это не режим редактирования, то указываем границы
if (!ParametricBlock) {
SetCamera(p3dFront);
Left = GetEdge('Вкажіть ліву лінію', AxisY).GFirst.x;
Right = GetEdge('Вкажіть праву лінію', AxisY).GFirst.x;
Top = GetEdge('Вкажіть верхню лінію', AxisX).GFirst.y;
Bottom = GetEdge('Вкажіть нижню лінію', AxisX).GFirst.y;
if (Left > Right) {
aaa = Left
Left = Right
Right = aaa
}
if (Bottom > Top) {
aaa = Bottom
Bottom = Top
Top = aaa
}
}
MakeProp();
if (!ParametricBlock) {
FileOptions = 'Save_KT.xml';
Action.Properties.Load(FileOptions);
SzLeft.Value = Left;
SzBottom.Value = Bottom;
SzWidth.Value = Right - Left;
SzHeight.Value = Top - Bottom;
Action.OnFinish = function() {
Action.Properties.Save(FileOptions);
}
}
BtnOK = NewButtonInput("Побудувати")
BtnOK.OnChange = function() {
Action.Finish()
}
function MakeProp() {
Prop = Action.Properties;
//группа корпус
Korp = Prop.NewGroup('Корпус');
SzLeft = Korp.NewNumber('Низ', Left);
SzLeft.Visible = false;
SzBottom = Korp.NewNumber('Низ', Bottom);
SzBottom.Visible = false;
SzWidth = Korp.NewNumber('Ширина', Right - Left);
SzHeight = Korp.NewNumber('Висота', Top - Bottom);
DepthVal = Korp.NewNumber('Глибина');
DepthVal.Value = 510
SideMat = Korp.NewMaterial('ДСП корпусу');
ButtC = Korp.NewButt('Видима крайка');
ButtCNev = Korp.NewButt('Невидима крайка');
//группа вставная полка
PolkaVs = Prop.NewBool('Вставна полиця')
PolkaVs.Value = true
PolkaVs.OnChange = function() {
PolkaVs.ChildrenEnabled = PolkaVs.Value
}
CountPol = PolkaVs.NewNumber('Кількість')
CountPol.Value = 1
ShelfOffset = PolkaVs.NewNumber('Відступ з боків');
ShelfOffset.Value = 0.5
ShelfZag = PolkaVs.NewNumber('Заглиблення')
ShelfZag.Value = 5
// группа ДВП
Dvpo = Prop.NewBool('Задня стінка')
Dvpo.Value = true
Dvpo.OnChange = function() {
Dvpo.ChildrenEnabled = Dvpo.Value
}
MatZadSt = Dvpo.NewMaterial('ДВП')
// группа цоколь
Cok = Prop.NewBool('Цоколь')
Cok.Value = true
Cok.OnChange = function() {
Cok.ChildrenEnabled = Cok.Value
}
MatCok = Cok.NewMaterial('Цоколь')
ButtCok = Cok.NewButt('Крайка')
//группа фасад
Doors = Prop.NewBool('Фасади')
Doors.Value = true
Doors.OnChange = function() {
Doors.ChildrenEnabled = Doors.Value
}
MatFas = Doors.NewMaterial('Матеріал')
ButtD = Doors.NewButt('Крайка')
KolDv = Doors.NewCombo('К-сть фасадів', '1\n2')
PetliLeftRight = Doors.NewCombo('Завіси', 'Ліва\nПрава');
if (SzWidth.Value > 600)
{
PetliLeftRight.Enabled = false;
KolDv.Enabled = false;
}
else
{
if (SzWidth.Value == 600)
{
KolDv.Enabled = true;
if (KolDv.ItemIndex == 0)
PetliLeftRight.Enabled = true;
else
PetliLeftRight.Enabled = false;
}
else
{
KolDv.Enabled = false;
PetliLeftRight.Enabled = true;
}
}
//группа столешница
Stolesh = Prop.NewBool('Стільниця')
Stolesh.Value = true
Stolesh.OnChange = function() {
Stolesh.ChildrenEnabled = Stolesh.Value
}
MatStol = Stolesh.NewMaterial('Матеріал')
// группа фурнитура
FurnGroup = Prop.NewGroup('Фурнітура');
Ручка = FurnGroup.NewFurniture('Ручка');
Angle = FurnGroup.NewCombo('Кут повороту ручки', '0\n90')
Петля = FurnGroup.NewFurniture('Завіса');
ОпораПерёд = FurnGroup.NewFurniture('Опора перед');
ОпораЗад = FurnGroup.NewFurniture('Опора зад');
НавескаЛевая = FurnGroup.NewFurniture('Навеска Левая');
НавескаПравая = FurnGroup.NewFurniture('Навеска Правая');
Евровинт = FurnGroup.NewFurniture('Конфірмат');
Полкодержатель = FurnGroup.NewFurniture('Полицетримач');
Шкант = FurnGroup.NewFurniture('Шкант');
Miніфікс = FurnGroup.NewFurniture('Miніфікс');
Btn = Prop.NewButton('Побудувати')
//обработка нажатия кнокпи
Btn.OnClick = function() {
Action.Finish()
}
}
function Primenit()
{
if (DepthVal.Value < 350)
{НавескаЛевая.Enabled = true;
НавескаПравая.Enabled = true;
ОпораПерёд.Enabled = false;
ОпораЗад.Enabled = false;
}
else
{НавескаЛевая.Enabled = false;
НавескаПравая.Enabled = false;
ОпораПерёд.Enabled = true;
ОпораЗад.Enabled = true;
}
if (SzWidth.Value > 600)
{
PetliLeftRight.Enabled = false;
KolDv.Enabled = false;
}
else
{
if (SzWidth.Value == 600)
{
KolDv.Enabled = true;
if (KolDv.ItemIndex == 0)
PetliLeftRight.Enabled = true;
else
PetliLeftRight.Enabled = false;
}
else
{
KolDv.Enabled = false;
PetliLeftRight.Enabled = true;
}
}
if (Angle.ItemIndex == 0)
Fi = 0;
else
Fi = 90;
if (DepthVal.Value <= 199)
alert('Глубина копуса менша ніж 199 мм!\nВведіть значення ще раз.')
else
MakeShelf();
}
Action.OnStart = function()
{
//обработка событий в любых полях ввода свойства
Prop.OnChange = Primenit;
Primenit();
};
Action.Continue();
function EvrAndShkant(Panel1, Panel2, X, Y, Z, Sdvig) {
Евровинт.Value.Mount(Panel1, Panel2, X, Y, Z);
Шкант.Value.Mount(Panel1, Panel2, X, Y, Z + Sdvig);
}
function Petlya(Panel1, Panel2, X, Y, Z) {
Петля.Value.Mount(Panel1, Panel2, X, Y, Z);
}
function PetliLeft() { if (SzHeight.Value > 1000) { Petlya(LeftPanel, (DverL || DverR || DverL1), LeftX, Bottom + 500, Depth);}
Petlya(LeftPanel, (DverL || DverR || DverL1), LeftX, Bottom + 100, Depth);
Petlya(LeftPanel, (DverL || DverR || DverL1), LeftX, Top - 100 - Fuga2, Depth);
}
function PetliRight() { if (SzHeight.Value > 1000) { Petlya(RightPanel, (DverL || DverR || DverL1), LeftX, Bottom + 500, Depth);}
Petlya(RightPanel, (DverL || DverR || DverL1), LeftX, Bottom + 100, Depth);
Petlya(RightPanel, (DverL || DverR || DverL1), LeftX, Top - 100 - Fuga2, Depth);
}
function Ruchka(Panel, X, Y, Z, S) {
Ручка.Value.Mount1(Panel, X, Y, Z, S)
}
function MakeShelf() {
DeleteNewObjects();
// Границі беремо з параметрів
Left = SzLeft.Value;
Bottom = SzBottom.Value;
Right = SzLeft.Value + SzWidth.Value;
Top = SzBottom.Value + SzHeight.Value;
if (DepthVal.Value < 350)
NameBL = 'Тумба верхня ';
else
NameBL = 'Тумба нижня ';
SH = Right - Left;
SH1 = SH.toFixed().toString();
BL = BeginParametricBlock(NameBL + SH1);
Depth = DepthVal.Value;
Offset = ShelfOffset.Value;
SideMat.SetActive();
DepthDver = Depth + SideMat.Thickness;
LeftX = Left + SideMat.Thickness;
RightX = Right - SideMat.Thickness;
Y1 = Top - SideMat.Thickness;
Y2 = Bottom + SideMat.Thickness;
SideMat.SetActive();
Fuga = 1.5; //зазаор для дверей
Fuga2 = 4; //зазаор для дверей
Fuga3 = 1.5; //зазаор для дверей
CentrX = ((Right - Left) * 0.5 + Left);
Odds = SH.toFixed(); //ширина корпуса
if ( DepthVal.Value < 350) {
LeftPanel = AddVertPanel(0, Bottom, Depth, Top, Left); //установка левого бока
RightPanel = AddVertPanel(0, Bottom, Depth, Top, RightX); //установка правого бока
Dno = AddHorizPanel(LeftX, 0, RightX, Depth, Bottom); // установка дна
VerhPanel = AddHorizPanel(LeftX, 19, RightX, Depth, Top - SideMat.Thickness); // установка кришки
//пазы на панелях
Cut1 = LeftPanel.AddCut('Паз 15 (8х4)');
Cut1.Trajectory.AddLine(17, 0, 17, LeftPanel.ContourHeight);
Cut1.Contour.AddRectangle(-2, 0, 2, 8);
Cut2 = RightPanel.AddCut('Паз 15 (8х4)');
Cut2.Trajectory.AddLine(17, 0, 17, RightPanel.ContourHeight);
Cut2.Contour.AddRectangle(-2, RightPanel.Thickness, 2, RightPanel.Thickness - 8)
Cut3 = Dno.AddCut ('Паз 15 (8х4)');
Cut3.Trajectory.AddLine(0, -17, Dno.ContourWidth, -17);
Cut3.Contour.AddRectangle(-2, Dno.Thickness - 8, 2, Dno.Thickness);
//Кромка на панелях
LeftPanel.AddButt(ButtCNev, 0);
LeftPanel.AddButt(ButtC, 1);
LeftPanel.AddButt(ButtCNev, 2);
LeftPanel.AddButt(ButtCNev, 3);
RightPanel.AddButt(ButtCNev, 0);
RightPanel.AddButt(ButtC, 1);
RightPanel.AddButt(ButtCNev, 2);
RightPanel.AddButt(ButtCNev, 3);
Dno.AddButt(ButtCNev, 0);
Dno.AddButt(ButtCNev, 1);
Dno.AddButt(ButtC, 2);
Dno.AddButt(ButtCNev, 3);
VerhPanel.AddButt(ButtCNev, 0);
VerhPanel.AddButt(ButtCNev, 1);
VerhPanel.AddButt(ButtC, 2);
VerhPanel.AddButt(ButtCNev, 3);
Z1 = 16;
MatZadSt.SetActive();
ZadSt = AddFrontPanel(LeftX - 7, Y1 + 17, RightX + 7, Y2 - 7, Z1); //установка задней стенки
Smech = Z1 + ZadSt.Thickness;
CZ = ZadSt.Contour;
VerhPanel.TextureOrientation = ftoHorizontal;
VerhPanel.Name = 'Кришка';
} else {
LeftPanel = AddVertPanel(0, Bottom + 18, Depth, Top, Left); //установка левого бока
RightPanel = AddVertPanel(0, Bottom + 18, Depth, Top, RightX); //установка правого бока
Dno = AddHorizPanel(LeftX - 18, 0, RightX + 18, Depth, Bottom); // установка дна
LeftPanel.AddButt(ButtCNev, 0);
LeftPanel.AddButt(ButtC, 1);
LeftPanel.AddButt(ButtCNev, 2);
LeftPanel.AddButt(ButtCNev, 3);
RightPanel.AddButt(ButtCNev, 0);
RightPanel.AddButt(ButtC, 1);
RightPanel.AddButt(ButtCNev, 2);
RightPanel.AddButt(ButtCNev, 3);
Dno.AddButt(ButtCNev, 0);
Dno.AddButt(ButtCNev, 1);
Dno.AddButt(ButtC, 2);
Dno.AddButt(ButtCNev, 3);
Cok = AddFrontPanel(Left, Bottom - 100, Right, Bottom - 5, Depth - 36);//установка цоколя
Cok.TextureOrientation = ftoHorizontal;
Cok.AddButt(ButtCok, 1);
Cok.AddButt(ButtCok, 2);
Cok.AddButt(ButtCok, 3);
Cok.AddButt(ButtCok, 0);
PlankaZ = AddHorizPanel(LeftX, 0, RightX, 80, Top - SideMat.Thickness); //установка задней планки
PlankaP = AddHorizPanel(LeftX, Depth, RightX, Depth - 80, Top - SideMat.Thickness); //установка передней планки
PlankaP.TextureOrientation = ftoHorizontal; //направление текстуры
PlankaZ.TextureOrientation = ftoHorizontal; //направление текстуры
PlankaZ.AddButt(ButtCNev, 0);
PlankaZ.AddButt(ButtCNev, 1);
PlankaZ.AddButt(ButtCNev, 2);
PlankaZ.AddButt(ButtCNev, 3);
PlankaP.AddButt(ButtC, 0);
PlankaP.AddButt(ButtCNev, 1);
PlankaP.AddButt(ButtCNev, 2);
PlankaP.AddButt(ButtCNev, 3);
Z1 = -3;
MatZadSt.SetActive();
ZadSt = AddFrontPanel(LeftX - 16.5, Y1 + 16.5, RightX + 16.5, Y2 - 16.5, Z1); //установка задней стенки
Smech = Z1 + ZadSt.Thickness;
PlankaP.TextureOrientation = ftoHorizontal; //направление текстуры
PlankaZ.TextureOrientation = ftoHorizontal; //направление текстуры
Cok.TextureOrientation = ftoHorizontal;
PlankaP.Name = 'Планка передня';
PlankaZ.Name = 'Планка задня';
Cok.Name = 'Цоколь';
//ПОЛКА
PosY = Bottom;
YInc = ((Top - Bottom) - SideMat.Thickness) / 2;
ShLeft = LeftX + Offset; //зазор для вкалдной полки слева
ShRight = RightX - Offset; //зазор для вкалдной полки справа
Prol = ((Y1 - Y2) - SideMat.Thickness * CountPol.Value) / (CountPol.Value + 1)
A1 = Depth - 37; //установка первого евровинта
A2 = A1 % 32; //остаток от глубины корпуса
Zag = ShelfZag.Value; //заглубление вставной полки спереди
WidthPol = Depth - Smech - ShelfZag.Value
//установка вставной полки
if (ShelfZag.Value < 0 || WidthPol <= 142) {
alert('Значение заглубления полки не корректно!\nВедите значение заново.')
} else {
if (PolkaVs.Value == true) {
for (var k = 0; k < CountPol.Value; k++)
if (ShelfOffset.Value < 0 || ShelfOffset.Value > 5) {
alert('Значение отступа полки не корректно!\nВведите значение заново.')
} else {
if (ShelfOffset.Value > 0) {
Y2 += Prol;
SideMat.SetActive();
Zpol = Depth - Zag;
Polka = AddHorizPanel(ShLeft, Smech, ShRight, Zpol, Y2);
Polka.TextureOrientation = ftoHorizontal;
Polka.AddButt(ButtCNev, 0);
Polka.AddButt(ButtCNev, 1);
Polka.AddButt(ButtC, 2);
Polka.AddButt(ButtCNev, 3);
Polka.Name = 'Полка';
}}}}
}
//задание текстур для панелей
LeftPanel.TextureOrientation = ftoVertical;
RightPanel.TextureOrientation = ftoVertical;
Dno.TextureOrientation = ftoHorizontal;
ZadSt.TextureOrientation = ftoVertical;
//Підписуємо назви деталей
LeftPanel.Name = 'Боковина ліва';
RightPanel.Name = 'Боковина права';
Dno.Name = 'Дно';
ZadSt.Name = 'Задня стінка';
}
BL = EndParametricBlock();
[свернуть]