// Available Commands: // G28(); sets X and Y to 0 and starts a new drawing // G28(MIRROR); // G28(MIRROR, FORCE_X); sets X and Y to 0 and starts a new // drawing at least at FORCE_X to the right (respects G90/G91) // and mirrors drawing by X axis if MIRROR == true // G90(); absolute positioning (var isRelative == false) // G91(); relative positioning (var isRelative == true) // G1(X, Y); move to X, Y without drawing // G1(E, X, Y); move to X, Y with drawing // CIRCLE(X, Y, R); teleports to X, Y, draws single circle // with R radius and teleports back (respects G90/G91) // MULTI_CIRCLE(X1, Y1, X2, Y2, R, COUNT); // MULTI_CIRCLE(X1, Y1, X2, Y2, R, COUNT, WO_FIRST, WO_LAST); // teleports to X1, Y1, draws COUNT circles with R radius at // line to X2, Y2 except the first one if WO_FIRST == true // and the last one if WO_LAST == true and teleports back // (both movements respect G90/G91) // DECAL(NAME, X, Y) or // DECAL(NAME, X, Y, SCALE) or // DECAL(NAME, X, Y, SCALE_X, SCALE_Y) or // DECAL(NAME, X, Y, SCALE_X, SCALE_Y, ANGLE) or // DECAL(NAME, X, Y, SCALE_X, SCALE_Y, ANGLE, ORIGIN_X, ORIGIN_Y) // draws decal with NAME in X, Y coordinates (respects G90/G91) // centered by ORIGIN_X, ORIGIN_Y in own coordinate system // then scales it to SCALE_X, SCALE_Y and rotates by ANGLE // SHOW_VARIABLE(NAME, TITLE, DEFAULT_VALUE); // SHOW_VARIABLE(NAME, TITLE, DEFAULT_VALUE, GENERATE_ON_CHANGE); // shows variable as input field // SHOW_INFO(TITLE); // SHOW_INFO(TITLE, VALUE); // shows additional information // And any JS logic can be used as well // !!! MAKE LOVE, NOT WAR !!! // prepare toolchain // !!! IN CASE OF DEFAULT SIZE CHANGES CHANGE THE FOLLOWING THREE LINES !!! const default_gantry_beam_X = 650; const default_gantry_beam_Y = 450; const default_corner_pillar_Z = 440; SHOW_VARIABLE('lang', 'English: ', false, true); SHOW_VARIABLE('y_size', lang ? 'Gantry Beam Y (mm):' : 'Продольная балка портала (мм):', default_gantry_beam_Y); SHOW_VARIABLE('x_size', lang ? 'Gantry Beam X (mm):' : 'Поперечная балка портала (мм):', default_gantry_beam_X); SHOW_VARIABLE('z_size', lang ? 'Corner Pillar (mm):' : 'Угловая стойка (мм):', default_corner_pillar_Z); SHOW_VARIABLE('is_idex', 'IDEX:', true); SHOW_VARIABLE('chamberEnabled', lang ? 'Chamber Enabled:' : 'Зашивка корпуса включена:', true); SHOW_VARIABLE('domeEnabled', lang ? 'Dome Enabled:' : 'Купол включен:', true); SHOW_VARIABLE('thn', lang ? 'Chamber Material Thickness (mm):' : 'Толщина материала зашивки камеры (мм):', '4.0'); SHOW_VARIABLE('thn_dm', lang ? 'Dome Material Thickness (mm):' : 'Толщина материала зашивки купола (мм):', '4.0'); SHOW_VARIABLE('fourPillars', lang ? 'Number of Z Pillars (off-2, on-4):' : 'Стоек оси Z (выкл-2, вкл-4):', false); SHOW_VARIABLE('fourZSteppers', lang ? 'Number of Z Steppers (off-2, on-4):' : 'Приводов Z (выкл-2, вкл-4):', false); SHOW_VARIABLE('holesEnabled', lang ? 'Holes Enabled:' : 'Отверстия включены:', true); SHOW_VARIABLE('crossesEnabled', lang ? 'Hole Marks Enabled:' : 'Метки отверстий включены:', false); // !!! DON'T CHANGE THE FOLLOWING THREE LINES EVEN IF DEFAULT SIZES HAVE BEEN CHANGED !!! // !!! THEY TRANSFORM CURRENT DEFAULT SIZES TO SIZES USED DURING SCRIPT WRITING !!! var delta_x = x_size - 650; // 650 - default_gantry_beam_X used when the script was written var delta_y = y_size - 450; // 450 - default_gantry_beam_Y used when the script was written var delta_z = z_size - 440; // 440 - default_corner_pillar_Z used when the script was written function dx_f(x) {return x + delta_x}; function dy_f(y) {return y + delta_y}; function dz_f(z) {return z + delta_z}; var dx, dy; function MULTI_CIRCLE_GAP(X1, Y1, X2, Y2, R, GAP, WO_FIRST, WO_LAST) { var distance = Math.sqrt(Math.pow(X2 - (isRelative ? 0 : X1), 2) + Math.pow(Y2 - (isRelative ? 0 : Y1), 2)); var count = Math.round(distance / GAP) + 1; count = count >= 2 ? count : 2; MULTI_CIRCLE(X1, Y1, X2, Y2, R, count, WO_FIRST, WO_LAST); } if (!window['originalCircle']) { window['originalCircle'] = window['CIRCLE']; } window['CIRCLE'] = function (X, Y, R) { if (holesEnabled || R > 4) { window['originalCircle'](X, Y, R); } else if (crossesEnabled) { DECAL('cross', X, Y); } } // STAIR ALERT if (thn != thn_dm && chamberEnabled && domeEnabled) { SHOW_INFO(lang ? '
Different chamber and dome material thickness
is specified that leads to ' + Math.abs((thn - thn_dm) / 2) + ' mm wide step
between them after assembly
' : '
Указана различная толщина зашивки камеры и купола,
после сборки на стыке камеры и купола будет
образована ступенька шириной ' + Math.abs((thn - thn_dm) / 2) + ' мм
'); } // PROFILE LENGTH SHOW_INFO('
' + (lang ? 'Calculated profile length for crosscheck' : 'Расчетные размеры профилей для сверки') + '
'); SHOW_INFO('
' + (lang ? 'Portal' : 'Портал') + '
'); SHOW_INFO(lang ? 'Gantry Beam Y (mm):' : 'Продольная балка портала (мм):', dy_f(450)); SHOW_INFO(lang ? 'Gantry Beam X (mm):' : 'Поперечная балка портала (мм):', dx_f(650)); SHOW_INFO(lang ? 'Auxiliary Gantry Beam X (mm):' : 'Вспомогательная балка портала (мм):', dx_f(530)); SHOW_INFO(lang ? 'X Axis Beam (mm):' : 'Балка оси X (мм):', dx_f(500)); SHOW_INFO('
' + (lang ? 'Frame' : 'Нижняя часть рамы') + '
'); SHOW_INFO(lang ? 'Corner Pillar (mm):' : 'Угловая стойка (мм):', dz_f(440)); SHOW_INFO(lang ? 'Auxiliary Pillar (mm):' : 'Вспомогательная стойка (мм):', dz_f(390)); SHOW_INFO(lang ? 'Auxiliary Base Beam (mm):' : 'Вспомогательная поперечина (мм):', dx_f(610)); SHOW_INFO(lang ? 'Base Beam X (mm):' : 'Поперечная балка основания (мм):', dx_f(610)); SHOW_INFO(lang ? 'Base Beam Y (mm):' : 'Продольная балка основания (мм):', dy_f(450)); SHOW_INFO('
' + (lang ? 'Z Axis' : 'Ось Z') + '
'); SHOW_INFO(lang ? 'Z Rail Beam (mm):' : 'Стойка оси Z (мм):', dz_f(390)); SHOW_INFO(lang ? 'Table Frame Beam X (mm):' : 'Поперечная балка рамы стола (мм):', dx_f(500)); SHOW_INFO(lang ? 'Table Frame Beam Y (mm):' : 'Продольная балка рамы стола (мм):', dy_f(170)); SHOW_INFO(lang ? 'Table Beam Y (mm):' : 'Плечо рамы стола (мм):', dy_f(320)); // CHAMBER START if (chamberEnabled) { // ################ // FRONT PANEL dx = dx_f; dy = dz_f; G28(); // perimeter G90(); G1(-thn, 0); G91(); G1(E, dx(650) + thn * 2, 0); G1(E, 0, dy(460) + thn); G1(E, -(dx(650) + thn * 2), 0); G1(E, 0, -(dy(460) + thn)); // doors G90(); G1(160, 72); G91(); G1(E, dx(330), 0); G1(E, 40, 40); MULTI_CIRCLE(13, 4, 0, 10, 1.65, 2); G1(E, 0, dy(270)); MULTI_CIRCLE(13, -4, 0, -10, 1.65, 2); G1(E, -10, 10); G1(E, -dx(390), 0); G1(E, -10, -10); MULTI_CIRCLE(-13, -4, 0, -10, 1.65, 2); G1(E, 0, -dy(270)); MULTI_CIRCLE(-13, 4, 0, 10, 1.65, 2); G1(E, 40, -40); // perimeter holes G90(); G1(10, 40); G91(); MULTI_CIRCLE(0, 0, 80, 0, 2.15, 3); MULTI_CIRCLE(0, 0, 0, 80, 2.15, 3); MULTI_CIRCLE_GAP(80, 0, dx(630) - 160, 0, 2.15, 110); G1(dx(630), 0); MULTI_CIRCLE(0, 0, -80, 0, 2.15, 3); MULTI_CIRCLE(0, 0, 0, 80, 2.15, 3); MULTI_CIRCLE_GAP(0, 80, 0, dy(410) - 160, 2.15, 110); G1(0, dy(410)); MULTI_CIRCLE(0, 0, -80, 0, 2.15, 3); MULTI_CIRCLE(0, 0, 0, -80, 2.15, 3); MULTI_CIRCLE_GAP(-80, 0, -(dx(630) - 160), 0, 2.15, 110); G1(-dx(630), 0); MULTI_CIRCLE(0, 0, 80, 0, 2.15, 3); MULTI_CIRCLE(0, 0, 0, -80, 2.15, 3); MULTI_CIRCLE_GAP(0, -80, 0, -(dy(410) - 160), 2.15, 110); // tensioners holes G90(); G1(0, dy(460)); G91(); MULTI_CIRCLE(31.5, -43.38, 21.5, -0.62, 2.75, 2); G1(dx(650), 0); MULTI_CIRCLE(-31.5, -43.38, -21.5, -14.62, 2.75, 2); // ################ // FRONT DOOR for (var i = 0; i < 2; i++) { dx = dx_f; dy = dz_f; var isMirror = i % 2 === 0; G28(isMirror); // perimeter + holes G91(); G1(E, 166.657 + dx(0) / 2, 0); G1(E, 42.343, 42.343); MULTI_CIRCLE(-9, 5.657, 0, 10, 1.65, 2); G1(E, 0, dy(273.314)); MULTI_CIRCLE(-9, -5.657, 0, -10, 1.65, 2); G1(E, -12.343, 12.343); G1(E, -196.657 - dx(0) / 2, 0); MULTI_CIRCLE(4, -7.054, 7, 0, 1.65, 2); G1(E, 0, -dy(328.00)); } // ################ // MIDDLE PANEL dx = dx_f; dy = dz_f; G28(); // perimeter G91(); G1(E, dx(650), 0); G1(E, 0, dy(343 - thn)); G1(E, -64.5, 0); G1(E, -4, 4); G1(E, 0, 34.5); G1(E, 8.5, 8.5); G1(E, 0, 20); G1(E, -dx(530), 0); G1(E, 0, -20); G1(E, 8.5, -8.5); G1(E, 0, -34.5); G1(E, -4, -4); G1(E, -64.5, 0); G1(E, 0, -dy(343 - thn)); // holes G90(); G1(10, 10); G91(); CIRCLE(dx(630) / 2, 22, 10); MULTI_CIRCLE(0, 0, 80, 0, 2.15, 2); MULTI_CIRCLE_GAP(0, 0, 0, dy(323 - thn), 2.15, 110); MULTI_CIRCLE_GAP(80, 0, dx(470), 0, 2.15, 110); G1(dx(630), 0); MULTI_CIRCLE(0, 0, -80, 0, 2.15, 2); MULTI_CIRCLE_GAP(0, 0, 0, dy(323 - thn), 2.15, 110); G1(-80, dy(390 - thn)); MULTI_CIRCLE_GAP(0, 0, -dx(470), 0, 2.15, 110); // ################ // REAR PANEL dx = dx_f; dy = dz_f; G28(); // perimeter G90(); G1(-thn, 0); G91(); G1(E, dx(650) + thn * 2, 0); G1(E, 0, dy(460) + thn); G1(E, -(dx(650) + thn * 2), 0); G1(E, 0, -(dy(460) + thn)); // hatch G90(); G1(dx(650) / 2, dy(460) / 2); G91(); G1(-Math.min(405, dx(405)) / 2, -130); MULTI_CIRCLE(3.5, -13, 10, 0, 1.65, 2); G1(E, Math.min(405, dx(405)), 0); MULTI_CIRCLE(-3.5, -13, -10, 0, 1.65, 2); G1(E, 10, 10); G1(E, 0, 230); G1(E, -10, 10); CIRCLE(-8.5, 26, 1.65); G1(E, -Math.min(405, dx(405)), 0); CIRCLE(8.5, 26, 1.65); G1(E, -10, -10); G1(E, 0, -230); G1(E, 10, -10); // perimeter holes G90(); G1(10, 40); G91(); MULTI_CIRCLE(0, 0, 80, 0, 2.15, 3); MULTI_CIRCLE(0, 0, 0, 80, 2.15, 3); MULTI_CIRCLE_GAP(80, 0, dx(630) - 160, 0, 2.15, 110); G1(dx(630), 0); MULTI_CIRCLE(0, 0, -80, 0, 2.15, 3); MULTI_CIRCLE(0, 0, 0, 80, 2.15, 3); MULTI_CIRCLE_GAP(0, 80, 0, dy(410) - 160, 2.15, 110); G1(0, dy(410)); MULTI_CIRCLE(0, 0, -80, 0, 2.15, 3); MULTI_CIRCLE(0, 0, 0, -80, 2.15, 3); MULTI_CIRCLE(-46.85, -60.88, -19.3, 0, 4, 2); MULTI_CIRCLE_GAP(-80, 0, -(dx(630) - 160), 0, 2.15, 110); G1(-dx(630), 0); MULTI_CIRCLE(0, 0, 80, 0, 2.15, 3); MULTI_CIRCLE(0, 0, 0, -80, 2.15, 3); MULTI_CIRCLE(46.85, -60.88, 19.3, 0, 4, 2); MULTI_CIRCLE_GAP(0, -80, 0, -(dy(410) - 160), 2.15, 110); // ################ // REAR HATCH const default_fan_diam = 120; SHOW_VARIABLE('fan_diam', lang ? 'Rear Fan Size (mm):' : 'Размер вентилятора обдува электроники (мм):', default_fan_diam); SHOW_VARIABLE('fan_h_dist', lang ? 'Rear Fan Holes Gap (mm):' : 'Расстояние между отверстиями вентилятора (мм):', 105); SHOW_VARIABLE('fan_grille', lang ? 'Rear Fan Grille Enabled:' : 'Защитная сетка вентилятора включена:', true); dx = dx_f; dy = dz_f; G28(); G91(); // perimeter G1(12.343, 0); G1(E, Math.min(408.314, dx(408.314)), 0); G1(E, 12.343, 12.343); G1(E, 0, 233.314); G1(E, -12.343, 12.343); G1(E, -Math.min(408.314, dx(408.314)), 0); G1(E, -12.343, -12.343); G1(E, 0, -233.314); G1(E, 12.343, -12.343); // holes G90(); G1(0, 0); G91(); MULTI_CIRCLE(17.5, 9, 10, 0, 1.65, 2); G1(Math.min(433, dx(433)), 0); MULTI_CIRCLE(-17.5, 9, -10, 0, 1.65, 2); // fan G90(); G1(Math.min(433, dx(433)) / 2, 258 / 2); G91(); CIRCLE(fan_h_dist / 2, fan_h_dist / 2, 2.15); CIRCLE(-fan_h_dist / 2, fan_h_dist / 2, 2.15); CIRCLE(fan_h_dist / 2, -fan_h_dist / 2, 2.15); CIRCLE(-fan_h_dist / 2, -fan_h_dist / 2, 2.15); if (fan_grille) { DECAL('fan_grille', 0, 0, (6.75 * (fan_diam - 3) / default_fan_diam), (6.75 * (fan_diam - 3) / default_fan_diam), 0, -29.5, -45); } else { CIRCLE(0, 0, (fan_diam - 3) / 2); } // ################ // SIDE PANEL for (var i = 0; i < 2; i++) { dx = dy_f; dy = dz_f; var isMirror = i % 2 === 0; G28(isMirror); // perimeter G91(); G1(E, dx(490), 0); G1(E, 0, dy(460) + thn); G1(E, -dx(490), 0); G1(E, 0, -(dy(460) + thn)); // perimeter holes G90(); G1(10, 40); G91(); MULTI_CIRCLE(0, 0, 0, 80, 2.15, 3); MULTI_CIRCLE_GAP(0, 0, dx(398), 0, 2.15, 110); MULTI_CIRCLE_GAP(0, 80, 0, dy(250), 2.15, 110); G1(dx(398), 0); MULTI_CIRCLE(0, 0, 0, 80, 2.15, 3); MULTI_CIRCLE_GAP(0, 80, 0, dy(250), 2.15, 110); G1(72, 0); MULTI_CIRCLE(0, 0, 0, 80, 2.15, 3); MULTI_CIRCLE_GAP(0, 80, 0, dy(250), 2.15, 110); G1(0, dy(410)); CIRCLE(0, 0, 3.2); MULTI_CIRCLE(0, -40, 0, -40, 2.15, 2); G1(-72, 0); MULTI_CIRCLE(0, 0, 0, -80, 2.15, 3); G1(-dx(398), 0); CIRCLE(0, 0, 3.2); MULTI_CIRCLE(0, -40, 0, -40, 2.15, 2); MULTI_CIRCLE_GAP(0, 0, dx(398), 0, 2.15, 110, true, true); // Z-axis holes G90(); G1(0, 0); G91(); G1(192 + dx(0) / 2, 40); if (fourPillars) { // pillar L G1(-((150 + dx(0)) / 2), 0); MULTI_CIRCLE(0, 40, 0, 40, 2.15, 2); MULTI_CIRCLE_GAP(0, 80, 0, dy(250), 2.15, 110); G1(0, dy(410)); MULTI_CIRCLE(0, -40, 0, -40, 2.15, 2); G1(0, -dy(410)); G1(0, 80); MULTI_CIRCLE(20, -20, 0, 40, 2.5, 3); MULTI_CIRCLE(-20, -20, 0, 40, 2.5, 3); G1(0, -80); // pillar R G1(150 + dx(0), 0); MULTI_CIRCLE(0, 40, 0, 40, 2.15, 2); MULTI_CIRCLE_GAP(0, 80, 0, dy(250), 2.15, 110); G1(0, dy(410)); MULTI_CIRCLE(0, -40, 0, -40, 2.15, 2); G1(0, -dy(410)); G1(0, 80); MULTI_CIRCLE(20, -20, 0, 40, 2.5, 3); MULTI_CIRCLE(-20, -20, 0, 40, 2.5, 3); } else { MULTI_CIRCLE(0, 40, 0, 40, 2.15, 2); MULTI_CIRCLE_GAP(0, 80, 0, dy(250), 2.15, 110); G1(0, dy(410)); MULTI_CIRCLE(0, -40, 0, -40, 2.15, 2); G1(0, -dy(410)); G1(0, 80); MULTI_CIRCLE(20, -20, 0, 40, 2.5, 3); MULTI_CIRCLE(-20, -20, 0, 40, 2.5, 3); } // ventilation G90(); var verticalSpace = 122 * 3 + dy(0); var maxVentCount = Math.floor((verticalSpace + 4) / 122); //"+ 4" provides slight flexibility around default height var firstVentYShift = (verticalSpace - maxVentCount * 122) / 2; for (var x = 10 + dx(398) + 72 / 2, y = 40 + dy(410) - 83 - firstVentYShift, sign = 1; y > 100; y -= 122, sign = -sign) { DECAL('side_hole', x, y, sign * 10, 10, 0, 19.9, -55.21); } } // ################ // BOTTOM PANEL dx = dx_f; dy = dy_f; G28(); // perimeter G90(); G1(20, 0); G91(); G1(E, dx(610), 0); G1(E, 0, 20); G1(E, 20, 0); if (fourPillars && fourZSteppers) { // 1 MULTI_CIRCLE_GAP(-10, 10, 0, 172 - 75 - 43.2, 2.15, 110); G1(E, 0, 172 - 75 - 23.2); G1(E, -71.083, 0); G1(E, -4.117, 4.117); G1(E, 0, 38.166); G1(E, 4.117, 4.117); G1(E, 71.083, 0); MULTI_CIRCLE_GAP(-10, 10, 0, dy(150) - 66.4, 2.15, 110); G1(E, 0, dy(150) - 46.4); // 2 G1(E, -71.083, 0); G1(E, -4.117, 4.117); G1(E, 0, 38.166); G1(E, 4.117, 4.117); G1(E, 71.083, 0); MULTI_CIRCLE_GAP(-10, 10, 0, 206 - 75 - 47.2, 2.15, 110); G1(E, 0, 206 - 75 - 23.2); } else if (fourPillars && !fourZSteppers) { MULTI_CIRCLE_GAP(-10, 10, 0, 97 - 10.2 - 20, 2.15, 110); G1(E, 0, 97 - 10.2); G1(E, -20, 0); G1(E, 0, 20.4); G1(E, 20, 0); MULTI_CIRCLE_GAP(-10, 10, 0, 51.8 - 10.2 + dy(0) / 2 - 20, 2.15, 110, dy(0) < 60, false); G1(E, 0, 51.8 - 10.2 + dy(0) / 2); G1(E, -71.083, 0); G1(E, -4.117, 4.117); G1(E, 0, 38.166); G1(E, 4.117, 4.117); G1(E, 71.083, 0); MULTI_CIRCLE_GAP(-10, 10, 0, 51.8 - 10.2 + dy(0) / 2 - 20, 2.15, 110, false, dy(0) < 60); G1(E, 0, 51.8 - 10.2 + dy(0) / 2); G1(E, -20, 0); G1(E, 0, 20.4); G1(E, 20, 0); MULTI_CIRCLE_GAP(-10, 10, 0, 127 - 10.2 - 20, 2.15, 110); G1(E, 0, 131 - 10.2); } else { MULTI_CIRCLE_GAP(-10, 10, 0, 172 + dy(0) / 2 - 43.2, 2.15, 110); G1(E, 0, 172 + dy(0) / 2 - 23.2); G1(E, -71.083, 0); G1(E, -4.117, 4.117); G1(E, 0, 38.166); G1(E, 4.117, 4.117); G1(E, 71.083, 0); MULTI_CIRCLE_GAP(-10, 10, 0, 206 + dy(0) / 2 - 47.2, 2.15, 110); G1(E, 0, 206 + dy(0) / 2 - 23.2); } G1(E, -20, 0); G1(E, -64.813, 92); G1(E, -dx(480.374), 0); G1(E, -64.813, -92); G1(E, -20, 0); if (fourPillars && fourZSteppers) { // 1 MULTI_CIRCLE_GAP(10, -14, 0, -(206 - 75 - 47.2), 2.15, 110); G1(E, 0, -(206 - 75 - 23.2)); G1(E, 71.083, 0); G1(E, 4.117, -4.117); G1(E, 0, -38.166); G1(E, -4.117, -4.117); G1(E, -71.083, 0); MULTI_CIRCLE_GAP(10, -10, 0, -(dy(150) - 66.4), 2.15, 110); G1(E, 0, -(dy(150) - 46.4)); // 2 G1(E, 71.083, 0); G1(E, 4.117, -4.117); G1(E, 0, -38.166); G1(E, -4.117, -4.117); G1(E, -71.083, 0); MULTI_CIRCLE_GAP(10, -10, 0, -(172 - 75 - 43.2), 2.15, 110); G1(E, 0, -(172 - 75 - 23.2)); } else if (fourPillars && !fourZSteppers) { MULTI_CIRCLE_GAP(10, -14, 0, -(127 - 10.2 - 20), 2.15, 110); G1(E, 0, -(131 - 10.2)); G1(E, 20, 0); G1(E, 0, -20.4); G1(E, -20, 0); MULTI_CIRCLE_GAP(10, -10, 0, -(51.8 - 10.2 + dy(0) / 2 - 20), 2.15, 110, dy(0) < 60, false); G1(E, 0, -(51.8 - 10.2 + dy(0) / 2)); G1(E, 71.083, 0); G1(E, 4.117, -4.117); G1(E, 0, -38.166); G1(E, -4.117, -4.117); G1(E, -71.083, 0); MULTI_CIRCLE_GAP(10, -10, 0, -(51.8 - 10.2 + dy(0) / 2 - 20), 2.15, 110, false, dy(0) < 60); G1(E, 0, -(51.8 - 10.2 + dy(0) / 2)); G1(E, 20, 0); G1(E, 0, -20.4); G1(E, -20, 0); MULTI_CIRCLE_GAP(10, -10, 0, -(97 - 10.2 - 20), 2.15, 110); G1(E, 0, -(97 - 10.2)); } else { MULTI_CIRCLE_GAP(10, -14, 0, -(206 + dy(0) / 2 - 47.2), 2.15, 110); G1(E, 0, -(206 + dy(0) / 2 - 23.2)); G1(E, 71.083, 0); G1(E, 4.117, -4.117); G1(E, 0, -38.166); G1(E, -4.117, -4.117); G1(E, -71.083, 0); MULTI_CIRCLE_GAP(10, -10, 0, -(172 + dy(0) / 2 - 43.2), 2.15, 110); G1(E, 0, -(172 + dy(0) / 2 - 23.2)); } G1(E, 20, 0); G1(E, 0, -20); // holes G90(); G1(50, 10); G91(); MULTI_CIRCLE(0, 0, 40, 0, 2.15, 2); G1(40, 0); MULTI_CIRCLE_GAP(0, 0, dx(470), 0, 2.15, 110); G1(dx(470), 0); MULTI_CIRCLE(0, 0, 40, 0, 2.15, 2); G1(50.723, dy(398)); CIRCLE(0, 0, 2.15); G1(-50.723, 0); MULTI_CIRCLE_GAP(0, 0, -dx(470), 0, 2.15, 110); MULTI_CIRCLE_GAP(0, 72, -dx(470), 0, 2.15, 110); G1(-dx(470), 0); G1(-50.723, 0); CIRCLE(0, 0, 2.15); // ################ // GANTRY PANEL dx = dx_f; dy = dy_f; G28(); // perimeter G91(); G1(E, dx(650), 0); G1(E, 0, dy(490)); G1(E, -dx(650), 0); G1(E, 0, -dy(490)); // gantry G90(); G1(65, 20); G91(); G1(E, dx(520), 0); G1(E, 5, 5); G1(E, 0, dy(368 - thn)); G1(E, -5, 5); G1(E, -dx(520), 0); G1(E, -5, -5); G1(E, 0, -dy(368 - thn)); G1(E, 5, -5); // cable holes G90(); G1(dx(650) / 2, dy(435)); G91(); var width = x_size; if (is_idex && width >= 560) { MULTI_CIRCLE(-30, 0, 60, 0, 17, 2); } else if (is_idex && width >= 544) { MULTI_CIRCLE(-22, 0, 44, 0, 17, 2); } else { CIRCLE(0, 0, 17); } // holes G90(); G1(10, 10); G91(); MULTI_CIRCLE_GAP(0, 0, 0, dy(398), 2.15, 110); MULTI_CIRCLE_GAP(40, 0, 0, dy(398), 2.15, 110); MULTI_CIRCLE_GAP(80, 0, dx(470) / 2, 0, 2.15, 110); G1(dx(630), 0); MULTI_CIRCLE_GAP(-80, 0, -dx(470) / 2, 0, 2.15, 110); MULTI_CIRCLE_GAP(0, 0, 0, dy(398), 2.15, 110); MULTI_CIRCLE_GAP(-40, 0, 0, dy(398), 2.15, 110); G1(0, dy(470)) MULTI_CIRCLE(0, 0, -40, 0, 2.15, 2); MULTI_CIRCLE(-80, 0, 0, -72, 2.15, 2); MULTI_CIRCLE_GAP(-197.5, 0, -dx(630) / 2 + 197.5, 0, 2.15, 110); MULTI_CIRCLE_GAP(-197.5, -72, -dx(630) + (2 * 197.5), 0, 2.15, 110); G1(-dx(630), 0); MULTI_CIRCLE_GAP(197.5, 0, dx(630) / 2 - 197.5, 0, 2.15, 110); MULTI_CIRCLE(0, 0, 40, 0, 2.15, 2); MULTI_CIRCLE(80, 0, 0, -72, 2.15, 2); } // CHAMBER END // DOME START if (domeEnabled) { // ################ // DOME TOP PANEL for (var i = 0; i < 2; i++) { dx = function(x) {return dx_f(x * 2) / 2 + (thn - thn_dm)}; dy = function(y) {return dy_f(y) + 2 * (thn - thn_dm)}; var isMirror = i % 2 === 0; G28(isMirror); // perimeter G91(); G1(10, 0); G1(E, dx(273), 0); G1(E, 42, 42); G1(E, 0, dy(406)); G1(E, -42, 42); G1(E, -dx(273), 0); G1(E, 0, -30); G1(E, -10, 0); G1(E, 0, -dy(430)); G1(E, 10, 0); G1(E, 0, -30); // holes G90(); G1(16.5, 6.5); G91(); MULTI_CIRCLE(0, 0, 0, 17, 1.65, 2); G1(dx(266.492), -0.5); MULTI_CIRCLE_GAP(0, 0, -dx(266.492), 0, 1.65, 95, true, true); G1(0, 0.652); MULTI_CIRCLE(0, 0, 35.355, 35.355, 1.65, 3); G1(35.355, 35.355); G1(0.652, 0); MULTI_CIRCLE_GAP(0, 0, 0, dy(405.984), 1.65, 95, true, true); G1(-0.652, dy(405.984)); MULTI_CIRCLE(0, 0, -35.355, 35.355, 1.65, 3); G1(-35.355, 35.355); G1(0, 0.652); MULTI_CIRCLE_GAP(0, 0, -dx(266.492), 0, 1.65, 95, true, true); G1(-dx(266.492), -0.5); MULTI_CIRCLE(0, 0, 0, -17, 1.65, 2); } // ################ // DOME SIDE PANEL for (var i = 0; i < 2; i++) { dx = function(x) {return dy_f(x) + 2 * (thn - thn_dm)}; var isMirror = i % 2 === 0; G28(isMirror); // perimeter G91(); G1(E, dx(490), 0); G1(E, 0, 194); G1(E, -(42 + thn_dm), 42 + thn_dm); G1(E, -dx(406 - 2 * thn_dm), 0); G1(E, -(42 + thn_dm), -(42 + thn_dm)); G1(E, 0, -194); // holes G90(); G1(6, 10); G91(); MULTI_CIRCLE_GAP(0, 0, 0, 183.992, 1.65, 95, false, true); G1(0.652, 183.992); MULTI_CIRCLE(0, 0, 35.355, 35.355, 1.65, 3); G1(35.355, 35.355); G1(0, 0.652); MULTI_CIRCLE_GAP(0, 0, dx(405.984), 0, 1.65, 95, true, true); G1(dx(405.984), -0.652); MULTI_CIRCLE(0, 0, 35.355, -35.355, 1.65, 3); G1(35.355, -35.355); G1(0.652, 0); MULTI_CIRCLE_GAP(0, 0, 0, -183.992, 1.65, 95, true, false); } // ################ // DOME FRONT-REAR PANEL for (var i = 0; i < 4; i++) { dx = function(x) {return dx_f(x * 2) / 2 + (thn - thn_dm)}; var isMirror = i % 2 === 0; G28(isMirror); // perimeter G91(); G1(E, dx(325) + thn_dm, 0); G1(E, 0, 194 - thn_dm); G1(E, -(42 + 2 * thn_dm), 42 + 2 * thn_dm); G1(E, -dx(283 - thn_dm), 0); G1(E, 0, -(236 + thn_dm)); // holes G90(); G1(7.85, 228.15); G91(); CIRCLE(0, 0, 1.65); G1(dx(275.142), 1.85); MULTI_CIRCLE_GAP(0, 0, -dx(266.492), 0, 1.65, 95, true, true); G1(0, -0.652); MULTI_CIRCLE(0, 0, 35.355, -35.355, 1.65, 3); G90(); G1(dx(319), 10); G91(); MULTI_CIRCLE_GAP(0, 0, 0, 183.992, 1.65, 95, false, true); } } // DOME END
decal['fan_grille'] = {'pth':['M-31.5207259 -38.5 L -32.2712813 -37.2 L -33.0218366 -38.5 L -31.5207259 -38.5z','M-24.1306425 -44.9 L -24.8811978 -43.6 L -25.6317532 -44.9 L -24.1306425 -44.9z','M-23.033677 -50 L-22.6573282 -50.6518552 A8.875 8.875 320.4442476 0 0 -23.2489501 -51.3 L -23.7842323 -51.3 L -23.033677 -50z','M-28.4030345 -46.5 L -26.9019238 -46.5 L -27.6524791 -45.2 L -28.4030345 -46.5z','M-30.2505553 -40.1 L -28.7494447 -40.1 L -29.5 -38.8 L -30.2505553 -40.1z','M-22.8604719 -43.3 L -21.3593612 -43.3 L -22.1099166 -42 L -22.8604719 -43.3z','M-25.9781634 -44.9 L -26.7287187 -43.6 L -27.4792741 -44.9 L -25.9781634 -44.9z','M-31.1743158 -41.7 L -29.6732051 -41.7 L -30.4237604 -40.4 L -31.1743158 -41.7z','M-23.7842323 -48.1 L -22.2831216 -48.1 L -23.033677 -46.8 L -23.7842323 -48.1z','M-33.9455971 -43.3 L -32.4444864 -43.3 L -33.1950417 -42 L -33.9455971 -43.3z','M-30.7614494 -53.7848944 L -30.4237604 -53.2 L -30.0436723 -53.858332 A8.875 8.875 266.4879276 0 0 -30.7614494 -53.7848944z','M-35.966323 -46.8 L -36.7168784 -48.1 L -35.2157677 -48.1 L -35.966323 -46.8z','M-28.9563277 -53.858332 L -28.5762396 -53.2 L -28.2385506 -53.7848944 A8.875 8.875 278.1714167 0 0 -28.9563277 -53.858332z','M-36.7168784 -44.9 L -35.2157677 -44.9 L -35.966323 -43.6 L -36.7168784 -44.9z','M-30.4237604 -46.8 L -31.1743158 -48.1 L -29.6732051 -48.1 L -30.4237604 -46.8z','M-37.8138439 -46.4 L-38.3637051 -45.4476124 A8.875 8.875 182.8909507 0 0 -38.3744366 -45.1 L -37.0632885 -45.1 L -37.8138439 -46.4z','M-34.8693575 -51.3 L -33.3682468 -51.3 L -34.1188022 -50 L -34.8693575 -51.3z','M-35.2157677 -38.7 L -35.966323 -40 L -36.3426718 -39.3481448 A8.875 8.875 140.4442476 0 0 -35.7510499 -38.7 L-35.2157677 -38.7z','M-30.5969655 -52.9 L -31.3475209 -51.6 L -32.0980762 -52.9 L -30.5969655 -52.9z','M-35.7931179 -46.5 L -34.2920072 -46.5 L -35.0425626 -45.2 L -35.7931179 -46.5z','M-32.4444864 -49.7 L -33.1950417 -48.4 L -33.9455971 -49.7 L -32.4444864 -49.7z','M-36.8900834 -45.2 L -37.6406388 -46.5 L -36.1395281 -46.5 L -36.8900834 -45.2z','M-31.1743158 -41.9 L -30.4237604 -43.2 L -29.6732051 -41.9 L -31.1743158 -41.9z','M-36.7168784 -41.7 L -35.2157677 -41.7 L -35.966323 -40.4 L -36.7168784 -41.7z','M-33.0218366 -48.1 L -31.5207259 -48.1 L -32.2712813 -46.8 L -33.0218366 -48.1z','M-26.9019238 -46.7 L -28.4030345 -46.7 L -27.6524791 -48 L -26.9019238 -46.7z','M-37.8138439 -46.8 L-38.081485 -47.263568 A8.875 8.875 194.7765431 0 1 -37.8159861 -48.1 L -37.0632885 -48.1 L -37.8138439 -46.8z','M-29.5 -48.4 L -30.2505553 -49.7 L -28.7494447 -49.7 L -29.5 -48.4z','M-33.1950417 -45.2 L -33.9455971 -46.5 L -32.4444864 -46.5 L -33.1950417 -45.2z','M-23.9574374 -42 L -24.7079928 -43.3 L -23.2068821 -43.3 L -23.9574374 -42z','M-25.6317532 -51.3 L -24.1306425 -51.3 L -24.8811978 -50 L -25.6317532 -51.3z','M-35.7931179 -40.1 L -34.2920072 -40.1 L -35.0425626 -38.8 L -35.7931179 -40.1z','M-33.5442088 -37.1 L -32.4444864 -37.1 L -33.1950417 -38.4 L -33.8506158 -37.2645125 A8.875 8.875 119.3544001 0 0 -33.5442088 -37.1z','M-25.0544029 -43.3 L -25.8049583 -42 L -26.5555136 -43.3 L -25.0544029 -43.3z','M-28.5762396 -43.6 L -29.3267949 -44.9 L -27.8256842 -44.9 L -28.5762396 -43.6z','M-23.9574374 -38.8 L -24.7079928 -40.1 L -23.2068821 -40.1 L -23.9574374 -38.8z','M-22.1099166 -48.4 L-21.6655198 -49.1697177 A8.875 8.875 331.9769103 0 0 -21.9716785 -49.7 L -22.8604719 -49.7 L -22.1099166 -48.4z','M-28.5762396 -36.8 L-28.9563277 -36.141668 A8.875 8.875 86.4879276 0 0 -28.2385506 -36.2151056 L-28.5762396 -36.8z','M-29.3267949 -41.7 L -27.8256842 -41.7 L -28.5762396 -40.4 L -29.3267949 -41.7z','M-24.7079928 -46.5 L -23.2068821 -46.5 L -23.9574374 -45.2 L -24.7079928 -46.5z','M-26.7287187 -37.2 L -27.4792741 -38.5 L -25.9781634 -38.5 L -26.7287187 -37.2z','M-26.7287187 -49.6 L -25.9781634 -48.3 L -27.4792741 -48.3 L -26.7287187 -49.6z','M-32.0980762 -40.3 L -31.3475209 -41.6 L -30.5969655 -40.3 L -32.0980762 -40.3z','M-32.0980762 -40.1 L -30.5969655 -40.1 L -31.3475209 -38.8 L -32.0980762 -40.1z','M-23.7842323 -41.7 L -22.2831216 -41.7 L -23.033677 -40.4 L -23.7842323 -41.7z','M-25.8049583 -45.2 L -26.5555136 -46.5 L -25.0544029 -46.5 L -25.8049583 -45.2z','M-22.1099166 -45.2 L -22.8604719 -46.5 L -21.3593612 -46.5 L -22.1099166 -45.2z','M-31.1743158 -38.5 L -29.6732051 -38.5 L -30.4237604 -37.2 L -31.1743158 -38.5z','M-27.6524791 -38.8 L -28.4030345 -40.1 L -26.9019238 -40.1 L -27.6524791 -38.8z','M-20.6362949 -44.5523876 A8.875 8.875 2.8909507 0 0 -20.6255634 -44.9 L -21.9367115 -44.9 L -21.1861561 -43.6 L -20.6362949 -44.5523876z','M-28.5762396 -46.4 L -27.8256842 -45.1 L -29.3267949 -45.1 L -28.5762396 -46.4z','M-33.0218366 -51.3 L -31.5207259 -51.3 L -32.2712813 -50 L -33.0218366 -51.3z','M-26.7287187 -46.8 L -27.4792741 -48.1 L -25.9781634 -48.1 L -26.7287187 -46.8z','M-36.1395281 -43.3 L -36.8900834 -42 L -37.6406388 -43.3 L -36.1395281 -43.3z','M-32.2712813 -43.6 L -33.0218366 -44.9 L -31.5207259 -44.9 L -32.2712813 -43.6z','M-38.081485 -42.736432 A8.875 8.875 165.2234569 0 0 -37.8159861 -41.9 L -37.0632885 -41.9 L -37.8138439 -43.2 L -38.081485 -42.736432z','M-33.3682468 -48.1 L -34.1188022 -46.8 L -34.8693575 -48.1 L -33.3682468 -48.1z','M-37.0632885 -44.9 L -37.8138439 -43.6 L -38.3637051 -44.5523876 A8.875 8.875 177.1090493 0 1 -38.3744366 -44.9 L-37.0632885 -44.9z','M-37.0283215 -40.3 L -36.1395281 -40.3 L -36.8900834 -41.6 L -37.3344802 -40.8302823 A8.875 8.875 151.9769103 0 0 -37.0283215 -40.3z','M-29.3267949 -51.3 L -27.8256842 -51.3 L -28.5762396 -50 L -29.3267949 -51.3z','M-35.7931179 -49.7 L -34.2920072 -49.7 L -35.0425626 -48.4 L -35.7931179 -49.7z','M-26.9019238 -43.3 L -27.6524791 -42 L -28.4030345 -43.3 L -26.9019238 -43.3z','M-28.7494447 -52.9 L -29.5 -51.6 L -30.2505553 -52.9 L -28.7494447 -52.9z','M-37.0283215 -49.7 L -36.1395281 -49.7 L -36.8900834 -48.4 L -37.3344802 -49.1697177 A8.875 8.875 208.0230897 0 1 -37.0283215 -49.7z','M-34.1188022 -43.6 L -34.8693575 -44.9 L -33.3682468 -44.9 L -34.1188022 -43.6z','M-25.1493842 -52.7354875 A8.875 8.875 299.3544001 0 0 -25.4557912 -52.9 L -26.5555136 -52.9 L -25.8049583 -51.6 L -25.1493842 -52.7354875z','M-23.2068821 -49.7 L -23.9574374 -48.4 L -24.7079928 -49.7 L -23.2068821 -49.7z','M-35.7931179 -43.3 L -34.2920072 -43.3 L -35.0425626 -42 L -35.7931179 -43.3z','M-35.966323 -50 L-36.3426718 -50.6518552 A8.875 8.875 219.5557524 0 1 -35.7510499 -51.3 L -35.2157677 -51.3 L -35.966323 -50z','M-27.8256842 -38.5 L -28.5762396 -37.2 L -29.3267949 -38.5 L -27.8256842 -38.5z','M-25.0544029 -49.7 L -25.8049583 -48.4 L -26.5555136 -49.7 L -25.0544029 -49.7z','M-29.5 -42 L -30.2505553 -43.3 L -28.7494447 -43.3 L -29.5 -42z','M-33.0218366 -38.7 L -32.2712813 -40 L -31.5207259 -38.7 L -33.0218366 -38.7z','M-25.6317532 -51.5 L-24.9761792 -52.6354875 A8.875 8.875 300.6455999 0 1 -24.6805037 -52.4523876 L -24.1306425 -51.5 L -25.6317532 -51.5z','M-28.4030345 -52.9 L -26.9019238 -52.9 L -27.6524791 -51.6 L -28.4030345 -52.9z','M-21.9367115 -48.1 L -21.1861561 -46.8 L -20.918515 -47.263568 A8.875 8.875 345.2234569 0 0 -21.1840139 -48.1 L-21.9367115 -48.1z','M-26.7287187 -40.4 L -27.4792741 -41.7 L -25.9781634 -41.7 L -26.7287187 -40.4z','M-28.7494447 -43.5 L -30.2505553 -43.5 L -29.5 -44.8 L -28.7494447 -43.5z','M-25.6317532 -41.7 L -24.1306425 -41.7 L -24.8811978 -40.4 L -25.6317532 -41.7z','M-25.0544029 -49.9 L -26.5555136 -49.9 L -25.8049583 -51.2 L -25.0544029 -49.9z','M-32.0980762 -46.5 L -30.5969655 -46.5 L -31.3475209 -45.2 L -32.0980762 -46.5z','M-31.1743158 -51.3 L -29.6732051 -51.3 L -30.4237604 -50 L -31.1743158 -51.3z','M-32.4444864 -52.9 L -33.1950417 -51.6 L -33.8506158 -52.7354875 A8.875 8.875 240.6455999 0 1 -33.5442088 -52.9 L-32.4444864 -52.9z','M-25.6317532 -48.1 L -24.1306425 -48.1 L -24.8811978 -46.8 L -25.6317532 -48.1z','M-26.5555136 -40.1 L -25.0544029 -40.1 L -25.8049583 -38.8 L -26.5555136 -40.1z','M-30.5969655 -49.7 L -31.3475209 -48.4 L -32.0980762 -49.7 L -30.5969655 -49.7z','M-30.4237604 -36.8 L-30.7614494 -36.2151056 A8.875 8.875 98.1714167 0 0 -30.0436723 -36.141668 L-30.4237604 -36.8z','M-22.2831216 -44.9 L -23.033677 -43.6 L -23.7842323 -44.9 L -22.2831216 -44.9z','M-33.3682468 -41.7 L -34.1188022 -40.4 L -34.8693575 -41.7 L -33.3682468 -41.7z','M-28.0266857 -53.7518552 A8.875 8.875 279.5557524 0 1 -27.1695649 -53.563568 L -26.9019238 -53.1 L -28.4030345 -53.1 L -28.0266857 -53.7518552z','M-21.9367115 -41.9 L -21.1861561 -43.2 L -20.918515 -42.736432 A8.875 8.875 14.7765431 0 1 -21.1840139 -41.9 L-21.9367115 -41.9z','M-21.1861561 -46.4 L-20.6362949 -45.4476124 A8.875 8.875 357.1090493 0 1 -20.6255634 -45.1 L -21.9367115 -45.1 L -21.1861561 -46.4z','M-25.6317532 -48.3 L -24.8811978 -49.6 L -24.1306425 -48.3 L -25.6317532 -48.3z','M-23.7842323 -48.3 L -23.033677 -49.6 L -22.2831216 -48.3 L -23.7842323 -48.3z','M-23.9574374 -51.2 L -23.2068821 -49.9 L -24.7079928 -49.9 L -23.9574374 -51.2z','M-26.7287187 -52.8 L -25.9781634 -51.5 L -27.4792741 -51.5 L -26.7287187 -52.8z','M-29.6732051 -38.7 L -31.1743158 -38.7 L -30.4237604 -40 L -29.6732051 -38.7z','M-28.7494447 -37.1 L -30.2505553 -37.1 L -29.5 -38.4 L -28.7494447 -37.1z','M-23.033677 -46.4 L -22.2831216 -45.1 L -23.7842323 -45.1 L -23.033677 -46.4z','M-23.9574374 -48 L -23.2068821 -46.7 L -24.7079928 -46.7 L -23.9574374 -48z','M-31.5207259 -41.9 L -33.0218366 -41.9 L -32.2712813 -43.2 L -31.5207259 -41.9z','M-33.9455971 -43.5 L -33.1950417 -44.8 L -32.4444864 -43.5 L -33.9455971 -43.5z','M-21.3593612 -46.7 L -22.8604719 -46.7 L -22.1099166 -48 L -21.3593612 -46.7z','M-25.9781634 -51.3 L -26.7287187 -50 L -27.4792741 -51.3 L -25.9781634 -51.3z','M-28.7494447 -36.9 L-29.1938414 -36.1302823 A8.875 8.875 88.0230897 0 1 -29.8061586 -36.1302823 L -30.2505553 -36.9 L -28.7494447 -36.9z','M-37.4433767 -48.958332 A8.875 8.875 206.4879276 0 0 -37.7386665 -48.3 L -37.0632885 -48.3 L -37.4433767 -48.958332z','M-34.8693575 -45.1 L -34.1188022 -46.4 L -33.3682468 -45.1 L -34.8693575 -45.1z','M-22.1099166 -44.8 L -21.3593612 -43.5 L -22.8604719 -43.5 L -22.1099166 -44.8z','M-33.0218366 -41.7 L -31.5207259 -41.7 L -32.2712813 -40.4 L -33.0218366 -41.7z','M-27.1695649 -36.436432 A8.875 8.875 74.7765431 0 1 -28.0266857 -36.2481448 L -28.4030345 -36.9 L -26.9019238 -36.9 L -27.1695649 -36.436432z','M-33.9455971 -40.3 L -33.1950417 -41.6 L -32.4444864 -40.3 L -33.9455971 -40.3z','M-35.0425626 -41.6 L -34.2920072 -40.3 L -35.7931179 -40.3 L -35.0425626 -41.6z','M-33.1950417 -38.8 L -33.9455971 -40.1 L -32.4444864 -40.1 L -33.1950417 -38.8z','M-33.9455971 -46.7 L -33.1950417 -48 L -32.4444864 -46.7 L -33.9455971 -46.7z','M-33.3682468 -38.5 L-34.0238208 -37.3645125 A8.875 8.875 120.6455999 0 1 -34.3194963 -37.5476124 L -34.8693575 -38.5 L -33.3682468 -38.5z','M-33.3682468 -48.3 L -34.8693575 -48.3 L -34.1188022 -49.6 L -33.3682468 -48.3z','M-32.0980762 -36.9 L -30.5969655 -36.9 L -30.9733143 -36.2481448 A8.875 8.875 99.5557524 0 1 -31.8304351 -36.436432 L-32.0980762 -36.9z','M-35.7931179 -49.9 L -35.0425626 -51.2 L -34.2920072 -49.9 L -35.7931179 -49.9z','M-31.5207259 -45.1 L -33.0218366 -45.1 L -32.2712813 -46.4 L -31.5207259 -45.1z','M-36.7168784 -48.3 L -35.966323 -49.6 L -35.2157677 -48.3 L -36.7168784 -48.3z','M-36.7168784 -45.1 L -35.966323 -46.4 L -35.2157677 -45.1 L -36.7168784 -45.1z','M-30.5969655 -37.1 L -32.0980762 -37.1 L -31.3475209 -38.4 L -30.5969655 -37.1z','M-35.7931179 -46.7 L -35.0425626 -48 L -34.2920072 -46.7 L -35.7931179 -46.7z','M-37.6406388 -43.5 L -36.8900834 -44.8 L -36.1395281 -43.5 L -37.6406388 -43.5z','M-35.2157677 -41.9 L -36.7168784 -41.9 L -35.966323 -43.2 L -35.2157677 -41.9z','M-34.1188022 -40 L -33.3682468 -38.7 L -34.8693575 -38.7 L -34.1188022 -40z','M-36.1395281 -49.9 L-36.4772171 -50.4848944 A8.875 8.875 218.1714167 0 0 -36.8997044 -49.9 L-36.1395281 -49.9z','M-34.1188022 -43.2 L -33.3682468 -41.9 L -34.8693575 -41.9 L -34.1188022 -43.2z','M-36.8900834 -48 L -36.1395281 -46.7 L -37.6406388 -46.7 L -36.8900834 -48z','M-35.7931179 -43.5 L -35.0425626 -44.8 L -34.2920072 -43.5 L -35.7931179 -43.5z','M-32.2712813 -52.8 L -31.5207259 -51.5 L -33.0218366 -51.5 L -32.2712813 -52.8z','M-32.0980762 -43.3 L -30.5969655 -43.3 L -31.3475209 -42 L -32.0980762 -43.3z','M-29.6732051 -45.1 L -31.1743158 -45.1 L -30.4237604 -46.4 L -29.6732051 -45.1z','M-34.8693575 -51.5 L-34.3194963 -52.4523876 A8.875 8.875 237.1090493 0 1 -34.0238208 -52.6354875 L -33.3682468 -51.5 L -34.8693575 -51.5z','M-27.8256842 -41.9 L -29.3267949 -41.9 L -28.5762396 -43.2 L -27.8256842 -41.9z','M-30.5969655 -43.5 L -32.0980762 -43.5 L -31.3475209 -44.8 L -30.5969655 -43.5z','M-24.6805037 -37.5476124 A8.875 8.875 57.1090493 0 1 -24.9761792 -37.3645125 L -25.6317532 -38.5 L -24.1306425 -38.5 L -24.6805037 -37.5476124z','M-30.4237604 -49.6 L -29.6732051 -48.3 L -31.1743158 -48.3 L -30.4237604 -49.6z','M-29.3267949 -38.7 L -28.5762396 -40 L -27.8256842 -38.7 L -29.3267949 -38.7z','M-31.3475209 -51.2 L -30.5969655 -49.9 L -32.0980762 -49.9 L -31.3475209 -51.2z','M-27.6524791 -41.6 L -26.9019238 -40.3 L -28.4030345 -40.3 L -27.6524791 -41.6z','M-26.9019238 -37.1 L -28.4030345 -37.1 L -27.6524791 -38.4 L -26.9019238 -37.1z','M-31.5207259 -48.3 L -33.0218366 -48.3 L -32.2712813 -49.6 L -31.5207259 -48.3z','M-29.6732051 -44.9 L -30.4237604 -43.6 L -31.1743158 -44.9 L -29.6732051 -44.9z','M-31.3475209 -48 L -30.5969655 -46.7 L -32.0980762 -46.7 L -31.3475209 -48z','M-32.4444864 -49.9 L -33.9455971 -49.9 L -33.1950417 -51.2 L -32.4444864 -49.9z','M-27.4792741 -38.7 L -26.7287187 -40 L -25.9781634 -38.7 L -27.4792741 -38.7z','M-28.7494447 -46.5 L -29.5 -45.2 L -30.2505553 -46.5 L -28.7494447 -46.5z','M-30.2505553 -40.3 L -29.5 -41.6 L -28.7494447 -40.3 L -30.2505553 -40.3z','M-30.2505553 -46.7 L -29.5 -48 L -28.7494447 -46.7 L -30.2505553 -46.7z','M-25.8049583 -38.4 L-25.1493842 -37.2645125 A8.875 8.875 60.6455999 0 1 -25.4557912 -37.1 L -26.5555136 -37.1 L -25.8049583 -38.4z','M-29.1938414 -53.8697177 L -28.7494447 -53.1 L -30.2505553 -53.1 L -29.8061586 -53.8697177 A8.875 8.875 268.0230897 0 1 -29.1938414 -53.8697177z','M-23.9574374 -44.8 L -23.2068821 -43.5 L -24.7079928 -43.5 L -23.9574374 -44.8z','M-28.5762396 -52.8 L -27.8256842 -51.5 L -29.3267949 -51.5 L -28.5762396 -52.8z','M-28.4030345 -49.7 L -26.9019238 -49.7 L -27.6524791 -48.4 L -28.4030345 -49.7z','M-37.7386665 -41.7 L -37.0632885 -41.7 L -37.4433767 -41.041668 A8.875 8.875 153.5120724 0 1 -37.7386665 -41.7z','M-25.8049583 -41.6 L -25.0544029 -40.3 L -26.5555136 -40.3 L -25.8049583 -41.6z','M-30.5969655 -53.1 L -32.0980762 -53.1 L -31.8304351 -53.563568 A8.875 8.875 254.7765431 0 1 -30.9733143 -53.7518552 L-30.5969655 -53.1z','M-22.5227829 -50.4848944 A8.875 8.875 321.8285833 0 1 -22.1002956 -49.9 L -22.8604719 -49.9 L -22.5227829 -50.4848944z','M-28.4030345 -43.5 L -27.6524791 -44.8 L -26.9019238 -43.5 L -28.4030345 -43.5z','M-23.7842323 -41.9 L -23.033677 -43.2 L -22.2831216 -41.9 L -23.7842323 -41.9z','M-22.5227829 -39.5151056 A8.875 8.875 38.1714167 0 0 -22.1002956 -40.1 L -22.8604719 -40.1 L -22.5227829 -39.5151056z','M-28.4030345 -49.9 L -27.6524791 -51.2 L -26.9019238 -49.9 L -28.4030345 -49.9z','M-24.1306425 -38.7 L -25.6317532 -38.7 L -24.8811978 -40 L -24.1306425 -38.7z','M-21.9367115 -48.3 L-21.5566233 -48.958332 A8.875 8.875 333.5120724 0 1 -21.2613335 -48.3 L-21.9367115 -48.3z','M-24.8811978 -46.4 L -24.1306425 -45.1 L -25.6317532 -45.1 L -24.8811978 -46.4z','M-21.2613335 -41.7 L -21.9367115 -41.7 L -21.5566233 -41.041668 A8.875 8.875 26.4879276 0 0 -21.2613335 -41.7z','M-23.033677 -40 L-22.6573282 -39.3481448 A8.875 8.875 39.5557524 0 1 -23.2489501 -38.7 L -23.7842323 -38.7 L -23.033677 -40z','M-27.4792741 -41.9 L -26.7287187 -43.2 L -25.9781634 -41.9 L -27.4792741 -41.9z','M-36.8997044 -40.1 L -36.1395281 -40.1 L -36.4772171 -39.5151056 A8.875 8.875 141.8285833 0 1 -36.8997044 -40.1z','M-25.0544029 -46.7 L -26.5555136 -46.7 L -25.8049583 -48 L -25.0544029 -46.7z','M-25.9781634 -45.1 L -27.4792741 -45.1 L -26.7287187 -46.4 L -25.9781634 -45.1z','M-29.5 -51.2 L -28.7494447 -49.9 L -30.2505553 -49.9 L -29.5 -51.2z','M-21.9716785 -40.3 L -22.8604719 -40.3 L -22.1099166 -41.6 L -21.6655198 -40.8302823 A8.875 8.875 28.0230897 0 1 -21.9716785 -40.3z','M-30.4237604 -52.8 L -29.6732051 -51.5 L -31.1743158 -51.5 L -30.4237604 -52.8z','M-27.8256842 -48.3 L -29.3267949 -48.3 L -28.5762396 -49.6 L -27.8256842 -48.3z','M-25.8049583 -44.8 L -25.0544029 -43.5 L -26.5555136 -43.5 L -25.8049583 -44.8z','M-24.1306425 -41.9 L -25.6317532 -41.9 L -24.8811978 -43.2 L -24.1306425 -41.9z','M-23.9574374 -41.6 L -23.2068821 -40.3 L -24.7079928 -40.3 L -23.9574374 -41.6z','M-27.8256842 -48.1 L -28.5762396 -46.8 L -29.3267949 -48.1 L -27.8256842 -48.1z'],'pll':[],'plg':[]}; decal['side_hole'] = {'pth':['M22.5 -57.0928932 L22.5 -53.3260582 A0.5 0.5 0 0 1 22.3535534 -52.9725048 L18.1535534 -48.7725048 A0.5 0.5 45 0 1 17.3 -49.1260567 L17.3 -61.2928932 A0.5 0.5 179.9998251 0 1 18.1535534 -61.6464466 L22.3535534 -57.4464466 A0.5 0.5 315 0 1 22.5 -57.0928917z'],'pll':[],'plg':[]}; decal['cross'] = {'pth':['M-0.5 0 L0.5 0','M0 -0.5 L0 0.5'],'pll':[],'plg':[]};
+
→ show code
Reset Variables
Parameters
→ Generate
Zoom:
Download DXF
Additional Information