Parcourir la source

Final releas platform for terminals and other server stuff.

cixo il y a 1 an
Parent
commit
4391b112a9

+ 190 - 3
assets/platform.scad

@@ -1,14 +1,35 @@
 include <../config/platform.scad>
 include <../config/thread.scad>
 include <../config/wall.scad>
+include <../config/hook.scad>
 include <thread.scad>
 
+function platform_mount_holes_move_x() = (
+    platform_support_depth / 2
+    - platform_rounding
+    - thread_top_diameter / 2
+);
+
+function platform_mount_holes_move_y() = (
+    platform_support_thickness / 2
+    - platform_rounding
+    - thread_top_diameter / 2
+);
+
+function platform_mount_holes() = [
+    [-platform_mount_holes_move_x(), 0],
+    [-platform_mount_holes_move_x(), platform_mount_holes_move_y()],
+    [-platform_mount_holes_move_x(), -platform_mount_holes_move_y()],
+    [platform_mount_holes_move_x(), platform_mount_holes_move_y()],
+    [platform_mount_holes_move_x(), -platform_mount_holes_move_y()],
+];
+
 module platform_support_object() {
     module base_shape() {
         move_x = platform_support_depth / 2 - platform_rounding;
         move_y = platform_support_height / 2 - platform_rounding;
         size = platform_rounding;
-
+        
         hull() {
             translate([-move_x, move_y]) {
                 square(size * 2, center = true);
@@ -74,8 +95,174 @@ module platform_support_object() {
         }
     }
 
+    module platform_thread_object(move_x, move_y) {
+        move_z = platform_support_height / 2
+        - thread_height / 2
+        - platform_support_screw_thickness;
+
+        translate([move_x, move_y, move_z]) {
+            base_thread_object();
+        }
+    }
+
+    module platform_threads_object() {
+        for (count = platform_mount_holes()) {
+            platform_thread_object(count.x, count.y);
+        }
+    }
+
+    color("#239ddc") {
+        render() {
+            difference() {
+                base_object();
+                wall_threads_object();
+                platform_threads_object();
+            }
+        }
+    }
+}
+
+module platform_shape() {
+    module base_shape() {
+        move_x = platform_width / 2 - platform_rounding;
+        move_y = platform_depth / 2 - platform_rounding;
+
+        hull() {
+            translate([move_x, move_y]) {
+                circle(r = platform_rounding);
+            }
+
+            translate([-move_x, move_y]) {
+                circle(r = platform_rounding);
+            }
+
+            translate([move_x, -move_y]) {
+                square(platform_rounding * 2, center = true);
+            }
+
+            translate([-move_x, -move_y]) {
+                square(platform_rounding * 2, center = true);
+            }
+        }
+    }
+
+    module bonding_holes() {
+        for (count = platform_mount_holes()) {
+            move_y = count.x 
+            - platform_depth / 2 
+            + platform_support_depth / 2;
+
+            translate([count.y, move_y]) {
+                circle(r = thread_screw / 2); 
+            }   
+        }
+
+        move_x = platform_width / 2 - platform_rounding;
+        top_y = platform_depth / 2 - platform_rounding;
+        bottom_y = platform_support_depth - top_y;
+        center_y = platform_support_depth / 2;
+
+        translate([move_x, top_y]) {
+            circle(r = thread_screw / 2);
+        }
+
+        translate([-move_x, top_y]) {
+            circle(r = thread_screw / 2);
+        }
+
+        translate([move_x, bottom_y]) {
+            circle(r = thread_screw / 2);
+        }
+
+        translate([-move_x, bottom_y]) {
+            circle(r = thread_screw / 2);
+        }
+
+        translate([-move_x, center_y]) {
+            circle(r = thread_screw / 2);
+        }
+
+        translate([move_x, center_y]) {
+            circle(r = thread_screw / 2);
+        }
+    }
+
+    module mounting_holes() {
+        top_y = platform_mounting_holes_spacing / 2
+        + platform_mounting_holes_move;
+
+        bottom_y = -platform_mounting_holes_spacing / 2
+        + platform_mounting_holes_move;
+
+        translate([0, top_y]) {
+            circle(r = platform_mounting_screw / 2);
+        }
+
+        translate([0, bottom_y]) {
+            circle(r = platform_mounting_screw / 2);
+        }
+    }
+    
+    module useable_holes() {
+        move_x = platform_width / 2
+        - hook_mounting_hole / 2
+        - platform_rounding * 2;
+
+        top_y = platform_depth / 2
+        - hook_mounting_hole / 2
+        - platform_rounding * 4
+        - wall_holes_space / 2;
+
+        bottom_y = platform_support_depth
+        - top_y;
+
+        translate([move_x, top_y - wall_holes_space / 2]) {
+            circle(r = hook_mounting_hole / 2);
+        }
+
+        translate([move_x, top_y + wall_holes_space / 2]) {
+            circle(r = hook_mounting_hole / 2);
+        }
+
+        translate([-move_x, top_y - wall_holes_space / 2]) {
+            circle(r = hook_mounting_hole / 2);
+        }
+
+        translate([-move_x, top_y + wall_holes_space / 2]) {
+            circle(r = hook_mounting_hole / 2);
+        }
+
+        translate([move_x, bottom_y - wall_holes_space / 2]) {
+            circle(r = hook_mounting_hole / 2);
+        }
+
+        translate([move_x, bottom_y + wall_holes_space / 2]) {
+            circle(r = hook_mounting_hole / 2);
+        }
+
+        translate([-move_x, bottom_y - wall_holes_space / 2]) {
+            circle(r = hook_mounting_hole / 2);
+        }
+
+        translate([-move_x, bottom_y + wall_holes_space / 2]) {
+            circle(r = hook_mounting_hole / 2);
+        }
+    }
+
     difference() {
-        base_object();
-        wall_threads_object();
+        base_shape();
+        bonding_holes();
+        mounting_holes();
+        useable_holes();
+    }
+}
+
+module platform_object() {
+    color("#9bdf20") {
+        render() {
+            linear_extrude(height = platform_thickness, center = true) {
+                platform_shape();
+            }
+        }
     }
 }

+ 8 - 2
config/platform.scad

@@ -1,5 +1,11 @@
 platform_rounding = 5;
+platform_thickness = 6;
+platform_width = 85;
+platform_depth = 240;
 platform_support_depth = 50;
-platform_support_height = 60;
-platform_support_thickness = 50;
+platform_support_height = 55;
+platform_support_thickness = 75;
 platform_support_screw_thickness = 2;
+platform_mounting_screw = 4;
+platform_mounting_holes_spacing = 60;
+platform_mounting_holes_move = 50;

+ 1 - 1
config/thread.scad

@@ -1,4 +1,4 @@
-thread_screw = 3;
+thread_screw = 3.5;
 thread_height = 6;
 thread_diameter = 5;
 thread_top_height = 1;

+ 5 - 0
manufacture/platform.1.3D.scad

@@ -0,0 +1,5 @@
+include <../assets/platform.scad>
+
+$fn = 100;
+
+platform_support_object();

+ 5 - 0
manufacture/platform.2.3D.scad

@@ -0,0 +1,5 @@
+include <../assets/platform.scad>
+
+$fn = 100;
+
+platform_object();

+ 5 - 0
manufacture/platform.2D.scad

@@ -0,0 +1,5 @@
+include <../assets/platform.scad>
+
+$fn = 100;
+
+platform_shape();

+ 9 - 1
renders/platform.scad

@@ -2,4 +2,12 @@ include <../assets/platform.scad>
 
 $fn = 100;
 
-platform_support_object();
+translate([0, 0, -platform_support_height / 2 - platform_thickness / 2]) {
+    rotate([0, 0, 90]) {
+        platform_support_object();
+    }
+}
+
+translate([0, platform_depth / 2 - platform_support_depth / 2, 0]) {
+    platform_object();
+}