// -*- C -*- hinge_units = 4; include vhook_th = 10; theta = atan2( smooth_r, main_r ); vhook_inside = 15; // calculated vhook_y0 = -cos(theta) * (main_r + smooth_r); vhook_ctr = vhook_y0 - vhook_inside/2; vhook_outer_dia = vhook_inside + vhook_th*2; //echo(theta); module VHookPlan() { PlanWeldMainCircle(){ rectfromto([ -vhook_th/2, 0 ], [ +vhook_th/2, vhook_y0 ]); } } module VHookProfile() { translate([0, -vhook_inside/2 - vhook_th/2]) circle(r = vhook_th/2); } module PartB(){ ////toplevel GeneralB(); } module VHookHookMain(){ ////toplevel rotate([0,90,0]) rotate_extrude(convexity=10) rotate([0,0,90]) VHookProfile(); } module PartA(){ ////toplevel DummyA(); linextr(min_z, max_z) VHookPlan(); translate([0, vhook_ctr, min_z + vhook_outer_dia/2]){ intersection(){ VHookHookMain(); } } //translate([0, vhook_y0, 50]) rotate([0,0,-90]) color("black") cube(10); // translate([0,0,-150]) rotate([0,0,180 + theta]) color("blue") cube(100); } module PlanDemo(){ ////toplevel GeneralPlanDemo(); translate([0, -tube_dia*1.5]) { VHookPlan(); translate([0, vhook_ctr, 5]) for (m=[0,1]) { mirror([0,m]) color("blue") VHookProfile(); } } }