function MakePoloski(h, promejutok, k_polos)
{
Contour = NewContour();
poloj=0;
napr=0;
for (i=0;i<k_polos;i++)
{
p1 = NewPoint(poloj,0)
p2 = NewPoint(poloj,h)
if (napr==0)
{
l1 = Contour.AddLine(p1,p2);
napr=1
}
else
{
l1 = Contour.AddLine(p2,p1);
napr=0
}
poloj = poloj + promejutok;
}
return Contour;
}
function MakePanelPoloski (hh,ww,
otstup_L, promejutok_L, k_polos_L,
otstup_P, promejutok_P, k_polos_P,
otstup_N, promejutok_N, k_polos_N,
otstup_V, promejutok_V, k_polos_V,
virez, otstupVirez)
{
Obj = AddPanel(ww, hh);
Frezerovka(Obj, Obj.Contour.MakeCopy(),
"\\\\192.168.137.5\\!заказы\\__________ПО\\Bazis8\\Фрагменты\\Фрезы\\Скругление 10.frw",
'Скругление')
poloski_L = MakePoloski(hh, promejutok_L, k_polos_L);
poloski_L.Move(otstup_L, 0);
Frezerovka(Obj, poloski_L,
'\\\\192.168.137.5\\!заказы\\__________ПО\\Bazis8\\Фрагменты\\Острая глубина 4.frw', 'Полоски')
poloski_P = MakePoloski(hh, promejutok_P, k_polos_P);
poloski_P.Move(ww-otstup_P - poloski_P.Width, 0);
Frezerovka(Obj, poloski_P,
'\\\\192.168.137.5\\!заказы\\__________ПО\\Bazis8\\Фрагменты\\Острая глубина 4.frw', 'Полоски')
poloski_V = MakePoloski(ww, promejutok_V, k_polos_V);
poloski_V.Rotate(0, 0, -90);
poloski_V.Move(0,hh-otstup_V);
Frezerovka(Obj, poloski_V,
'\\\\192.168.137.5\\!заказы\\__________ПО\\Bazis8\\Фрагменты\\Острая глубина 4.frw', 'Полоски')
poloski_N = MakePoloski(ww, promejutok_N, k_polos_N);
poloski_N.Rotate(0, 0, -90);
poloski_N.Move(0,otstup_N+poloski_N.Height);
Frezerovka(Obj, poloski_N,
'\\\\192.168.137.5\\!заказы\\__________ПО\\Bazis8\\Фрагменты\\Острая глубина 4.frw', 'Полоски')
if (virez)
{
ln=NewPoint(otstupVirez,otstupVirez)
pv=NewPoint(ww-otstupVirez,hh-otstupVirez)
ellips = MakeEllipse(ww*0.5- otstupVirez , hh*0.5-otstupVirez, ww*0.5, hh*0.5);
StartEditing(Obj)
Obj.Contour.Subtraction(ellips);
Obj.Build();
Frezerovka(Obj, ellips,
'\\\\192.168.137.5\\!заказы\\__________ПО\\Bazis8\\Фрагменты\\Фрезы\\Скругление 10.frw', 'Скругление')
}
//else {alert(virez)}
return Obj
}
x=0
p = MakePanelPoloski(770,300,
70, 30, 3,
50, 20, 4,
60, 40, 2,
10, 35, 6,
false,70)
p.Translate(x,0,0)
x = x+ 300+100
p = MakePanelPoloski(770,400,
70, 30, 1,
50, 20, 2,
60, 40, 3,
10, 35, 4,
true,70)
p.Translate(x,0,0)
x = x+ 300+100
//poloski = MakePoloski(ln, pv, promejutok, k_polos, virez)
// P.Contour.Subtraction(Make6Ugol(ln,pv, 50, 50,50,50,50, 50,50,50,radius));
//P.Contour.Addition(MakeEllipse(50, 140, ww*0.5, hh*0.5));
function MakeEllipse(A, B, x, y) {
Contour = NewContour();
// Intermediate ellipse quantities.
a2 = A * A;
b2 = B * B;
ab = A * B;
invB2mA2 = 1 / (b2 - a2);
// Curvature at end points, store curvature
// for computing arcs.
curv0 = A / b2;
curv1 = B / a2;
// Select ellipse points
// based on curvature properties.
ElemsCount = 16;
invNumArcs = 1 / ElemsCount;
Points = [];
for (i = 0; i <= ElemsCount; i++) {
// Curvature at new point is weighted average of curvature at ends.
weight1 = i * invNumArcs;
weight0 = 1 - weight1;
curv = weight0 * curv0 + weight1 * curv1;
// Compute point having this curvature.
tmp = Math.pow(ab / curv, 2 / 3);
px = A * Math.sqrt(Math.abs((tmp - a2) * invB2mA2));
py = B * Math.sqrt(Math.abs((tmp - b2) * invB2mA2));
Points.push(NewPoint(px, py));
}
// Compute arcs at intermediate points between (a,0) and (0,b).
m = 3;
while (m <= Points.length - 2) {
p1 = Points[m - 2];
p2 = Points[m - 1];
p3 = Points[m];
Arc = Contour.AddArc3(p1, p2, p3);
//alert(m);
m = m + 2;
}
Ellipse = Contour;
Ellipse.Symmetry(0, 0, 1, 0, true);
Ellipse.Symmetry(0, 0, 0, 1, true);
p1 = Points[Points.length - 2];
p2 = Points[Points.length - 1];
p3 = NewPoint(-Points[Points.length - 2].x, Points[Points.length - 2].y);
ArcV = Ellipse.AddArc3(p1, p2, p3);
p1 = NewPoint(Points[Points.length - 2].x, -Points[Points.length - 2].y);
p2 = NewPoint(-Points[Points.length - 1].x, -Points[Points.length - 1].y);
p3 = NewPoint(-Points[Points.length - 2].x, -Points[Points.length - 2].y);
ArcN = Ellipse.AddArc3(p1, p2, p3);
p1 = Points[1];
p2 = Points[0];
p3 = NewPoint(Points[1].x, -Points[1].y);
ArcP = Ellipse.AddArc3(p1, p2, p3);
p1 = NewPoint(-Points[1].x, Points[1].y);
p2 = NewPoint(-Points[0].x, Points[0].y);
p3 = NewPoint(-Points[1].x, -Points[1].y);
ArcL = Ellipse.AddArc3(p1, p2, p3);
Ellipse.Move(x, y);
return Ellipse;
}
function Frezerovka(Obj, Contur, FileFreza, CutName) {
//FileFreza = 'Фреза1.frw';
if (system.fileExists(FileFreza)) {
// Obj = Obj.AsPanel;
StartEditing(Obj);
Cut = Obj.AddCut(CutName);
Traj = Cut.Trajectory;
Traj.AddList(Contur.MakeCopy());
//L1 = Traj.AddLine(100, 100, 200, 200);
Cut.Contour.Load(FileFreza);
//Cut.CutMode=0;
//Cut.CutType=0;
//Cut.IndexOfPanelElem=-1;
Cut.Contour.Move(0, Obj.Thickness);
Obj.Build();
}
else {alert(FileFreza)}
}
[свернуть]