chiark / gitweb /
topeak-mtx-tortec-expeditionrack-adapter: wip
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 4 Nov 2022 23:59:15 +0000 (23:59 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 4 Nov 2022 23:59:15 +0000 (23:59 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
topeak-mtx-tortec-expeditionrack-adapter.scad

index a66207a09c0b2c716b3bc92931dda7d1ba77d0ff..ffb437ada7389abbb2adca65ffa2b615b1b72f75 100644 (file)
@@ -32,6 +32,9 @@ rack_rail_outer_x = -(rack_width_inner/2 + rack_rail_dia);
 grasp_large_r = (rack_rail_dia + grasp_sz)/2;
 grasp_large_x = rack_rail_outer_x + grasp_large_r;
 
+block_x = grasp_large_x + grasp_large_r/2;
+block_y_min = adapt_main_top_y - main_sz_y;
+
 module GraspElevation(){
   hull(){
     translate([ grasp_large_x, adapt_main_top_y - grasp_large_r ])
@@ -46,8 +49,27 @@ module GraspElevation(){
 }
 
 module BlockElevation(){
-  rectfromto([ -rack_width_inner/2, adapt_main_top_y ],
-            [ +rack_width_inner/2, adapt_main_top_y - main_sz_y ]);
+  rectfromto([ +block_x, adapt_main_top_y ],
+            [ -block_x, block_y_min ]);
+}
+
+module GraspFixingElevation(){
+  intersection(){
+    mirror([1,0]) GraspElevation();
+    union(){
+      rectfromto([0, $rack_rail_y],
+                [rack_width_inner, 50]);
+      intersection(){
+       translate([ rack_rail_x, $rack_rail_y ])
+         circle(r = rack_width_inner/2 - rack_rail_x, $fa=1);
+       polygon([ [ 0, 0 ],
+                 [ rack_width_inner/2, 0 ],
+                 [ rack_width_inner/2, $rack_rail_y - rack_rail_dia/2 ],
+                 [ -block_x, block_y_min ],
+                 [ 0, block_y_min ]]);
+      }
+    }
+  }
 }
 
 module Principal(){
@@ -59,7 +81,7 @@ module Principal(){
     linextr(0, main_sz_z){
       GraspElevation();
       BlockElevation();
-      mirror([1,0]) GraspElevation();
+      GraspFixingElevation();
     }
 
     linextr(-10, main_sz_z+10) {