stride_z = hinge_unit*2 + hinge_z_gap*2;
total_z = hinge_units * stride_z - hinge_z_gap;
+min_z = -total_z/2;
+max_z = +total_z/2;
+
pin_flatten = pin_dia/2 * (1 - cos(45));
$fa = 3;
$fs = 0.1;
+module SmoothPlan(){
+ offset(r=-smooth_r) offset(delta=smooth_r) children(0);
+}
+
+module TubePlan(){ circle(r = tube_dia/2); }
+module MainCirclePlan(){ circle(r = tube_dia/2 + th); }
+
+module PlanWeldMainCircle(){
+ intersection(){
+ difference(){
+ SmoothPlan(){
+ union(){
+ MainCirclePlan();
+ children(0);
+ }
+ }
+ TubePlan();
+ }
+ rotate(-135) square(100);
+ }
+}
+
module MainPlan(flatten=false) {
difference(){
- offset(r=-smooth_r) offset(delta=smooth_r)
+ SmoothPlan()
union(){
translate([hinge_x, 0]) circle(r= hinge_o_r);
- circle(r = tube_dia/2 + th);
+ MainCirclePlan();
rectfromto([0, -flats_y],
[max_x, +flats_y]);
}
- circle(r = tube_dia/2);
+ TubePlan();
rectfromto([0, -open_gap/2],
[max_x+1, +open_gap/2]);
translate([hinge_x, 0]) {
}
}
+module VHookPlan() {
+ PlanWeldMainCircle(){
+ rectfromto([ -5, 0 ],
+ [ +5, -60 ]);
+ }
+}
+
module HalfClampX(flatten=false){
difference(){
- translate([0,0, -total_z/2]) {
+ translate([0,0, min_z]) {
linextr(0, total_z) mirror([0,1]) MainPlanB();
for (i=[0 : hinge_units-1]) {
translate([0,0, stride_z*i])
MainPlanB();
MainPlanA();
}
+
+ translate([0, -tube_dia*1.5]) {
+ VHookPlan();
+ }
// translate([max_x - hinge_x + 20, 0]) color("blue") MainPlanA();
}
HalfClampX();
}
+module VHookA(){ ////toplevel
+ DummyA();
+ linextr(min_z, max_z)
+ VHookPlan();
+}
+
module Demo(){ ////toplevel
color("red") rotate([180,0,0]) GeneralB();
color("blue") DummyA();