FileOptions = 'КріпленняПанелів.xml';
NewButtonInput("Закінчити").OnChange = function() { Action.Finish() };
function MakeProperties()
{
Prop = Action.Properties;
Type = Prop.NewCombo('Яку крепимо:','Горизонтальну\nВерикальну');
NumberOnTheSide = Prop.NewCombo('Кіл-ть кріплень по стороні:', 'Одне\nДва\nТри');
/// Поля вибору кріплення
Кріплення = Prop.NewGroup('Кріплення');
BlockVisible = Кріплення.NewFurniture('Видиме(конфірмат):');
BlockInVisible = Кріплення.NewFurniture('Приховане(стяжка):');
ShkantType = Кріплення.NewFurniture('Шкант:');
//// Розміщення
Розміщення = Prop.NewGroup('Розміщення');
ShcantWith = Розміщення.NewCombo('Ставити шкант:', 'Ні\nЗ обох боків\nЛіворуч або верх\nПраворуч або дно');
FurnVis = Розміщення.NewCombo('Видимі - невидимі сторони','Видима ліва, або верх\nВидима права, або дно\nОбидві видимі\nОбидві не видимі');
FastenerPosition = Розміщення.NewCombo('Положення другої частини', 'Знизу, чи ліворуч від панелі\nЗверхи, чи праворуч від панелі');
TypeBasing = Розміщення.NewCombo('База кріплення', 'Від переднього торця\nВід заднього торця');
InitialSize = Розміщення.NewNumber('+ до перш.кріп.від бази:', 18);
StepFastener = Розміщення.NewNumber('Крок кріплення:', 32);
}
MakeProperties()
Action.Properties.Load(FileOptions);
Action.OnFinish = function()
{
Model.UnPickAll();
Action.Properties.Save(FileOptions);
}
Bok1 = GetPanel("Оберіть ліву або верхню панель");
Bok2 = GetPanel("Оберіть праву або нижню панель");
x1 = Bok2.GabMin.x + 1;
x2 = Bok1.GabMax.x - 1;
BeginBlock("Крiплення");
while (true)
{
Polka = GetPanel("Виберіть панель що закріплюється");
if (FastenerPosition.Value == 'Зверхи, чи праворуч від панелі') {Py = Polka.GabMax.y - 1}
else {Py = Polka.GabMin.y + 1};
z1 = Polka.GabMin.z;
z2 = Polka.GabMax.z;
/////// Переросподіл заготівок між горизонтальними та верикальними
if (Type.Value == 'Горизонтальну')
{
CoordinateA = x2;
CoordinateB = x1;
CoordinateC = Py;
CoordinateD = Py;
}
if (Type.Value == 'Верикальну')
{
CoordinateA = Py;
CoordinateB = Py;
CoordinateC = x1;
CoordinateD = x2;
}
/////// Правила розміщення
if (TypeBasing.Value == 'Від переднього торця'){
ZKrep1 = Bok1.GabMax.z - InitialSize.Value;
while (ZKrep1 > z2 - StepFastener.Value) { ZKrep1 = ZKrep1 - StepFastener.Value }
ZKrep2 = ZKrep1 - StepFastener.Value;
while (ZKrep2 > z1 + 2 * StepFastener.Value) { ZKrep2 = ZKrep2 - StepFastener.Value }
ZKrep3 = ZKrep1 - StepFastener.Value;
while (ZKrep3 > (z2 / 2 ) + StepFastener.Value) { ZKrep3 = ZKrep3 - StepFastener.Value }
}else
{
ZKrep1 = Bok1.GabMin.z + InitialSize.Value;
while (ZKrep1 < z1 + StepFastener.Value) { ZKrep1 = ZKrep1 + StepFastener.Value }
ZKrep2 = ZKrep1 + StepFastener.Value;
while (ZKrep2 < z2 - 2 * StepFastener.Value) { ZKrep2 = ZKrep2 + StepFastener.Value }
ZKrep3 = ZKrep1 + StepFastener.Value;
while (ZKrep3 < (z2 / 2 ) - StepFastener.Value) { ZKrep3 = ZKrep3 + StepFastener.Value }
}
/////// Обидві видимі
function ОбидвіВидимі_1(){
BlockInVisible.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep1)
BlockInVisible.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep1)
}
function ОбидвіВидимі_2(){
ОбидвіВидимі_1();
BlockInVisible.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep2)
BlockInVisible.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep2)
}
function ОбидвіВидимі_3(){
ОбидвіВидимі_1();
ОбидвіВидимі_2();
BlockInVisible.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep3)
BlockInVisible.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep3)
}
if (FurnVis.Value == 'Обидві видимі'){
if (NumberOnTheSide.Value == 'Одне'){
ОбидвіВидимі_1();
}else if (NumberOnTheSide.Value == 'Два'){
ОбидвіВидимі_2();
}else if (NumberOnTheSide.Value == 'Три'){
ОбидвіВидимі_3();
}
}
/////// Видима ліва, або верх
function ВидимаЛіваАбоВерх_1(){
BlockInVisible.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep1)
BlockVisible.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep1)
}
function ВидимаЛіваАбоВерх_2(){
ВидимаЛіваАбоВерх_1();
BlockInVisible.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep2)
BlockVisible.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep2)
}
function ВидимаЛіваАбоВерх_3(){
ВидимаЛіваАбоВерх_1();
ВидимаЛіваАбоВерх_2();
BlockInVisible.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep3)
BlockVisible.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep3)
}
if (FurnVis.Value == 'Видима ліва, або верх'){
if (NumberOnTheSide.Value == 'Одне'){
ВидимаЛіваАбоВерх_1();
}else if (NumberOnTheSide.Value == 'Два'){
ВидимаЛіваАбоВерх_2();
}else if (NumberOnTheSide.Value == 'Три'){
ВидимаЛіваАбоВерх_3();
}
}
/////// Видима права, або дно
function ВидимаПраваАбоДно_1(){
BlockVisible.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep1)
BlockInVisible.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep1)
}
function ВидимаПраваАбоДно_2(){
ВидимаПраваАбоДно_1();
BlockVisible.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep2)
BlockInVisible.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep2)
}
function ВВидимаПраваАбоДно_3(){
ВидимаПраваАбоДно_1();
ВидимаПраваАбоДно_2();
BlockVisible.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep3)
BlockInVisible.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep3)
}
if (FurnVis.Value == 'Видима права, або дно'){
if (NumberOnTheSide.Value == 'Одне'){
ВидимаПраваАбоДно_1();
}else if (NumberOnTheSide.Value == 'Два'){
ВидимаПраваАбоДно_2();
}else if (NumberOnTheSide.Value == 'Три'){
ВидимаПраваАбоДно_3();
}
}
/////// Обидві не видимі
function ОбидвіНеВидимі_1(){
BlockVisible.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep1)
BlockVisible.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep1)
}
function ОбидвіНеВидимі_2(){
ОбидвіНеВидимі_1();
BlockVisible.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep2)
BlockVisible.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep2)
}
function ОбидвіНеВидимі_3(){
ОбидвіНеВидимі_1();
ОбидвіНеВидимі_2();
BlockVisible.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep3)
BlockVisible.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep3)
}
if (FurnVis.Value == 'Обидві не видимі'){
if (NumberOnTheSide.Value == 'Одне'){
ОбидвіНеВидимі_1();
}else if (NumberOnTheSide.Value == 'Два'){
ОбидвіНеВидимі_2();
}else if (NumberOnTheSide.Value == 'Три'){
ОбидвіНеВидимі_3();
}
}
/////// Встановлення шкантів
if (ShcantWith.Value == 'Ліворуч або верх')
{
if (TypeBasing.Value == 'Від переднього торця')
{
ShkantType.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep2 + StepFastener.Value)
ShkantType.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep1 - StepFastener.Value)
}
else
{
ShkantType.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep2 - StepFastener.Value)
ShkantType.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep1 + StepFastener.Value)
}
}
if (ShcantWith.Value == 'Праворуч або дно')
{
if (TypeBasing.Value == 'Від переднього торця')
{
ShkantType.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep2 + StepFastener.Value)
ShkantType.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep1 - StepFastener.Value)
}
else
{
ShkantType.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep2 - StepFastener.Value)
ShkantType.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep1 + StepFastener.Value)
}
}
if (ShcantWith.Value == 'З обох боків')
{
if (TypeBasing.Value == 'Від переднього торця')
{
ShkantType.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep2 + StepFastener.Value)
ShkantType.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep2 + StepFastener.Value)
ShkantType.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep1 - StepFastener.Value)
ShkantType.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep1 - StepFastener.Value)
}
else
{
ShkantType.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep2 - StepFastener.Value)
ShkantType.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep2 - StepFastener.Value)
ShkantType.Value.Mount(Polka, Bok1, CoordinateA, CoordinateC, ZKrep1 + StepFastener.Value)
ShkantType.Value.Mount(Polka, Bok2, CoordinateB, CoordinateD, ZKrep1 + StepFastener.Value)
}
}
}
Action.Commit();
[свернуть]