소스 검색

Add new module to mount wall with nail

cixo 1 년 전
부모
커밋
b16078f0d8

+ 7 - 0
assets/nail.scad

@@ -0,0 +1,7 @@
+include <../config/nail.scad>
+
+module nail_hole_shape(move_x = 0, move_y = 0) {
+    translate([move_x, move_y]) {
+        circle(r = nail_diameter / 2);
+    }
+}

+ 141 - 0
assets/nail_mount.scad

@@ -0,0 +1,141 @@
+include <../config/nail_mount.scad>
+include <../config/nail.scad>
+include <../config/wall.scad>
+include <nail.scad>
+include <thread.scad>
+
+function nail_mount_full_height() = 
+    nail_mount_bottom_thickness
+    + nail_mount_wall_spacer_height
+    + wall_thickness
+    - nail_mount_wall_insertion_thickness_margin;
+
+module nail_mount_object() {
+    module bottom_shape() {
+        radius = wall_mounting_screws / 2 
+        + nail_mount_padding
+        + nail_mount_wall_spacer_diameter_padding / 2;
+        
+        module base() {
+            circle(r = radius);
+        }
+
+        nail_move = radius - nail_mount_padding / 2;
+        
+        difference() {
+            base();
+            nail_hole_shape(nail_move, 0);
+            nail_hole_shape(-nail_move, 0);
+            nail_hole_shape(0, nail_move);
+            nail_hole_shape(0, -nail_move);
+        }
+    }
+
+    module bottom_object() {
+        thickness = nail_mount_bottom_thickness;
+        
+        linear_extrude(height = thickness, center = true) {
+            bottom_shape();
+        }
+    }
+
+    module wall_spacer_shape() {
+        radius = wall_mounting_screws / 2
+        + nail_mount_wall_spacer_diameter_padding / 2;
+
+        circle(r = radius);
+    }
+
+    module wall_spacer_object() {
+        thickness = nail_mount_wall_spacer_height;
+
+        linear_extrude(height = thickness, center = true) {
+            wall_spacer_shape();
+        }
+    }
+
+    module wall_insertion_shape() {
+        radius = wall_mounting_screws / 2;
+
+        circle(r = radius);
+    }
+
+    module wall_insertion_object() {
+        thickness = wall_thickness 
+        - nail_mount_wall_insertion_thickness_margin;
+
+        linear_extrude(height = thickness, center = true) {
+            wall_insertion_shape();
+        }
+    }
+
+    move_bottom = nail_mount_bottom_thickness / 2 
+    - nail_mount_full_height() / 2;
+    
+    move_spacer = nail_mount_wall_spacer_height / 2
+    + nail_mount_bottom_thickness
+    - nail_mount_full_height() / 2;
+
+    move_insertion = wall_thickness / 2
+    - nail_mount_wall_insertion_thickness_margin / 2
+    + nail_mount_wall_spacer_height
+    + nail_mount_bottom_thickness
+    - nail_mount_full_height() / 2;
+
+    module base_object() {
+        translate([0, 0, move_bottom]) {
+            bottom_object();
+        }
+
+        translate([0, 0, move_spacer]) {
+            wall_spacer_object();
+        }
+
+        translate([0, 0, move_insertion]) {
+            wall_insertion_object();
+        }
+    }
+
+    module thread() {
+        position = nail_mount_full_height() / 2
+        - thread_height / 2
+        - nail_mount_thread_thickness;
+
+        translate([0, 0, position]) {
+            thread_object(false, nail_mount_full_height());
+        }
+    }
+
+    color("#8440bf") {
+        render() {
+            difference() {
+                base_object();
+                thread();
+            }
+        }
+    }
+}
+
+module nail_mount_pressure_shape() {
+    outside = wall_mounting_screws / 2 
+    + nail_mount_pressure_padding;
+
+    inside = thread_screw / 2;
+
+    difference() {
+        circle(r = outside);
+        circle(r = inside);
+    }
+}
+
+module nail_mount_pressure_object() {
+    thickness = nail_mount_pressure_thickness;
+
+    color("#7BBF40") {
+        render() {
+            linear_extrude(height = thickness, center = true) {
+                nail_mount_pressure_shape();
+            }
+        }
+    }
+}

+ 24 - 12
assets/vesa.scad

@@ -192,22 +192,31 @@ module vesa_factor() {
     bottom_center = [0, vesa_frame_thickness * 4 - vesa_height / 3];
 
     module center_shape() {
-        hull() {
-            translate(top_center) {
-                square(vesa_frame_thickness * 4, center = true);
-            }
-
-            translate(bottom_center) {
-                square(vesa_frame_thickness * 4, center = true);
-            }
-        }
-
         correct = vesa_frame_thickness * 2;
         bottom_left = [correct + vesa_rounding, vesa_rounding - correct];
         bottom_right = [-bottom_left.x, bottom_left.y];
         top_left = [bottom_left.x, correct - vesa_rounding * 2];
         top_right = [-bottom_left.x, top_left.y];
 
+        height = top_left.y 
+        - bottom_left.y 
+        + vesa_rounding * 2
+        - bottom_center.y
+        + top_center.y;
+
+        move = top_left.y 
+        + bottom_left.y
+        + top_center.y
+        + bottom_center.y;
+
+        width = top_left.x
+        - top_right.x
+        - vesa_rounding * 2;
+
+        translate([0, move / 2]) {
+            square([width, height], center = true);
+        }
+
         translate(bottom_center) {
             difference_circle_corner(bottom_left, 0);  
             difference_circle_corner(bottom_right, 1);  
@@ -389,8 +398,11 @@ module vesa_wall() {
     }
 
     base_object();
-    
-    hinge(0);
+   
+    if (vesa_height > 75) {
+        hinge(0);
+    }
+
     hinge(-vesa_height / 4);
     hinge(vesa_height / 4);
 }

+ 1 - 0
config/nail.scad

@@ -0,0 +1 @@
+nail_diameter = 1;

+ 8 - 0
config/nail_mount.scad

@@ -0,0 +1,8 @@
+nail_mount_padding = 10;
+nail_mount_wall_spacer_diameter_padding = 2;
+nail_mount_bottom_thickness = 3;
+nail_mount_wall_spacer_height = 10;
+nail_mount_wall_insertion_thickness_margin = 0.5;
+nail_mount_thread_thickness = 2;
+nail_mount_pressure_thickness = 2;
+nail_mount_pressure_padding = 3;

+ 2 - 2
config/platform.scad

@@ -1,11 +1,11 @@
 platform_rounding = 5;
 platform_thickness = 6;
 platform_width = 85;
-platform_depth = 240;
+platform_depth = 290;
 platform_support_depth = 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_spacing = 169;
 platform_mounting_holes_move = 50;

+ 1 - 1
config/thread.scad

@@ -1,5 +1,5 @@
 thread_screw = 3.5;
-thread_height = 6;
+thread_height = 9;
 thread_diameter = 5;
 thread_top_height = 1;
 thread_top_diameter = 8;

+ 4 - 4
config/vesa.scad

@@ -1,5 +1,5 @@
-vesa_width = 100;
-vesa_height = 100;
+vesa_width = 75;
+vesa_height = 75;
 vesa_hole = 4;
 
 vesa_base_screw = 3;
@@ -10,7 +10,7 @@ vesa_thread_top_diameter = 7;
 vesa_thread_top_thickness = 1;
 vesa_thread_diameter = 5;
 vesa_thread_thickness = 5;
-vesa_wall_width = 90;
-vesa_wall_height = 90;
+vesa_wall_width = 60;
+vesa_wall_height = 60;
 vesa_corner_regulation_space = vesa_thickness;
 vesa_corner_regulation_count = 6;

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

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

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

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

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

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

+ 13 - 0
renders/nail_mount.scad

@@ -0,0 +1,13 @@
+include <../assets/nail_mount.scad>
+
+$fn = 100;
+
+nail_mount_object();
+
+position = nail_mount_full_height() / 2
++ nail_mount_pressure_thickness / 2
++ nail_mount_wall_insertion_thickness_margin;
+
+translate([0, 0, position]) {
+    nail_mount_pressure_object();
+}