FileOptions = 'Основные настройки.xml';
MakeProperties();
Action.Properties.Load(FileOptions);
Action.OnFinish = function() {
Action.Properties.Save(FileOptions);
}
BtnMake = NewButtonInput('Закончить');
BtnMake.OnChange = function() {
Make(); //Вызываем функцию построения всех панелей
Action.Finish();
}
//Make();
Action.Continue();
true;
//////////////////////////////////////////
//////////////////////////////////////////
////////////////////////////////////////// --------- ОКНО СВОЙСТВ
function MakeProperties() {
Prop = Action.Properties;
MatProfil = Prop.NewMaterial('Профиль');
MatVstavki = Prop.NewMaterial('Вставка');
FileProfil = Prop.NewSelector('Сечение Профиля с 0 как у канта');
Krepej = Prop.NewFurniture('КрепЁж профиля');
FileProfil.OnClick = function() {
FileProfil.Value = system.askFileName('frw');
};
OkBtn = Prop.NewButton('Построить');
OkBtn.OnClick = function() {
Make(); //Вызываем функцию построения всех панелей
Action.Finish();
}
Prop.OnChange = function() {
//if (Fas.Value > Hd.Value) alert('Предупреждение! Фаска больше чем высота дна.')
Make(); //Вызываем функцию построения всех панелей
};
}
//Obj = Model.Selected;
function Make()
{
//FileFreza = 'Фреза1.frw';
if (system.fileExists(FileProfil.Value)) {
// conturFrezi=NewContour();
// conturFrezi.Load(FileFreza);
Model.forEach (function(Obj) {
if (Obj.Selected == true)
{
// Obj = Obj.AsPanel; ;
Width = Obj.GSize.x;
Height= Obj.GSize.y;
//alert(Width + ' -- ' + Height)
Fasad = Profil(Width,Height,MatProfil,MatVstavki,Obj.Owner);
//alert(Obj.Owner
//Fasad.Owner = Obj.Owner
lnpv = GabarityContura(Obj);
ln = NewPoint(lnpv[0].x,lnpv[0].y);
pv = NewPoint(lnpv[1].x,lnpv[1].y);
Fasad.Position = Obj.ObjectToGlobal(ln) ;
Fasad.Rotation = Obj.Rotation ;
//Obj.Build();
}
} )
}
}
function Profil(Width,Height,MatProfil, MatVstavka,owner) {
// Width = 300; // ширина рамки
//Height = 400; // высота рамки
Profile = NewContour();
Profile.Load(FileProfil.Value);
doSdviga = Profile[0].Pos1.x;
polojGlubini_doSdviga = Profile[0].Pos1.y;
Profile.Fit(0,0,Profile.Width,Profile.Height);
Sdvig = Profile[0].Pos1.x-doSdviga;
//alert(Sdvig)
polojGlubini=Profile[0].Pos1.y-polojGlubini_doSdviga;
vstavkaThikness=0;
Block = BeginBlock("Фасад Профильный")
//Block.Owner = owner;
MatProfil.SetActive();
Ext1 = AddExtrusion('1');
Ext1.Name ='Профиль';
Ext1.Contour.Addition(Profile);
Ext1.Orient(AxisX, AxisZ);
Ext1.Thickness = Width;
Clip45(Ext1);
Ext2 = AddExtrusion('2');
Ext2.Name ='Профиль'
Ext2.Contour.Addition(Profile);
Ext2.Orient(AxisY, AxisZ);
Ext2.PositionX = Width;
Ext2.Thickness = Height;
Clip45(Ext2);
Ext3 = AddExtrusion('3');
Ext3.Name ='Профиль'
Ext3.Contour.Addition(Profile);
Ext3.PositionX = Width;
Ext3.PositionY = Height;
Ext3.Orient(Axis_X, AxisZ);
Ext3.Thickness = Width;
Clip45(Ext3);
Ext4 = AddExtrusion('4');
Ext4.Name ='Профиль'
Ext4.Contour.Addition(Profile);
Ext4.Orient(Axis_Y, AxisZ);
Ext4.PositionY = Height;
Ext4.Thickness = Height;
Clip45(Ext4);
if (Krepej.Value)
{
ots1=35;
ots2 = 20;
e1 = AddFrontPanel(Ext1.Position.x,Ext1.Position.y, 1000, 1000, 0)
Krepej.Value.Mount1(e1, Ext1.Position.x+ots1,Ext1.Position.y+ots1,-e1.Thickness, 0);
Krepej.Value.Mount1(e1, Ext1.Position.x+ots2,Ext1.Position.y+ots2,-e1.Thickness, 0);
e1.Free()
e2 = AddFrontPanel(Ext2.Position.x,Ext2.Position.y, 1000, 1000, 0)
Krepej.Value.Mount1(e2, Ext2.Position.x-ots1,Ext2.Position.y+ots1,-e2.Thickness, 90);
Krepej.Value.Mount1(e2, Ext2.Position.x-ots2,Ext2.Position.y+ots2,-e2.Thickness, 90);
e2.Free()
e3 = AddFrontPanel(Ext3.Position.x,Ext3.Position.y, 1000, 1000, 0)
Krepej.Value.Mount1(e3, Ext3.Position.x-ots1,Ext3.Position.y-ots1,-e3.Thickness, 0);
Krepej.Value.Mount1(e3, Ext3.Position.x-ots2,Ext3.Position.y-ots2,-e3.Thickness, 0);
e3.Free()
e4 = AddFrontPanel(Ext4.Position.x,Ext4.Position.y, 1000, 1000, 0)
Krepej.Value.Mount1(e4, Ext4.Position.x+ots1,Ext4.Position.y-ots1,-e4.Thickness, 90);
Krepej.Value.Mount1(e4, Ext4.Position.x+ots2,Ext4.Position.y-ots2,-e4.Thickness, 90);
e4.Free()
}
MatVstavka.SetActive();
vstavka = AddFrontPanel(Sdvig, Sdvig, Width-Sdvig, Height-Sdvig, polojGlubini);
vstavka.Translate(NewVector(0, 0, - vstavka.Thickness))
vstavka.Name = 'Вставка';
EndBlock()
return Block
}
function Clip45(Ext) {
Ext.Clip(NewVector(0, 0, 0), NewVector(-1,0, 1));
Ext.Clip(NewVector(0, 0, Ext.Thickness), NewVector(-1, 0, -1));
}
function GabarityContura(Obj)
{
var text = '';
ln = NewPoint(0, 0); //левый низ
lv = NewPoint(0, 0); //левый верх
pn = NewPoint(0, 0); //правый низ
pv = NewPoint(0, 0); //правый верх контура
kontur = Obj.Contour;
kstoron = kontur.Count;
// var k_ne_krugov = 0;
for (i = 0; i < kstoron; i++) {
if (kontur[i].ElType != 3) { //k_ne_krugov = k_ne_krugov+1
ln = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
lv = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
pn = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
pv = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
}
};
for (i = 0; i < kstoron; i++) {
if (kontur[i].ElType != 3) {
Pos1x = Math.round(kontur[i].Pos1.x * 10) / 10;
Pos1y = Math.round(kontur[i].Pos1.y * 10) / 10;
Pos2x = Math.round(kontur[i].Pos2.x * 10) / 10;
Pos2y = Math.round(kontur[i].Pos2.y * 10) / 10;
if (ln.x > Pos1x) {
ln.x = Pos1x
};
if (ln.x > Pos2x) {
ln.x = Pos2x
};
if (ln.y > Pos1y) {
ln.y = Pos1y
};
if (ln.y > Pos2y) {
ln.y = Pos2y
};
if (lv.x > Pos1x) {
lv.x = Pos1x
};
if (lv.x > Pos2x) {
lv.x = Pos2x
};
if (lv.y < Pos1y) {
lv.y = Pos1y
};
if (lv.y < Pos2y) {
lv.y = Pos2y
};
if (pn.x < Pos1x) {
pn.x = Pos1x
};
if (pn.x < Pos2x) {
pn.x = Pos2x
};
if (pn.y > Pos1y) {
pn.y = Pos1y
};
if (pn.y > Pos2y) {
pn.y = Pos2y
};
if (pv.x < Pos1x) {
pv.x = Pos1x
};
if (pv.x < Pos2x) {
pv.x = Pos2x
};
if (pv.y < Pos1y) {
pv.y = Pos1y
};
if (pv.y < Pos2y) {
pv.y = Pos2y
};
}
};
text4 = ('ln ---- ' + ln.x + ' - ' + ln.y + '\n' +
'lv ---- ' + lv.x + ' - ' + lv.y + '\n' +
'pn ---- ' + pn.x + ' - ' + pn.y + '\n' +
'pv ---- ' + pv.x + ' - ' + pv.y + '\n');
// alert(text4);
ln_v = ln; //левый низ выреза
pv_v = pv; //правый верх выреза
if (ln_v.x < lv.x) {
ln_v.x = lv.x
};
if (ln_v.y < pn.y) {
ln_v.y = pn.y
};
if (pv_v.x > pn.x) {
pv_v.x = pn.x
};
if (pv_v.y > lv.y) {
pv_v.y = lv.y
};
SeredinaVisotiPaneli = (pv_v.y - ln_v.y) * 0.5;
SeredinaShiriniPaneli = (pv_v.x - ln_v.x) * 0.5;
lnpv = []
lnpv.push(ln_v);
lnpv.push(pv_v);
return lnpv
}
[свернуть]