hhook_th = 4;
hhook_l = 40;
+// ---------- linear bracket ----------
+
+linear_bracket_h = 50;
+linear_bracket_l = 100;
+linear_bracket_t = 15;
+linear_bracket_hole_offset = 20;
+linear_bracket_hole_dia = 5 + 1.00;
+
// ========== defaults ==========
pin_head_th = th/2;
}
}
-module HalfClampX(flatten=false){
- difference(){
- 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])
- linextr(0, hinge_unit) MainPlanA(flatten);
- }
+module HalfClampXPositive(flatten=false){
+ 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])
+ linextr(0, hinge_unit) MainPlanA(flatten);
}
- for (j=[0:nbolts-1]) {
- translate([ bolt_x, 0, min_z + (j + 0.5) * bolt_stride ]) {
- translate([0, -tube_dia/2, 0])
- rotate([-90,0,0])
- cylinder(r= bolt_hole_r, h= tube_dia);
- translate([0, -flats_y, 0])
- rotate([90,0,0])
- cylinder(r= bolt_flat/2, h= tube_dia/2);
- }
+ }
+}
+
+module HalfClampXNegative(){
+ for (j=[0:nbolts-1]) {
+ translate([ bolt_x, 0, min_z + (j + 0.5) * bolt_stride ]) {
+ translate([0, -tube_dia/2, 0])
+ rotate([-90,0,0])
+ cylinder(r= bolt_hole_r, h= tube_dia);
+ translate([0, -flats_y, 0])
+ rotate([90,0,0])
+ cylinder(r= bolt_flat/2, h= tube_dia/2);
}
}
}
+module HalfClampX(flatten=false){
+ difference(){
+ HalfClampXPositive(flatten);
+ HalfClampXNegative();
+ }
+}
+
// ---------- vhook ----------
module VHookProfile() {
HHookHookPlan();
}
+// ---------- linear bracket ----------
+
+module LinearBracketA(){ ////toplevel
+ difference(){
+ union(){
+ HalfClampXPositive();
+ mirror([1,0,0])
+ linextr_y_xz(-open_gap/2 - linear_bracket_t, -open_gap/2)
+ rectfromto([0, min_z],
+ [max_x + linear_bracket_l, min_z + linear_bracket_h]);
+ }
+ HalfClampXNegative();
+ linextr(-1000,1000)
+ TubePlan();
+ mirror([1,0,0])
+ linextr_y_xz(-100,100) {
+ for (t = [
+ [1,1] * linear_bracket_hole_offset,
+ -[1,1] * linear_bracket_hole_offset +
+ [linear_bracket_l, linear_bracket_h]
+ ]) {
+ translate([ max_x, min_z ] + t)
+ circle(r= linear_bracket_hole_dia/2);
+ }
+ }
+ }
+}
+
// ---------- misc ----------
module PinSitu(){ ////toplevel