chiark / gitweb /
laptop-sound-cable-hooks: wip
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 31 May 2022 17:23:39 +0000 (18:23 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 31 May 2022 17:23:39 +0000 (18:23 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
laptop-sound-cable-hooks.scad

index c32b97d9a56f844335f1d12ab538f3f569197644..9a22ed4afcd69256a10c584a76537c4017da7158 100644 (file)
@@ -3,6 +3,8 @@
 include <utils.scad>
 
 wall_th = 2;
+hook_th = 4;
+hook_hole = 4;
 
 plug_l_d = [[ 27.78,
              10.62 + 0.50 ],
@@ -13,6 +15,23 @@ plug_l_d = [[ 27.78,
 plug_stem = [ 2.72 + 0.50,
              5.20 + 0.50 ];
 
+palmrest_from_plug_z = 3.98;
+laptop_th = 16.31 + 0.75;
+
+tongue_len = 50;
+
+// calculated
+
+
+hook_th_plug_holder =
+  plug_l_d[0][1]/2 + wall_th * sin(22.5);
+
+hook_tongue_h = hook_hole + wall_th*2;
+
+plug_hook_z_laptop_base = palmrest_from_plug_z - laptop_th;
+plug_hook_z_min = palmrest_from_plug_z - hook_tongue_h;
+plug_hook_x_min = -plug_l_d[len(plug_l_d)-1][0] - wall_th;
+
 module PlugMainPlan() {
   for (l_d = plug_l_d) {
     l = l_d[0];
@@ -32,9 +51,14 @@ module PlugHolderPlan() {
   }
 }
 
-module DemoPlan() {
-  translate([0,0,-5]) color("grey") PlugHolderPlan();
-  PlugMainPlan();
+module PlugHookHookPlan(){
+  polygon([ [ plug_hook_x_min, 0 ],
+           [ plug_hook_x_min + -plug_hook_z_min, plug_hook_z_min ],
+           [ tongue_len, plug_hook_z_min ],
+           [ tongue_len, plug_hook_z_laptop_base ],
+           [ 0, plug_hook_z_laptop_base ],
+           [ 0, 0 ],
+           ]);
 }
 
 module RotateIntersect(n=6){
@@ -46,8 +70,14 @@ module RotateIntersect(n=6){
 
 module PlugHolder(){
   difference(){
-    RotateIntersect(8)
-      PlugHolderPlan();
+    union(){
+      RotateIntersect(8)
+       PlugHolderPlan();
+
+      linextr_y_xz(-hook_th_plug_holder,
+                  +hook_th_plug_holder)
+       PlugHookHookPlan();
+    }
 
     RotateIntersect(6)
       PlugMainPlan();
@@ -58,5 +88,11 @@ module PlugHolder(){
   }
 }
 
+module DemoPlan() {
+  translate([0,0,-5]) color("grey") PlugHolderPlan();
+  PlugMainPlan();
+}
+
 //DemoPlan();
-render() PlugHolder();
+PlugHookHookPlan();
+//render() PlugHolder();