chiark / gitweb /
Remove some more obsolete Huxley stuff
[reprap-play.git] / laptop-sound-cable-hooks.scad
index d0a7b9ccfb37317889cf47b1763ca37688ad92d0..8cfd468f261a028782507be388aac9916dd3f60d 100644 (file)
@@ -3,16 +3,41 @@
 include <utils.scad>
 
 wall_th = 2;
+hook_th = 4;
+hook_hole = 4;
+hook_w_min = 6;
+hook_hook = 12;
+
+plug_entry_gap = 2.0;
 
 plug_l_d = [[ 27.78,
-             10.62 + 0.50 ],
+             10.62 + 0.75 ],
            [ 40.88,
-             8.56 + 0.50 ],
+             8.56 + 0.75 ],
            ];
 
 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_l_d_smallest = plug_l_d[len(plug_l_d)-1];
+plug_hook_x_min = -plug_l_d_smallest[0] - wall_th;
+plug_hook_z_start = -plug_l_d_smallest[1]/2 - wall_th;
+
+z_laptop_base = palmrest_from_plug_z - laptop_th;
+z_hook_min = z_laptop_base - hook_tongue_h;
+
 module PlugMainPlan() {
   for (l_d = plug_l_d) {
     l = l_d[0];
@@ -28,13 +53,40 @@ module PlugHolderPlan() {
       offset(r= wall_th)
       PlugMainPlan();
 
-    rectfromto([-100,-100], [-0.1,+100]);
+    rectfromto([-100,-100], [-plug_entry_gap,+100]);
   }
 }
 
-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_start ],
+           [ plug_hook_x_min + (plug_hook_z_start - z_hook_min),
+             z_hook_min ],
+           [ -plug_entry_gap, z_hook_min ],
+           [ -plug_entry_gap, 0 ],
+           ]);
+}
+
+module TonguePlan(){
+  difference(){
+    rectfromto([ -plug_entry_gap - 1, z_hook_min ],
+              [ tongue_len, z_laptop_base ]);
+    translate([ tongue_len - wall_th - hook_hole/2,
+               z_hook_min + wall_th + hook_hole/2 ])
+      circle(r = hook_hole/2);
+  }
+}
+
+module FarHookPlan(){
+  mirror([1,0,0])
+    TonguePlan();
+
+  rectfromto([ 0, z_hook_min ],
+            [ hook_w_min, palmrest_from_plug_z + 0.1]);
+
+  translate([0, palmrest_from_plug_z])
+    rectfromto([ -hook_hook, 0 ],
+              [ hook_w_min, hook_w_min ]);
 }
 
 module RotateIntersect(n=6){
@@ -46,13 +98,48 @@ module RotateIntersect(n=6){
 
 module PlugHolder(){
   difference(){
-    RotateIntersect(8)
-      PlugHolderPlan();
+    union(){
+      RotateIntersect(8)
+       PlugHolderPlan();
+
+      rotate([0,0,180]) {
+       linextr_y_xz(-hook_th_plug_holder/2,
+                    +hook_th_plug_holder/2)
+         PlugHookHookPlan();
+
+       linextr_y_xz(-hook_th/2,
+                    +hook_th/2)
+         TonguePlan();
+      }
+    }
 
     RotateIntersect(6)
       PlugMainPlan();
+
+    linextr(-plug_stem[1]/2, 100)
+      rectfromto([ -100, -plug_stem[0]/2 ],
+                [ +100, +plug_stem[0]/2 ]);
   }
 }
 
-//DemoPlan();
-PlugHolder();
+module PlugHolderPrint(){ ////toplevel
+  render() PlugHolder();
+}
+
+module FarHookPrint(){ ////toplevel
+  linextr(0, hook_th)
+    FarHookPlan();
+}
+
+module DemoPlan() { ////toplevel
+  translate([0,0,-10]) color("grey") PlugHolderPlan();
+  PlugMainPlan();
+  translate([0,0,-5]) color("blue") {
+    PlugHookHookPlan();
+    TonguePlan();
+  }
+
+  translate([0,40,0]) {
+    FarHookPlan();
+  }
+}