- module jarc(cx,cy,r,a1=0,a2=tau) {
- astep = (a2-a1)/6;
- size = 5*(r+w/2);
- translate([cx,cy,0]) {
- intersection() {
- difference() {
- circle(r=r+w/2);
- translate([0,0,-1])
- circle(r=r-w/2, h=h+2);
- }
- scale(size,size) {
- for (ai=[0:4]) {
- echo(" jarc ", a1,a2, astep, ai, rads2degs(a1 + astep*ai) );
- rotate(rads2degs(a1 + astep*ai)) {
- polygon([ [0,0], [1,0],
- [cos(rads2degs(astep*2)),sin(rads2degs(astep*2))] ]);
- }
- }
- }
- }
+ module jbox(y,x1,x2) { translate([x1,y-w/2,0]) square(size=[x2-x1, w]); }
+ module jarc(cx,cy,r,a1=0,a2=360) { FlatArc(cx,cy,r-w/2,r+w/2,a1,a2); }
+
+ jcirc(-xc, -yc);
+ jbox(-yc, xc, -xc);
+ jarc(xc, yc, r2, 90, 270);
+ jbox(yc+r2, xc, xd);
+ jarc(xd, yd, r3, 90-alpha, 90);
+ jcirc(xe,ye);
+}
+
+module ClipHook(w=1.2, g=0.2, l=0.0, ye=0, k=2.0, h=3.5, demo=false,
+ cupcaph=0, cupgapg=0) {
+ difference() {
+ linear_extrude(height=h)
+ ClipHook_2D(w,g,l,ye,k);
+ if (cupcapg != 0) {
+ translate([-g+0.01,-(w+g),h-cupcapg])
+ cube([w,(w+g),cupcaph+1]);