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;
otsPered = Prop.NewNumber('Отступ Перед',50);
otsZad = Prop.NewNumber('Отступ Зад',70);
K_row = Prop.NewNumber('Количество на деталь',2);
K_row.OnChange = function() {
if (K_row.Value<1) {
K_row.Value=1
}
}
Krepej = Prop.NewFurniture('Ножки в торец или подпятники');
V_razniyeStorony = Prop.NewBool('В разные стороны')
V_Drugiye_razniyeStorony = Prop.NewBool('В ДРУГИЕ разные стороны')
PovernutDop = Prop.NewCombo('Развернить ножку на X', '0\n90\n180\n270');
PovernutDopY = Prop.NewCombo('Развернить ножку на Y', '0\n90\n180\n270');
PovernutDopZ = Prop.NewCombo('Развернить ножку на Z', '0\n90\n180\n270');
OtrazitX = Prop.NewBool('Отразить X')
OtrazitY = Prop.NewBool('Отразить Y')
OtrazitZ = Prop.NewBool('Отразить Z')
NaSeredinuTolshiny = Prop.NewBool('НаСерединуТолщины(дляТипаРучка))')
OkBtn = Prop.NewButton('Построить',true);
OkBtn.OnClick = function() {
Make(); //Вызываем функцию построения всех панелей
Action.Finish();
}
Prop.OnChange = function() {
//if (Fas.Value > Hd.Value) alert('Предупреждение! Фаска больше чем высота дна.')
Make(); //Вызываем функцию построения всех панелей
};
}
//Obj = Model.Selected;
function Make()
{
DeleteNewObjects();
//FileFreza = 'Фреза1.frw';
// conturFrezi=NewContour();
// conturFrezi.Load(FileFreza);
Model.forEach (function(Obj) {
if (Obj.Selected == true)
{
Nojki(Obj)
}
} )
}
function Nojki(Obj) {
//if (system.fileExists(Krepej.Value))
if (Krepej.Value)
{
otsPered_=otsPered.Value;
otsZad_=otsZad.Value;
ryadov = K_row.Value;
lnpv = GabarityContura(Obj);
ln =lnpv[0];
pv = lnpv[1];
//Niz = OpredelitNiz(Obj, ln, pv)
// NizWdol = p.ContourWidth
// NizH = p.ContourHeight
// пока не определили
if(V_razniyeStorony.Value)
{
ugolPovorotaPered=(-(135+(90*(ryad-1)/(ryadov-1)))) + Math.round(PovernutDop.Value)
ugolPovorotaZad=(-(45-(90*(ryad-1)/(ryadov-1)))) + Math.round(PovernutDop.Value)
}
else
{
ugolPovorotaPered=0
ugolPovorotaZad=0
}
mejdu_ryadov = (pv.x-ln.x-otsPered_-otsZad_)/(ryadov-1)
seredinaX = ln.x + (pv.x - ln.x) / 2
if (Math.round(ryadov)==1)
{
p1 = NewPoint(seredinaX, ln.y)
podp = Ustanovit1Krepiyoj(Obj, p1, ugolPovorotaPered)
}
else if (ryadov>1)
{
p1 = NewPoint( pv.x - otsPered_ , ln.y)
Ustanovit1Krepiyoj(Obj, p1, ugolPovorotaPered)
otsZad_ = ln.x + otsZad_
p1 = NewPoint(otsZad_, ln.y)
Ustanovit1Krepiyoj(Obj, p1, ugolPovorotaZad)
ryad=3
while (ryad<ryadov+1)
{
p1 = NewPoint(otsZad_+mejdu_ryadov*(ryad-2), ln.y)
Ustanovit1Krepiyoj(Obj, p1, ugolPovorotaPered)
ryad++;
}
}
//Niz.Free()
}
}
function Ustanovit1Krepiyoj(Obj, p1, ugolPovorota, drstorona ) {
pos = Obj.ObjectToGlobal(NewVector(p1.x, p1.y,0))
podp = Krepej.Value.Mount1(Obj, pos, ugolPovorota);
podp.Rotate(podp.NToGlobal(AxisX), Math.round(PovernutDop.Value) * (Math.PI / 180))
podp.Rotate(podp.NToGlobal(AxisY), Math.round(PovernutDopY.Value) * (Math.PI / 180))
podp.Rotate(podp.NToGlobal(AxisZ), Math.round(PovernutDopZ.Value) * (Math.PI / 180))
// podp.Translate(NewVector(SmestitX.Value, SmestitY.Value, SmestitZ.Value))
if (NaSeredinuTolshiny.Value)
{
/*x=podp.PositionX
y=podp.PositionY
z=podp.PositionZ
*/
posL = Obj.GlobalToObject(podp.Position)
pos1 = NewVector(posL.x, posL.y, Obj.Thickness/2)
posG = Obj.ObjectToGlobal(pos1)
//ppp = AddPanel(5, 5)
//ppp.Translate(posG)
podp.Position = (posG)
}
return podp
}
function OpredelitNiz(Obj, ln, pv)
{
//Obj = Obj.AsPanel
tolshina = Obj.Thickness;
ln_ = Obj.ObjectToGlobal(ln);
pv_ = Obj.ObjectToGlobal(pv);
p = AddPanel(pv.x, tolshina)
p.Thickness = 0.000000001;
p.Translate(ln_)
p.Rotation = Obj.Rotation
p.Rotate(p.NToGlobal(AxisX), 90)
return p
}
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
}
[свернуть]