diff --git a/Hardware/CYCLONE_2/Cyclone.scad b/Hardware/CYCLONE_2/Cyclone.scad index 9d7710d..a343e7c 100644 --- a/Hardware/CYCLONE_2/Cyclone.scad +++ b/Hardware/CYCLONE_2/Cyclone.scad @@ -1,11 +1,11 @@ // This file is part of Cyclone PCB Factory: an open-source 3D printable CNC machine for PCB manufacture // http://reprap.org/wiki/Cyclone_PCB_Factory // Original author: Carlosgs (http://carlosgs.es) -// License: Attribution - Share Alike - Creative Commons (http://creativecommons.org/licenses/by-sa/3.0/) +// License: CC BY-SA 4.0 (Attribution-ShareAlike 4.0 International, http://creativecommons.org/licenses/by-sa/4.0/) // Designed with http://www.openscad.org/ -// Include necessary libraries +// Load necessary libraries use use use @@ -13,24 +13,22 @@ use use - - // Parameters for the bottom base -base_size_X = 304.8; -base_size_Y = 261.62; +base_size_X = 304.8+50*(1+sin(0.5*$t*360)); +base_size_Y = 261.62+50*(1+sin(0.5*$t*360)); base_thickness = 8; base_corner_radius = 20; base_corner_res = 0; // Parameters for the axes sizes -axes_Xsmooth_rodLen = 295; -axes_Ysmooth_rodLen = 255; -axes_Zsmooth_rodLen = 150; +axes_Xsmooth_rodLen = 265+50*(1+sin(0.5*$t*360)); +axes_Ysmooth_rodLen = 240+50*(1+sin(0.5*$t*360)); +axes_Zsmooth_rodLen = 100+50*(1+sin(0.5*$t*360)); -axes_Xthreaded_rodLen = 300; -axes_Ythreaded_rodLen = 300; -axes_Zthreaded_rodLen = 100; +axes_Xthreaded_rodLen = axes_Xsmooth_rodLen+50; +axes_Ythreaded_rodLen = axes_Ysmooth_rodLen-50; +axes_Zthreaded_rodLen = axes_Zsmooth_rodLen+50; axes_Xsmooth_rodD = 8.5; axes_Ysmooth_rodD = 8.5; @@ -42,82 +40,51 @@ axes_Zthreaded_rodD = 8; // Parameters for the axes reference position // Note: The reference coordinates are centered like this: -// Y axis reference is the Y smooth rod, BACK of LEFT FRAME -// X axis reference is the X threaded rod edge, LEFT FRAME +// Y axis reference is the Y smooth rod end, BACK of RIGHT FRAME +// X axis reference is the frontal X smooth rod end, RIGHT FRAME // Z axis reference is the Z threaded rod, at the height of the Z nut, and relative to the X reference axes_Yreference_height = 30; axes_Xreference_height = 60; // relative to Y reference -axes_Zreference_height = 35; // relative to X reference +axes_Zreference_height = 45; // relative to X reference -axes_Xreference_posY = 60; // relative to Y reference. Moves the X axis to the front of the machine +axes_Xreference_posY = -70; // relative to Y reference. Moves the X axis towards the front of the machine axes_Zreference_posY = 15; // relative to X reference. Positions Z nut between the Y rods +axes_Y_threaded_height = 25; -axes_Ysmooth_separation = 210; +axes_Ysmooth_separation = 180+50*(1+sin(0.5*$t*360)); axes_Xsmooth_separation = 40; +axes_Zsmooth_separation = 35; -// Parameters for the axis-nut offsets (along same axes) -axes_Xnut_offset = 10; -axes_Ynut_offset = 0; // Carriage positions (for rendering) -axes_Xcarriage_pos = 70; -axes_Ycarriage_pos = 40; -axes_Zcarriage_pos = 20; +axes_Xcarriage_pos = axes_Xsmooth_rodLen/2+sin($t*360)*axes_Xsmooth_rodLen/3; +axes_Ycarriage_pos = axes_Ysmooth_rodLen/2+sin($t*360)*axes_Ysmooth_rodLen/3; +axes_Zcarriage_pos = axes_Zsmooth_rodLen/3+sin(5*$t*360)*axes_Zsmooth_rodLen/4; -// Draw auxiliary reference (LCS axis, etc) + + +// Calculations +axes_Xreference_posX = (axes_Ysmooth_separation-axes_Xsmooth_rodLen)/2; // relative to Y reference +axes_Y_smoothThreaded_verticalSeparation = axes_Yreference_height-axes_Y_threaded_height; + +// Activate/Deactivate rendering auxiliary references (LCS axis, etc) draw_references = true; - -// Useful command reference: -//use -//stepper_motor_mount(nema_standard=17, slide_distance=10, $fn=40, mochup=true); - -//use -//roundedBox([10,20,30], radius=2, sidesonly=false, $fn=60); - -//use -//bcube([20,20,10],cr=4, cres=10); - -//include -//motor(Nema17, size=NemaMedium, dualAxis=false); - -//use -//teardrop(radius=10, length=20, angle=90); - -//use -//nutHole(size=3, tolerance=0.5, proj=-1); -//boltHole(size=3, length=10, tolerance=0.5, proj=-1, $fn=40); - -//use -//hole_for_screw(size=3,length=15,nutDepth=0,nutAddedLen=3.5,captiveLen=0); - - - - -//-- Connector definitions -// att. point att. axis roll -//C_origin = [ [0,0,0], [0,0,1], 0 ]; -//C_other = [ [0,0,20], [0,1,1], 5 ]; - -// -//if(draw_references) { -// %frame(); -// %connector(C_origin); -// %connector(C_other); -//} - -//attach(a,origin) cylinder(r=0.25, h=20, $fn=3); - +// Include Cyclone parts +include +include +include +include +include +include // BEGIN ASSEMBLING THE DESIGN - -// Dummy part for allowing rendering of all objects with % -cube([10,20,30]); +if(draw_references) %frame(); // Main base for the machine beveledBase([base_size_X,base_size_Y,base_thickness], radius=base_corner_radius, res=base_corner_res); @@ -141,42 +108,70 @@ translate([0,0,-base_thickness]) { rubberFoot(); } -// CHANGE REFERENCE POSITION to the left frame, Y smooth rod end -translate([axes_Ysmooth_separation/2,-axes_Ysmooth_rodLen/2,axes_Yreference_height]) { - if(draw_references) %frame(); -} -// CHANGE REFERENCE POSITION to the left frame, Y smooth rod end -translate([axes_Ysmooth_separation/2,-axes_Ysmooth_rodLen/2,axes_Yreference_height]) { + +// TRANSLATE REFERENCE POSITION to the RIGHT frame, Y smooth rod end +translate([-axes_Ysmooth_separation/2,axes_Ysmooth_rodLen/2,axes_Yreference_height]) { if(draw_references) %frame(); - // Draw left Y smooth rod - standard_rod(diam=axes_Ysmooth_rodD, length=axes_Ysmooth_rodLen, threaded=false); // Draw right Y smooth rod - translate([-axes_Ysmooth_separation,0,0]) - standard_rod(diam=axes_Ysmooth_rodD, length=axes_Ysmooth_rodLen, threaded=false); - - // CHANGE REFERENCE POSITION to the left frame, Y smooth rod end - translate([axes_Xsmooth_rodLen/2-axes_Ysmooth_separation/2,axes_Xreference_posY,axes_Xreference_height]) { + rotate([0,0,180]) standard_rod(diam=axes_Ysmooth_rodD, length=axes_Ysmooth_rodLen, threaded=false); + + Cyclone_X_rightFrame(); + + + // TRANSLATE REFERENCE POSITION to the LEFT frame, Y smooth rod end + translate([axes_Ysmooth_separation,0,0]) { if(draw_references) %frame(); - // Draw X threaded rod - rotate([0,0,90]) standard_rod(diam=axes_Xsmooth_rodD, length=axes_Xsmooth_rodLen, threaded=true); - // Draw bottom X smooth rod - translate([0,axes_Xsmooth_separation,0]) - rotate([0,0,90]) standard_rod(diam=axes_Xsmooth_rodD, length=axes_Xsmooth_rodLen, threaded=false); - // Draw top X smooth rod - translate([0,0,axes_Xsmooth_separation]) - rotate([0,0,90]) standard_rod(diam=axes_Xsmooth_rodD, length=axes_Xsmooth_rodLen, threaded=false); - // CHANGE REFERENCE POSITION to the X carriage (nut) - translate([-axes_Xcarriage_pos,0,0]) { + // Draw right Y smooth rod + rotate([0,0,180]) standard_rod(diam=axes_Ysmooth_rodD, length=axes_Ysmooth_rodLen, threaded=false); + + Cyclone_X_leftFrame(); + } + + + // TRANSLATE REFERENCE POSITION to the right frame, X lower smooth rod end + translate([axes_Xreference_posX,axes_Xreference_posY,axes_Xreference_height]) { + if(draw_references) %frame(); + + // Draw bottom X smooth rod + rotate([0,0,-90]) standard_rod(diam=axes_Xsmooth_rodD, length=axes_Xsmooth_rodLen, threaded=false); + // Draw X threaded rod + translate([-(axes_Xthreaded_rodLen-axes_Xsmooth_rodLen)/2,axes_Xsmooth_separation,0]) + rotate([0,0,-90]) standard_rod(diam=axes_Xthreaded_rodD, length=axes_Xthreaded_rodLen, threaded=true); + // Draw top X smooth rod + translate([0,axes_Xsmooth_separation,axes_Xsmooth_separation]) + rotate([0,0,-90]) standard_rod(diam=axes_Xsmooth_rodD, length=axes_Xsmooth_rodLen, threaded=false); + + + // TRANSLATE REFERENCE POSITION to the X carriage (centered) + translate([axes_Xcarriage_pos,0,0]) { if(draw_references) %frame(); - cyclone_X_carriage(); - // CHANGE REFERENCE POSITION to the X carriage (nut) - translate([0,axes_Zreference_posY,axes_Zreference_height]) { + Cyclone_X_carriage(); + + + // TRANSLATE REFERENCE POSITION to the Z axis origin (top of X carriage, right smooth rod) + translate([-axes_Zsmooth_separation/2,axes_Zreference_posY,axes_Zreference_height]) { if(draw_references) %frame(); - cyclone_Z_carriage(); + + // Draw Z smooth rod (right) + rotate([90,0,0]) standard_rod(diam=axes_Zsmooth_rodD, length=axes_Zsmooth_rodLen, threaded=false); + // Draw Z smooth rod (left) + translate([axes_Zsmooth_separation,0,0]) + rotate([90,0,0]) standard_rod(diam=axes_Zsmooth_rodD, length=axes_Zsmooth_rodLen, threaded=false); + // Draw Z threaded rod + translate([axes_Zsmooth_separation/2,0,0]) + rotate([90,0,0]) standard_rod(diam=axes_Zthreaded_rodD, length=axes_Zthreaded_rodLen, threaded=true); + + + // TRANSLATE REFERENCE POSITION to the Z axis reference + translate([0,0,axes_Zcarriage_pos]) { + if(draw_references) %frame(); + + Cyclone_Z_carriage(); + } } } } @@ -184,3 +179,53 @@ translate([axes_Ysmooth_separation/2,-axes_Ysmooth_rodLen/2,axes_Yreference_heig } + + + + + + + +// TRANSLATE REFERENCE POSITION to the FRONT RIGHT Y rod idler, Y smooth rod end +translate([-axes_Ysmooth_separation/2,-axes_Ysmooth_rodLen/2,axes_Yreference_height]) { + if(draw_references) %frame(); + + Cyclone_Y_rightSmoothRodIdler(); +} + +// TRANSLATE REFERENCE POSITION to the FRONT LEFT Y rod idler, Y smooth rod end +translate([axes_Ysmooth_separation/2,-axes_Ysmooth_rodLen/2,axes_Yreference_height]) { + if(draw_references) %frame(); + + Cyclone_Y_leftSmoothRodIdler(); +} + + +// TRANSLATE REFERENCE POSITION to the FRONT Y frame, Y threaded rod end +translate([0,-axes_Ythreaded_rodLen/2,axes_Y_threaded_height]) { + if(draw_references) %frame(); + + // Draw Y threaded rod + standard_rod(diam=axes_Ythreaded_rodD, length=axes_Ythreaded_rodLen, threaded=true); + + Cyclone_Y_frontFrame(); + + + // TRANSLATE REFERENCE POSITION to the BACK Y frame, Y threaded rod end + translate([0,axes_Ythreaded_rodLen,0]) { + if(draw_references) %frame(); + + Cyclone_Y_backFrame(); + } +} + + +// TRANSLATE REFERENCE POSITION to the CENTERED Y carriage nut, Y threaded rod +translate([0,-axes_Ysmooth_rodLen/2+axes_Ycarriage_pos,axes_Y_threaded_height]) { + if(draw_references) %frame(); + + Cyclone_Y_carriage(); +} + + + diff --git a/Hardware/CYCLONE_2/Cyclone_X_carriage.scad b/Hardware/CYCLONE_2/Cyclone_X_carriage.scad new file mode 100644 index 0000000..41e66fd --- /dev/null +++ b/Hardware/CYCLONE_2/Cyclone_X_carriage.scad @@ -0,0 +1,12 @@ +// This file is part of Cyclone PCB Factory: an open-source 3D printable CNC machine for PCB manufacture +// http://reprap.org/wiki/Cyclone_PCB_Factory +// Original author: Carlosgs (http://carlosgs.es) +// License: CC BY-SA 4.0 (Attribution-ShareAlike 4.0 International, http://creativecommons.org/licenses/by-sa/4.0/) +// Designed with http://www.openscad.org/ + + +module Cyclone_X_carriage() { + color("lightblue") translate([-(axes_Zsmooth_separation+10)/2,-5,-5]) + cube([axes_Zsmooth_separation+10,50,axes_Xsmooth_separation+10]); +} + diff --git a/Hardware/CYCLONE_2/Cyclone_X_frames.scad b/Hardware/CYCLONE_2/Cyclone_X_frames.scad new file mode 100644 index 0000000..5cb6b7c --- /dev/null +++ b/Hardware/CYCLONE_2/Cyclone_X_frames.scad @@ -0,0 +1,23 @@ +// This file is part of Cyclone PCB Factory: an open-source 3D printable CNC machine for PCB manufacture +// http://reprap.org/wiki/Cyclone_PCB_Factory +// Original author: Carlosgs (http://carlosgs.es) +// License: CC BY-SA 4.0 (Attribution-ShareAlike 4.0 International, http://creativecommons.org/licenses/by-sa/4.0/) +// Designed with http://www.openscad.org/ + + +module Cyclone_X_rightFrame() { + color("lightyellow") + translate([axes_Xreference_posX,axes_Xreference_posY-5,-axes_Yreference_height]) { + cube([15,-axes_Xreference_posY+5,axes_Yreference_height+axes_Xreference_height+axes_Xsmooth_separation+5]); + } + color("lightyellow") // smooth rod idler + translate([axes_Xreference_posX,-10,-axes_Yreference_height]) { + cube([abs(axes_Xreference_posX)+5,10,axes_Yreference_height+5]); + } +} + + +module Cyclone_X_leftFrame() { + scale([-1,1,1]) Cyclone_X_rightFrame(); +} + diff --git a/Hardware/CYCLONE_2/Cyclone_Y_SmoothRodIdlers.scad b/Hardware/CYCLONE_2/Cyclone_Y_SmoothRodIdlers.scad new file mode 100644 index 0000000..d5a79e8 --- /dev/null +++ b/Hardware/CYCLONE_2/Cyclone_Y_SmoothRodIdlers.scad @@ -0,0 +1,19 @@ +// This file is part of Cyclone PCB Factory: an open-source 3D printable CNC machine for PCB manufacture +// http://reprap.org/wiki/Cyclone_PCB_Factory +// Original author: Carlosgs (http://carlosgs.es) +// License: CC BY-SA 4.0 (Attribution-ShareAlike 4.0 International, http://creativecommons.org/licenses/by-sa/4.0/) +// Designed with http://www.openscad.org/ + + +module Cyclone_Y_rightSmoothRodIdler() { + color("lightcyan") + translate([-5,0,-axes_Yreference_height]) { + cube([20,10,axes_Yreference_height+5]); + } +} + + +module Cyclone_Y_leftSmoothRodIdler() { + scale([-1,1,1]) Cyclone_Y_rightSmoothRodIdler(); +} + diff --git a/Hardware/CYCLONE_2/Cyclone_Y_carriage.scad b/Hardware/CYCLONE_2/Cyclone_Y_carriage.scad new file mode 100644 index 0000000..71c110a --- /dev/null +++ b/Hardware/CYCLONE_2/Cyclone_Y_carriage.scad @@ -0,0 +1,29 @@ +// This file is part of Cyclone PCB Factory: an open-source 3D printable CNC machine for PCB manufacture +// http://reprap.org/wiki/Cyclone_PCB_Factory +// Original author: Carlosgs (http://carlosgs.es) +// License: CC BY-SA 4.0 (Attribution-ShareAlike 4.0 International, http://creativecommons.org/licenses/by-sa/4.0/) +// Designed with http://www.openscad.org/ + + +Ycarriage_linearBearingSeparation = 60; + +module Cyclone_Y_carriage() { + color("lightgreen") { + translate([-10,-5,-5]) + cube([20,15,axes_Y_smoothThreaded_verticalSeparation+10]); + translate([0,0,axes_Y_smoothThreaded_verticalSeparation]) { + translate([axes_Ysmooth_separation/2,Ycarriage_linearBearingSeparation/2]) + cube([10,10,10], center=true); + translate([-axes_Ysmooth_separation/2,Ycarriage_linearBearingSeparation/2]) + cube([10,10,10], center=true); + translate([-axes_Ysmooth_separation/2,-Ycarriage_linearBearingSeparation/2]) + cube([10,10,10], center=true); + translate([axes_Ysmooth_separation/2,-Ycarriage_linearBearingSeparation/2]) + cube([10,10,10], center=true); + } + } + + translate([0,0,8+5+axes_Y_smoothThreaded_verticalSeparation]) + beveledBase(size=[axes_Ysmooth_separation+50,Ycarriage_linearBearingSeparation+50,8], radius=3, res=15); +} + diff --git a/Hardware/CYCLONE_2/Cyclone_Y_frames.scad b/Hardware/CYCLONE_2/Cyclone_Y_frames.scad new file mode 100644 index 0000000..e4991d1 --- /dev/null +++ b/Hardware/CYCLONE_2/Cyclone_Y_frames.scad @@ -0,0 +1,18 @@ +// This file is part of Cyclone PCB Factory: an open-source 3D printable CNC machine for PCB manufacture +// http://reprap.org/wiki/Cyclone_PCB_Factory +// Original author: Carlosgs (http://carlosgs.es) +// License: CC BY-SA 4.0 (Attribution-ShareAlike 4.0 International, http://creativecommons.org/licenses/by-sa/4.0/) +// Designed with http://www.openscad.org/ + + +module Cyclone_Y_frontFrame() { + color("lightred") + translate([-10,0,-axes_Y_threaded_height]) + cube([20,10,axes_Y_threaded_height+5]); +} + + +module Cyclone_Y_backFrame() { + scale([1,-1,1]) Cyclone_Y_frontFrame(); +} + diff --git a/Hardware/CYCLONE_2/Cyclone_Z_carriage.scad b/Hardware/CYCLONE_2/Cyclone_Z_carriage.scad new file mode 100644 index 0000000..aadb0b9 --- /dev/null +++ b/Hardware/CYCLONE_2/Cyclone_Z_carriage.scad @@ -0,0 +1,16 @@ +// This file is part of Cyclone PCB Factory: an open-source 3D printable CNC machine for PCB manufacture +// http://reprap.org/wiki/Cyclone_PCB_Factory +// Original author: Carlosgs (http://carlosgs.es) +// License: CC BY-SA 4.0 (Attribution-ShareAlike 4.0 International, http://creativecommons.org/licenses/by-sa/4.0/) +// Designed with http://www.openscad.org/ + + + +module Cyclone_Z_carriage() { + color("cyan") translate([-5,-100+5,0]) { + cube([axes_Zsmooth_separation+10,100,10]); + translate([0,0,30]) + cube([axes_Zsmooth_separation+10,100,10]); + } +} + diff --git a/Hardware/CYCLONE_2/OpenScadReference.scad b/Hardware/CYCLONE_2/OpenScadReference.scad new file mode 100644 index 0000000..9b4192e --- /dev/null +++ b/Hardware/CYCLONE_2/OpenScadReference.scad @@ -0,0 +1,42 @@ + +// Useful OpenScad command reference: + +//use +//stepper_motor_mount(nema_standard=17, slide_distance=10, $fn=40, mochup=true); + +//use +//roundedBox([10,20,30], radius=2, sidesonly=false, $fn=60); + +//use +//bcube([20,20,10],cr=4, cres=10); + +//include +//motor(Nema17, size=NemaMedium, dualAxis=false); + +//use +//teardrop(radius=10, length=20, angle=90); + +//use +//nutHole(size=3, tolerance=0.5, proj=-1); +//boltHole(size=3, length=10, tolerance=0.5, proj=-1, $fn=40); + +//use +//hole_for_screw(size=3,length=15,nutDepth=0,nutAddedLen=3.5,captiveLen=0); + + + + +//-- Connector definitions +// att. point att. axis roll +//C_origin = [ [0,0,0], [0,0,1], 0 ]; +//C_other = [ [0,0,20], [0,1,1], 5 ]; + +// +//if(draw_references) { +// %frame(); +// %connector(C_origin); +// %connector(C_other); +//} + +//attach(a,origin) cylinder(r=0.25, h=20, $fn=3); + diff --git a/Hardware/CYCLONE_2/libs/hole_for_screw.scad b/Hardware/CYCLONE_2/libs/hole_for_screw.scad index ad5de11..dc02736 100644 --- a/Hardware/CYCLONE_2/libs/hole_for_screw.scad +++ b/Hardware/CYCLONE_2/libs/hole_for_screw.scad @@ -1,7 +1,8 @@ -// This file is part of Cyclone PCB Factory: a 3D printable CNC machine for PCB manufacture +// This file is part of Cyclone PCB Factory: an open-source 3D printable CNC machine for PCB manufacture // http://reprap.org/wiki/Cyclone_PCB_Factory -// Author: Carlosgs (http://carlosgs.es) -// License: Attribution - Share Alike - Creative Commons (http://creativecommons.org/licenses/by-sa/3.0/) +// Original author: Carlosgs (http://carlosgs.es) +// License: CC BY-SA 4.0 (Attribution-ShareAlike 4.0 International, http://creativecommons.org/licenses/by-sa/4.0/) +// Designed with http://www.openscad.org/ include diff --git a/Hardware/CYCLONE_2/libs/obiscad/vector.scad b/Hardware/CYCLONE_2/libs/obiscad/vector.scad index 1e5fd2a..13e11c4 100644 --- a/Hardware/CYCLONE_2/libs/obiscad/vector.scad +++ b/Hardware/CYCLONE_2/libs/obiscad/vector.scad @@ -7,6 +7,8 @@ //-- Released under the GPL license //--------------------------------------------------------------- +obiscad_drawing_resolution = 6; + //---------------------------------------- //-- FUNCTIONS FOR WORKING WITH VECTORS //---------------------------------------- @@ -26,19 +28,16 @@ function dot(u,v) = u[0]*v[0]+u[1]*v[1]+u[2]*v[2]; //-- Return the unit vector of a vector function unitv(v) = v/mod(v); -//-- Return the angle between two vectors +//-- Return the angle between two vectores function anglev(u,v) = acos( dot(u,v) / (mod(u)*mod(v)) ); -//-- Return a vector that is perpendicular -function perpendicular(vec) = vec.x == 0 ? [1,0,0] : vec.y == 0 ? [0,1,0] : vec.z == 0 ? [0,0,1] : [-vec.y,vec.x,0];; - //---------------------------------------------------------- //-- Draw a point in the position given by the vector p //---------------------------------------------------------- module point(p) { translate(p) - sphere(r=0.7,$fn=20); + sphere(r=0.7,$fn=obiscad_drawing_resolution); } //------------------------------------------------------------------ @@ -62,7 +61,7 @@ module vectorz(l=10, l_arrow=4, mark=false) //-- Draw the arrow translate([0,0,lb/2]) - cylinder(r1=2/2, r2=0.2, h=l_arrow, $fn=20); + cylinder(r1=2/2, r2=0.2, h=l_arrow, $fn=obiscad_drawing_resolution); //-- Draw the mark if (mark) { @@ -72,11 +71,11 @@ module vectorz(l=10, l_arrow=4, mark=false) } //-- Draw the body - cylinder(r=1/2, h=lb, center=true, $fn=20); + cylinder(r=1/2, h=lb, center=true, $fn=obiscad_drawing_resolution); } //-- Draw a sphere in the vector base - sphere(r=1/2, $fn=20); + sphere(r=1/2, $fn=obiscad_drawing_resolution); } //----------------------------------------------------------------- @@ -180,7 +179,7 @@ module frame(l=10, l_arrow=4) //-- Origin color("Gray") - sphere(r=1, $fn=20); + sphere(r=1, $fn=obiscad_drawing_resolution); } //-------------------------------------------------- diff --git a/Hardware/CYCLONE_2/libs/standard_parts.scad b/Hardware/CYCLONE_2/libs/standard_parts.scad index 5d536ac..b973025 100644 --- a/Hardware/CYCLONE_2/libs/standard_parts.scad +++ b/Hardware/CYCLONE_2/libs/standard_parts.scad @@ -1,7 +1,7 @@ // This file is part of Cyclone PCB Factory: an open-source 3D printable CNC machine for PCB manufacture // http://reprap.org/wiki/Cyclone_PCB_Factory // Original author: Carlosgs (http://carlosgs.es) -// License: Attribution - Share Alike - Creative Commons (http://creativecommons.org/licenses/by-sa/3.0/) +// License: CC BY-SA 4.0 (Attribution-ShareAlike 4.0 International, http://creativecommons.org/licenses/by-sa/4.0/) // Designed with http://www.openscad.org/ use