From d4ad7cb4be184902a107eb888dfe439dc3d257df Mon Sep 17 00:00:00 2001
From: Michael Sippel <micha@fragmental.art>
Date: Tue, 13 Aug 2024 22:40:18 +0200
Subject: [PATCH] initial commit

---
 handlebar_grip.scad | 132 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 132 insertions(+)
 create mode 100644 handlebar_grip.scad

diff --git a/handlebar_grip.scad b/handlebar_grip.scad
new file mode 100644
index 0000000..906801d
--- /dev/null
+++ b/handlebar_grip.scad
@@ -0,0 +1,132 @@
+
+DIAM=22;
+LEN=120;
+THICK=1.35;
+
+module base() {
+    difference() {
+        cylinder(h=LEN, d=DIAM, $fn=64);
+        cylinder(h=LEN+1, d=DIAM-2*THICK, $fn=64);
+    }
+}
+
+module cap() {    
+    // front
+    cylinder(h=3, d=DIAM, $fn=64);
+
+    // hook
+    difference() {
+        union() {
+            cylinder(h=20, d=DIAM-2*THICK-1, $fn=64);
+            
+            for ( y = [0:4] ) {
+                translate([0,0, 5+y*3])
+                hull() {
+                    cylinder(h=0.1, d=DIAM-2*THICK-1, $fn=64);
+                    translate([0,0,1])
+                    cylinder(h=0.1, d=DIAM-2*THICK, $fn=64);
+                }
+            }
+        }
+        cylinder(h=25, d=DIAM-2*THICK-2*2, $fn=64);
+    }
+}
+
+module handle_shape(l=0) {
+   cylinder(h=l, d=DIAM+2*3, $fn=64);
+
+   hull() {
+    translate([0,0,LEN-50])
+    cylinder(h=30, d=DIAM+2*3+5, $fn=64);
+    
+    translate([0,0, l])
+    cylinder(h=LEN+3+8-l, d=DIAM+2*3, $fn=64);
+            
+    translate([30,10,LEN-40])
+    cylinder(d=8, h=40, $fn=64);
+   }
+}
+
+module handle() {
+    difference() {
+        handle_shape();
+
+        translate([0,0,-1]) {
+            for( z = [0:10] ) {
+              translate([0,0,z*(LEN-5)/10]) {
+                  hull() {
+                      cylinder(h=0.1, d=DIAM+1, $fn=64);
+
+                      translate([0,0,(LEN-5)/10])
+                      cylinder(h=0.1, d=DIAM-1, $fn=64);
+                  }
+              }
+            }
+        }
+
+        translate([0,0,LEN+3+5])
+        difference() {
+            cylinder(h=10, d=DIAM-3, $fn=64);
+            
+            translate([0,0,-8])
+            cylinder(h=10, d=DIAM-8, $fn=64);
+        }
+    }
+}
+
+//color([1,0,0])
+//cap();
+
+module hexshape( h0=10 ) {
+translate([0,0,0])
+rotate([90,0,0])
+for( x = [0:5] ) {
+for( y = [0:12] ) {
+    //translate([0, 0.8*(y*y) + 5 * y + 10,0])
+    s0 = 0.5 + (y/24);
+    s = s0*s0;
+    rotate([0, 80-(x*60) * s ,0])
+    translate([0,(x%2)*7+y*10, DIAM/2+0.5])
+    difference() {
+    cylinder(h=h0, d=14*s, $fn=6);
+
+    translate([0,0,-1])
+    cylinder(h=h0+3, d=10*s, $fn=6);
+    }
+    }
+}
+}
+
+
+color([0.8,0.8,0.8])
+difference() {
+    handle();
+    
+    intersection() {
+    hexshape(100);
+        translate([ 0,0, 5 ])
+        cylinder(d=DIAM+100, h=LEN-2);
+    }
+}
+
+
+/*
+color([0.2,0.47,0.8])
+{
+    difference() {
+        translate([0,0,LEN+5])
+        cylinder(d=DIAM, h=5);
+        handle();
+    }
+intersection() {
+    hexshape(100);
+    
+    scale([0.95, 0.95, 1])
+    handle_shape();
+    
+    translate([ 0,0, 5 ])
+    cylinder(d=DIAM+1000, h=LEN-2);
+}
+}
+
+*/
\ No newline at end of file