First commit of cleaned up y-axis-bracket origin/boxbracket
authorDaniel Roberts <Ademan555@gmail.com>
Wed, 29 Aug 2012 13:53:02 +0000 (06:53 -0700)
committerDaniel Roberts <Ademan555@gmail.com>
Wed, 29 Aug 2012 13:53:02 +0000 (06:53 -0700)
y-axis-bracket.scad

dissimilarity index 83%
index 0d9c484..34630fa 100644 (file)
-include <configuration.scad>
-
-module boltTrack(width, length, height) {
-       hwidth = width / 2;
-       hdiff = hwidth - height;
-       union() {
-               difference() {
-                       rotate([90, 0, 0])
-                               translate([hwidth, height, -length])
-                                       cylinder(h=length, r=hwidth, $fn=12);
-                       
-                       if (height < hwidth) {
-                               translate([0, -1, height - hwidth - 1])
-                                       cube([width, length + 2, hdiff + 1]);
-                       }
-               }
-               cube([width, length, height]);
-       }
-}
-
-
-module yrodbracket(lip_thickness, lip_length) {
-       innerRadius = threaded_rod_diameter / 2;
-       outerRadius = innerRadius + lip_thickness;
-       r_head = 3.5; // FIXME: stolen from screw() in inc/functions.scad
-       r_screw = 2;
-       screw_margin = r_head + 2;
-       holeOuterDiameter = r_screw + screw_margin * 2;
-       holeCenter = holeOuterDiameter / 2;
-       width = threaded_rod_diameter + holeOuterDiameter * 2;
-       middle = width / 2;
-       height = outerRadius + innerRadius;
-
-       depth = holeOuterDiameter * 2 + lip_thickness;
-
-       function pythag(a, b) = sqrt(a * a + b * b);
-       function bevelradius(x, y, bevel) = pythag(x, y) - bevel * max(x, y) / min(x, y);
-
-       xzbevel = bevelradius(width, board_thickness, 2.0);
-       yzbevel = bevelradius(depth, board_thickness, 2.0);
-       difference() {
-               union() {
-                       intersection() {
-                               cube([width, depth, board_thickness]);
-                               translate([width / 2, depth / 2, board_thickness / 2])
-                                       rotate([0, 45, 0])
-                                               cube([xzbevel, depth, xzbevel], center=true);
-                               translate([width / 2, depth / 2, board_thickness / 2])
-                                       rotate([45, 0, 0])
-                                               cube([width, yzbevel, yzbevel], center=true);
-                                               
-                       }
-                       translate([0, 0, -lip_length])
-                               cube([width, lip_thickness, lip_length + lip_thickness]);
-               }
-               translate([holeOuterDiameter, -1, -lip_length - lip_thickness])
-                       boltTrack(threaded_rod_diameter, depth + 2, lip_length + lip_thickness + innerRadius);
-
-               // screw holes
-               for (x = [holeCenter, width - holeCenter]) {
-                       for (y = [lip_thickness + holeCenter, holeOuterDiameter + lip_thickness + holeCenter]) {
-                               translate([x, y, board_thickness])
-                                       rotate([180, 0, 0])
-                                               screw();
-                       }
-               }
-       }
-}
-
-module yrodbracket2(lip_thickness, lip_length) {
-       innerRadius = threaded_rod_diameter / 2;
-       outerRadius = innerRadius + lip_thickness;
-       r_head = 3.5; // FIXME: stolen from screw() in inc/functions.scad
-       r_screw = 2;
-       screw_margin = r_head + 2;
-       holeOuterDiameter = r_screw + screw_margin * 2;
-       holeCenter = holeOuterDiameter / 2;
-       width = threaded_rod_diameter + holeOuterDiameter * 2;
-       middle = width / 2;
-       height = outerRadius + innerRadius;
-
-       depth = holeOuterDiameter * 2 + lip_thickness;
-
-       function pythag(a, b) = sqrt(a * a + b * b);
-       function bevelradius(x, y, bevel) = pythag(x, y) - bevel * max(x, y) / min(x, y);
-
-       xzbevel = bevelradius(width, board_thickness + lip_length, 2.0);
-       yzbevel = bevelradius(depth, board_thickness + lip_length, 2.0);
-       bracket_thickness = board_thickness + lip_length;
-       difference() {
-               union() {
-                       intersection() {
-                               translate([0, 0, -lip_length])
-                                       cube([width, depth, bracket_thickness]);
-                               translate([width / 2, depth / 2, bracket_thickness / 2 - lip_length])
-                                       rotate([0, 45, 0])
-                                               cube([xzbevel, depth, xzbevel], center=true);
-                               translate([width / 2, depth / 2, bracket_thickness / 2 - lip_length])
-                                       rotate([45, 0, 0])
-                                               cube([width, yzbevel, yzbevel], center=true);
-                       }
-               }
-               translate([holeOuterDiameter, -1, -lip_length - lip_thickness])
-                       boltTrack(threaded_rod_diameter, depth + 2, lip_length + lip_thickness + innerRadius);
-
-               translate([-1, lip_thickness, -lip_length - 1])
-                       cube([width + 2, depth, lip_length + 1]);
-
-               // screw holes
-               for (x = [holeCenter, width - holeCenter]) {
-                       for (y = [lip_thickness + holeCenter, holeOuterDiameter + lip_thickness + holeCenter]) {
-                               translate([x, y, board_thickness])
-                                       rotate([180, 0, 0])
-                                               screw();
-                       }
-               }
-       }
-}
-
-translate([-10, 0, 0])
-       color("blue")
-               cube([1, 1, board_thickness]); // xxx: ruler
-translate([-9, 0, 0])
-       color("Red")
-               cube([1, 1, threaded_rod_diameter]); // xxx: ruler
-
-yrodbracket2(3, 3);
-//rotate([90, 0, 0])
-       //translate([3.5 + 6 + 3 + threaded_rod_diameter / 2, threaded_rod_diameter / 2, -50])
-               //# cylinder(r=threaded_rod_diameter / 2, h=100);
+include <configuration.scad>
+
+module bolt_track(width, length, height) {
+       hwidth = width / 2;
+       hdiff = hwidth - height;
+       union() {
+               difference() {
+                       rotate([90, 0, 0])
+                               translate([hwidth, height, -length])
+                                       cylinder(h=length, r=hwidth, $fn=$fn);
+                       
+                       if (height < hwidth) {
+                               translate([0, -1, height - hwidth - 1])
+                                       cube([width, length + 2, hdiff + 1]);
+                       }
+               }
+               cube([width, length, height]);
+       }
+}
+
+function bracket_width(screw_area) = screw_area * 2 + threaded_rod_diameter;
+function bracket_depth(lip_thickness, screw_area) = screw_area * 2 + lip_thickness;
+function bracket_height(lip_length) = board_thickness + lip_length;
+
+module beveled_box(size, bevel_size=4) {
+       function pythag(a, b) = sqrt(a * a + b * b);
+       function bevelradius(x, y, bevel) = pythag(x, y) - bevel * max(x, y) / min(x, y);
+
+       xzbevel = bevelradius(size[0], size[2], bevel_size);
+       yzbevel = bevelradius(size[1], size[2], bevel_size);
+       intersection() {
+               cube(size);
+               translate([size[0] / 2, size[1] / 2, size[2] / 2])
+                       rotate([0, 45, 0])
+                               cube([xzbevel, size[1], xzbevel], center=true);
+               translate([size[0] / 2, size[1] / 2, size[2] / 2])
+                       rotate([45, 0, 0])
+                               cube([size[0], yzbevel, yzbevel], center=true);
+       }
+}
+
+module yrodbracket(screw_area, lip_thickness, lip_length, bevel_size=2.0) {
+       inner_radius = threaded_rod_diameter / 2;
+       screw_center = screw_area / 2;
+
+       width = bracket_width(screw_area);
+       depth = bracket_depth(lip_thickness, screw_area);
+       height = bracket_height(lip_length);
+
+       difference() {
+               translate([0, 0, -lip_length])
+                       beveled_box([width, depth, height], bevel_size);
+               translate([screw_area, -1, -lip_length - lip_thickness])
+                       bolt_track(threaded_rod_diameter, depth + 2, lip_length + lip_thickness + inner_radius);
+
+               translate([-1, lip_thickness, -lip_length - 1])
+                       cube([width + 2, depth, lip_length + 1]);
+
+               // screw holes
+               for (x = [screw_center, width - screw_center]) {
+                       for (y = [lip_thickness + screw_center, screw_area + lip_thickness + screw_center]) {
+                               translate([x, y, board_thickness])
+                                       rotate([180, 0, 0])
+                                               screw();
+                       }
+               }
+       }
+}
+
+rotate([90, 0, 0]) {
+       for (x = [0, bracket_width(12) + 5]) {
+               for (y = [0, bracket_height(3) + 5]) {
+                       translate([x, 0, y])
+                               yrodbracket(12, 3, 3);
+               }
+       }
+}