clarify code by moving nubs into their own modules
[ozzloy@gmail.com/3d-printables] / 3030-dampener-feet.scad
index 0a578f0ce127badf2925def36f619c122d73e669..a5abfcef649ec1d424218bba97d2ba2275f94d07 100644 (file)
@@ -1,9 +1,13 @@
-/* GNU AGPLv3 (or later at your option)
+/*
+  GNU AGPLv3 (or later at your option)
    see bottom for more license info.
-   please do not remove this notice. */
+   please keep this notice.
+*/
 
-/* measurements from misumi's 3030 aluminum extrusion data sheet
-   https://us.misumi-ec.com/pdf/fa/2012/p2_0545.pdf */
+/*
+  measurements from misumi's 3030 aluminum extrusion data sheet
+   https://us.misumi-ec.com/pdf/fa/2012/p2_0545.pdf
+*/
 
 //$fn = 30; // use this while editing
 $fn = 100; // use this for generating STL
@@ -12,13 +16,26 @@ foot_height = 18;
 foot_length = 20;
 wall_width = 2;
 nub_depth = 4;
-
+desired_corner_rounding_radius = 2/2.1;
+
+// rounding radius needs to be just under half the size of the wall_width
+maximum_corner_rounding_radius = wall_width / 2 - 0.1;
+corner_rounding_radius =
+  (desired_corner_rounding_radius < maximum_corner_rounding_radius)
+  ?
+  desired_corner_rounding_radius
+  :
+  maximum_corner_rounding_radius;
+
+// the printed nubs did not fit into the extrusion gap perfectly.
+//  we can change the model just a little bit to accomodate printing
+//  imperfections.
 fudge = 0.1;
 //fudge = 0.0;
 
 // 3030 dimensions
-x = 30; // adding a little because printers aren't perfect
-y = 30; // adding a little because printers aren't perfect
+x = 30;
+y = 30;
 opening_width = 8;
 
 outer_block = (30 - 16.5) / 2;
@@ -37,6 +54,19 @@ module fillet(r) {
 module round_corners(r) {
   fillet(r) { fillet(-r) { children(); } } }
 
+module side_nub() {
+  // side nub, goes into side 3030 openings
+  a = opening_width;
+  b = foot_height + wall_width - (y - opening_width) / 2;
+  side_nub_length = (a < b) ? a : b;
+  translate([0, (y - opening_width) / 2 + fudge]) {
+    square([nub_depth, side_nub_length - fudge]); } }
+
+module bottom_nub() {
+  // bottom nub, goes into bottom 3030 opening
+  translate([(x - opening_width) / 2, 0]) {
+    square([opening_width / 2, nub_depth]); } }
+
 module half_foot_2d() {
   // outer ring
   difference() {
@@ -54,18 +84,11 @@ module half_foot_2d() {
   translate([cos(45) * foot_height,
              -(sin(45) * foot_height + wall_width)]) {
     square([x / 2 - cos(45) * foot_height, wall_width]); }
-  // bottom nub, goes into bottom 3030 opening
-  translate([(x - opening_width) / 2, 0]) {
-    square([opening_width / 2, nub_depth]); }
-  // side nub, goes into side 3030 openings
-  a = opening_width;
-  b = foot_height + wall_width - (y - opening_width) / 2;
-  side_nub_length = (a < b) ? a : b;
-  translate([0, (y - opening_width) / 2 + fudge]) {
-    square([nub_depth, side_nub_length - fudge]); } }
+  bottom_nub();
+  side_nub(); }
 
 module foot_2d() {
-  round_corners(wall_width / 2.1) {
+  round_corners(corner_rounding_radius) {
     translate([-x / 2, 0, 0]) {
       half_foot_2d(); }
     translate([x / 2, 0, 0]) {