FileOptions = 'Настройка.xml';//задает имя файла для сохранения текущих параметров
var CurBlock;
var CurPos = NewVector(0, 0, 0);
MakeProperties();//Активирует окно параметров
BtnMake = NewButtonInput('Закончить');//Создает кнопку закончить
BtnMake.OnChange = function() {
Action.Commit();
Action.Finish();
}
if (!ParametricBlock) {
BtnMake = NewButtonInput('Добавить еще один');
BtnMake.OnChange = function() {
Action.Commit();
NewTumba();
}
function NewTumba() {
Make();
Action.Hint = 'Укажите положение шкафа';
Action.ShowPoints = true;
Action.OnMove = function() {
CurBlock.Position = Action.Pos3;
CurPos = Action.Pos3;
};
Action.OnClick = function() {
Action.OnMove = undefined;
Action.ShowPoints = false;
Action.Hint = 'Укажите параметры шкафа';
};
}
NewTumba();
} else
Action.Hint = 'Укажите параметры шкафа';
Action.Continue();//Ожидание действия пользователя
Action.OnStart = function() {
if (ParametricBlock) {
OldVerh = ParametricBlock.Find('полка верхняя');
OldLevST = ParametricBlock.Find('стенка левая');
if (OldVerh && OldLevST) {
Dl.Value = OldVerh.Contour.Width + MatKorp.Thickness;
H.Value = OldLevST.Contour.Height;
Gl.Value = OldLevST.Contour.Width;
} else {
alert('Блок необратимо изменён!')
Action.Cancel();
}
}
//Покажем любые изменения в рабочем окне
Prop.OnChange = function() {
Make();
};
};
function MakeProperties() {
//создаем окно для заполнения параметров
Prop = Action.Properties;
Image = Prop.NewImage('Эскиз', 'ВШК.jpg');
Image.MaxHeight = 250;// Размер рисунка
Dl = Prop.NewNumber('Ширина', 400);
Gl = Prop.NewNumber('Глубина', 330);
H = Prop.NewNumber('Высота', 720);
Korpus = Prop.NewGroup('Корпус')
MatKorp = Korpus.NewMaterial('Материал корпуса');
Kromka = Korpus.NewButt('Кромка');
ZadnStenka = Prop.NewGroup('Задняя стенка');
MatZadnStenka = ZadnStenka.NewMaterial('Материал');
OkBtn = Prop.NewButton('Построить');// Обработка кнопкой Построить
OkBtn.OnClick = function() {
Make(); //Вызываем функцию построения всех панелей
Action.Finish();
}
}
function Make() {
//Удаляем старые объекты из скрипта
DeleteNewObjects();
CurBlock = BeginParametricBlock("Навесной Шкаф");
//Укажем толщину задней стенки
MatZadnStenka.SetActive();
ThickZadSt = ActiveMaterial.Thickness;
//И толщину материала корпуса
MatKorp.SetActive();
Thick = ActiveMaterial.Thickness;
//Подскажем размеры верхней полки
Verh = AddHorizPanel(Thick, 22, Dl.Value - Thick, Gl.Value - 1, H.Value - Thick - 1);
// Ориентация
Verh.TextureOrientation = ftoHorizontal;
//Назовем ее
Verh.Name = 'полка верхняя';
//Кромим
Verh.AddButt(Kromka, 2);
Verh.Build();
//Создадим левую стенку
LevST = AddVertPanel(0, 0, Gl.Value, H.Value);
LevST.TextureOrientation = ftoVertical;// Ориентация
LevST.Name = 'стенка левая';//Имя
LevST.AddButt(Kromka, 0);//Кромка сзади
LevST.AddButt(Kromka, 1);//Кромка справа или слева пока не знаю
LevST.AddButt(Kromka, 2);//Кромка спереди
LevST.AddButt(Kromka, 3);//Кромка справа-сверху или слева снизу
//Построим паз
Cut = LevST.AddCut('паз');
Traj = Cut.Trajectory;
Traj.AddLine(22, 0, 22, H.Value);//Смещение паза от дальнего среза низ-z y, верх-z y
ContPaz = Cut.Contour;
ContPaz.AddRectangle(0, 0, 4, 6);
LevST.Build();
//Правая стенка
PravST = AddSymmetry(LevST, NewVector(Dl.Value / 2, 0, 0), AxisX);
PravST.Name = 'стенка правая';
// Нижняя полка
Niz = AddHorizPanel(Thick, 0, Dl.Value - Thick, Gl.Value - 1, 1);
Niz.TextureOrientation = ftoHorizontal;
Niz.Name = 'полка нижняя';
Niz.AddButt(Kromka, 0);
Niz.AddButt(Kromka, 2);
Cut = Niz.AddCut('паз');
Traj = Cut.Trajectory;
Traj.AddLine(0, -22, Dl.Value - Thick, -22);
ContPaz = Cut.Contour;
ContPaz.AddRectangle(0, Thick, 4, Thick - 6);
Niz.Build();
//Задняя стенка
MatZadnStenka.SetActive();
ZadnStenka = AddFrontPanel(Thick - 5.5, 1 + Thick - 5.5, Dl.Value - Thick + 5.5, H.Value - 1.5, 19);
ZadnStenka.TextureOrientation = ftoVertical;
ZadnStenka.Name = 'стенка задняя';
//Ставим крепеж
Conf = OpenFurniture('Конфирмат 7х50мм FS (центр).f3d');
Conf.Mount(Niz, LevST, 0, 0, 50);
Conf.Mount(Niz, LevST, 0, 0, Gl.Value - 50);
Conf.Mount(Niz, PravST, 0, 0, 50);
Conf.Mount(Niz, PravST, 0, 0, Gl.Value - 50);
Conf.Mount(Verh, LevST, 0, 0, 50);
Conf.Mount(Verh, LevST, 0, 0, Gl.Value - 50);
Conf.Mount(Verh, PravST, 0, 0, 50);
Conf.Mount(Verh, PravST, 0, 0, Gl.Value - 50);
Shkant = OpenFurniture('Шкант 8х30мм (центр).f3d');
Shkant.Mount(Niz, LevST, 0, 0, 82);
Shkant.Mount(Niz, LevST, 0, 0, Gl.Value - 82);
Shkant.Mount(Niz, PravST, 0, 0, 82);
Shkant.Mount(Niz, PravST, 0, 0, Gl.Value - 82);
Shkant.Mount(Verh, LevST, 0, 0, 82);
Shkant.Mount(Verh, LevST, 0, 0, Gl.Value - 82);
Shkant.Mount(Verh, PravST, 0, 0, 82);
Shkant.Mount(Verh, PravST, 0, 0, Gl.Value - 82);
EndParametricBlock();
}
[свернуть]