chiark / gitweb /
scaffold-clamp: wip straphook
[reprap-play.git] / bike-phone-mount.scad
index 573cba37768b2c25ee562be30d6261028bcb3016..bb69726c80af237ef0afaadd58b87a2600bf8d6c 100644 (file)
@@ -4,50 +4,98 @@
 
 include <utils.scad>
 
-lip_height = 2.0 - 0.15;
-lip_depth = 2.5 /*?*/ - 0.20;
-neck_width = 26.5 - 0.45;
-neck_depth = 28.5 - 0.45;
-neck_length = 1.5 + 0.50;
-
-slope = 0.35;
-
-nep0 = [0,0];
-nep1 = nep0 + [0,1] * neck_length;
-nep7 = nep0 + [1,0] * lip_depth;
-nep2 = [ nep7[0], nep1[1] + slope * (nep7[0] - nep1[0]) ];
-nep3 = nep2 + [0, 0.1];
-nep4 = [ nep0[0]-1, nep3[1] ];
-nep6 = nep7 + [0,-1] * lip_height;
-nep5 = [ nep4[0], nep6[1] ];
-nepm = [ nep0[0], nep3[1] ];
-
-total_height = nep2[1] - nep6[1];
-nep_z_offset = -nep2[1];
-nep_side_offset = [ neck_width/2, nep_z_offset ];
-nep_rear_offset = [ neck_depth/2, nep_z_offset ];
-inner_pos = [-0.1, -total_height];
-
-module NeckEdgePlan() {
-  polygon([ nep0,
-           nep1,
-           nep2,
-           nep3,
-           nep4,
-           nep5,
-           nep6,
-           nep7 ]);
+mount_lip_height = 2.0 - 0.15 - 0.15;
+mount_lip_depth = 2.5 /*?*/ - 0.30;
+mount_neck_width = 26.5 - 0.55 - 0.15;
+mount_neck_length = 1.5 + 0.50;
+
+mount_diag_outer = 34.8        - 0.50;
+mount_diag_inner = 34.6 - 0.20 - 0.50;
+
+mount_slope = .65;
+mount_extra_slope = 3;
+
+mount_demo_ceil = 4;
+
+// calculated
+
+mnep0 = [0,0];
+mnep1 = mnep0 + [0,1] * mount_neck_length;
+mnep7 = mnep0 + [1,0] * mount_lip_depth;
+mnep2 = [ mnep7[0] + mount_extra_slope, mnep1[1] + mount_slope * (mnep7[0] + mount_extra_slope - mnep1[0]) ];
+mnep3 = mnep2 + [0, 0.1];
+mnep4 = [ mnep0[0]-1, mnep3[1] ];
+mnep6 = mnep7 + [0,-1] * mount_lip_height;
+mnep5 = [ mnep4[0], mnep6[1] ];
+mnepm = [ mnep0[0], mnep3[1] ];
+
+mount_total_height = mnep2[1] - mnep6[1];
+mnep_z_offset = -mnep2[1];
+mnep_side_offset = [ mount_neck_width/2, mnep_z_offset ];
+
+module MountNeckEdgePlan() {
+  polygon([ mnep0,
+           mnep1,
+           mnep2,
+           mnep3,
+           mnep4,
+           mnep5,
+           mnep6,
+           mnep7 ]);
 }
 
-module Neck() {
-  for (m=[0,1]) {
-    mirror([m,0]) {
-      translate(nep_side_offset) NeckEdgePlan();
-      rectfromto(inner_pos,
-                nep_side_offset + nepm);
+module MountNeckSquare() {
+  intersection_for (r=[0,90]) {
+    rotate([0,0,r]){
+      linextr_y_xz(-100,100,convexity=10){
+       for (m=[0,1]) {
+         mirror([m,0]) {
+           translate(mnep_side_offset) MountNeckEdgePlan();
+           rectfromto([-0.1, -mount_total_height],
+                      mnep_side_offset + mnepm);
+         }
+       }
+      }
     }
   }
 }
 
-//NeckEdgePlan();
-Neck();
+module MountDiagonal() {
+  rotate([0,0,45]){
+    translate([0,0, -mount_total_height]){
+      linextr(0, mount_lip_height)
+       square(center=true, mount_diag_outer);
+      linextr(0, mount_total_height)
+       square(center=true, mount_diag_inner);
+      linextr(mount_lip_height + mount_neck_length,
+             mount_total_height + 1)
+       square(center=true, 100);
+    }
+  }
+}
+
+module MountDemoCeil() {
+  c = mount_demo_ceil + mount_extra_slope;
+  linextr(0, 0.8) {
+    square(mount_neck_width + 2*(mount_demo_ceil + mount_extra_slope),
+          center=true);
+  }
+}
+
+module Mount(){
+  intersection(){
+    MountNeckSquare();
+    MountDiagonal();
+  }
+}
+
+module MountDemo(){ ////toplevel
+  Mount();
+  MountDemoCeil();
+}
+
+//MountNeckEdgePlan();
+//MountNeck();
+//MountDemoCeil();
+//MountDiagonal();
+//MountDemo();