chiark / gitweb /
air-hockey-puck: wip
[reprap-play.git] / laptop-sound-cable-hooks.scad
index 4f0f17dc1d3f0427ff33f1a78c2a6a621131654d..8cfd468f261a028782507be388aac9916dd3f60d 100644 (file)
@@ -5,13 +5,15 @@ include <utils.scad>
 wall_th = 2;
 hook_th = 4;
 hook_hole = 4;
+hook_w_min = 6;
+hook_hook = 12;
 
-plug_entry_gap = 1.0;
+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,
@@ -33,8 +35,8 @@ 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;
 
-plug_hook_z_laptop_base = palmrest_from_plug_z - laptop_th;
-plug_hook_z_min = plug_hook_z_laptop_base - hook_tongue_h;
+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) {
@@ -58,23 +60,35 @@ module PlugHolderPlan() {
 module PlugHookHookPlan(){
   polygon([ [ plug_hook_x_min, 0 ],
            [ plug_hook_x_min, plug_hook_z_start ],
-           [ plug_hook_x_min + (plug_hook_z_start - plug_hook_z_min),
-             plug_hook_z_min ],
-           [ -plug_entry_gap, plug_hook_z_min ],
+           [ 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 PlugHookTonguePlan(){
+module TonguePlan(){
   difference(){
-    rectfromto([ -plug_entry_gap - 1, plug_hook_z_min ],
-              [ tongue_len, plug_hook_z_laptop_base ]);
+    rectfromto([ -plug_entry_gap - 1, z_hook_min ],
+              [ tongue_len, z_laptop_base ]);
     translate([ tongue_len - wall_th - hook_hole/2,
-               plug_hook_z_min + 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){
   intersection_for (r = [0:n-1]) {
     rotate([r/n * 360,0,0])
@@ -95,7 +109,7 @@ module PlugHolder(){
 
        linextr_y_xz(-hook_th/2,
                     +hook_th/2)
-         PlugHookTonguePlan();
+         TonguePlan();
       }
     }
 
@@ -108,11 +122,24 @@ module PlugHolder(){
   }
 }
 
-module DemoPlan() {
-  translate([0,0,-5]) color("grey") PlugHolderPlan();
-  PlugMainPlan();
+module PlugHolderPrint(){ ////toplevel
+  render() PlugHolder();
+}
+
+module FarHookPrint(){ ////toplevel
+  linextr(0, hook_th)
+    FarHookPlan();
 }
 
-//DemoPlan();
-//PlugHookHookPlan();
-render() PlugHolder();
+module DemoPlan() { ////toplevel
+  translate([0,0,-10]) color("grey") PlugHolderPlan();
+  PlugMainPlan();
+  translate([0,0,-5]) color("blue") {
+    PlugHookHookPlan();
+    TonguePlan();
+  }
+
+  translate([0,40,0]) {
+    FarHookPlan();
+  }
+}