Przeglądaj źródła

End of work on platform.

Cixo Develop 1 rok temu
rodzic
commit
dafc53dfbf

+ 168 - 9
assets/platform.scad

@@ -283,12 +283,14 @@ module platform_mount_object() {
         }
     }
 
-    render() {
-        difference() {
-            layer_base_object();
-            top_holes();
-            left_holes();
-            right_holes();
+    color("#4C4CB3") {
+        render() {
+            difference() {
+                layer_base_object();
+                top_holes();
+                left_holes();
+                right_holes();
+            }
         }
     }
 }
@@ -326,10 +328,21 @@ module platform_top_shape() {
         }
     }
 
+    module mounting_holes() {
+        radius = platform_mounting_holes_diameter / 2;
+        
+        for (count = platform_mounting_holes_positions) {
+            translate([count.y, count.x]) {
+                circle(r = radius);
+            }
+        }
+    }
+
     difference() {
         base_shape();
 
         connector_holes();
+        mounting_holes();
 
         translate([0, holes_y]) {
             platform_top_holes();
@@ -406,7 +419,153 @@ module platform_side_object() {
     }
 }
 
-module platform_connector() {
-    size = platform_connector_space();
-    cube(size, center = true);
+function platform_connector_depth()
+    = platform_thickness * 2
+    + thread_screw / 2
+    + corner_radius * 2;
+
+function platform_connector_width()
+    = platform_connector_space()
+    + platform_thickness * 2
+    + thread_screw;
+
+module platform_connector_object(split = false) {
+    thickness = platform_thickness;
+    corner = corner_radius;
+    width = platform_connector_depth();
+
+    module corner() {
+        outside = corner * 2;
+        inside = outside - thickness * 2;
+        
+        module center() {
+            difference() {
+                circle(r = outside / 2);
+                circle(r = inside / 2);
+            }
+        }
+
+        module differ() {
+            translate([0, -outside / 4]) {
+                square([outside, outside / 2], center = true);
+            }
+
+            translate([-outside / 4, outside / 4]) {
+                square([outside / 2, outside / 2], center = true);
+            }
+        }
+        
+        translate([-outside / 4, -outside / 4]) {
+            render() {
+                difference() {
+                    center();
+                    differ();
+                }
+            }
+        }
+    }
+
+    module side(rotation = 0) {
+        move = width / 2 - corner / 2 - thickness / 2;
+        
+        rotate(rotation) {
+            hull() {
+                translate([move, 0]) {
+                    square(thickness, center = true);
+                }
+
+                translate([-move, 0]) {
+                    circle(r = thickness / 2);
+                }
+            }
+        }
+    }
+
+    module base_shape() {
+        corner_move = width / 2 - corner / 2;
+        
+        top_side_x = -corner / 2;
+        top_side_y = width / 2 - thickness / 2;
+        
+        side_x = top_side_y;
+        side_y = top_side_x;
+
+        translate([corner_move, corner_move]) {
+            corner();
+        }
+
+        translate([top_side_x, top_side_y]) {
+            side();
+        }
+
+        translate([side_x, side_y]) {
+            side(90);
+        }
+    }
+
+    depth = platform_connector_width();
+
+    module top_screw() {
+        move_x 
+        = width / 2
+        - corner_radius * 2;
+        
+        move_y 
+        = width / 2
+        - thickness / 2;
+        
+        move_z 
+        = -platform_connector_space() / 2;
+        
+        translate([move_x, move_y, move_z]) {
+            rotate([90, 0, 0]) {
+                thread_screw_object(thickness);
+            }
+        }
+    }
+
+    module side_screw() {
+        move_x 
+        = width / 2
+        - thickness / 2;
+
+        move_y 
+        = width / 2
+        - corner_radius * 2;
+
+        move_z 
+        = platform_connector_space() / 2;
+        
+        translate([move_x, move_y, move_z]) {
+            rotate([0, 90, 0]) {
+                thread_screw_object(thickness);
+            }
+        }
+    }
+
+    module base_object() {
+        linear_extrude(height = depth, center = true) {
+            base_shape();
+        }
+    }
+
+    module object() {
+        render() {
+            difference() {
+                base_object();
+                top_screw();
+                side_screw();
+            }
+        }
+    }
+
+    color("#3CC361") {
+        if (split) {
+            object();
+        } else {
+            mirror([1, 0, 0]) {
+                object();
+            }
+        }
+    }
 }

+ 5 - 0
config/platform.scad

@@ -4,3 +4,8 @@ platform_depth = 280;
 platform_thickness = 3;
 platform_side_thickness = 5;
 platform_support_depth = 15;
+platform_mounting_holes_diameter = 4;
+platform_mounting_holes_positions = [
+    [20, 0],
+    [-20, 0]
+];

+ 1 - 1
manufacture/platform.2D.scad → manufacture/platform.1.2D.scad

@@ -2,4 +2,4 @@ include <../assets/platform.scad>
 
 $fn = 100;
 
-platform_shape();
+platform_top_shape();

+ 1 - 1
manufacture/platform.1.3D.scad

@@ -2,4 +2,4 @@ include <../assets/platform.scad>
 
 $fn = 100;
 
-platform_support_object();
+platform_mount_object();

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

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

+ 8 - 1
manufacture/platform.2.3D.scad

@@ -1,5 +1,12 @@
 include <../assets/platform.scad>
 
 $fn = 100;
+move = platform_connector_width() / 2;
 
-platform_object();
+translate([move, 0, 0]) {
+    platform_connector_object(true);
+}
+
+translate([-move, 0, 0]) {
+    platform_connector_object(false);
+}

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

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

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

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

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

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

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

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

+ 23 - 1
renders/platform.scad

@@ -38,4 +38,26 @@ translate([-side_position_x, 0, side_position_z]) {
     }
 }
 
-platform_connector();
+for (count = platform_connector_holes()) {
+    move_z
+    = count
+    + platform_depth / 2
+    - platform_full_support_depth() / 2
+    - platform_connector_space() / 2;
+    
+    move_x 
+    = platform_width / 2
+    - platform_connector_depth() / 2;
+
+    move_y
+    = platform_height / 2
+    - platform_connector_depth() / 2;
+
+    translate([move_x, move_y, move_z]) {
+        platform_connector_object(true);
+    }
+    
+    translate([-move_x, move_y, move_z]) {
+        platform_connector_object(false);
+    }
+}