diff --git a/juqs_collar.scad b/juqs_collar.scad index 786b280..8ab2602 100644 --- a/juqs_collar.scad +++ b/juqs_collar.scad @@ -19,11 +19,18 @@ grommet_dist = 6.8; //distance the grommet sits below this component grommet_depth = 6.4; //thickness of grommet (when compressed) pivot_depth = grommet_dist + grommet_depth / 2; -VERSION = "V3.0"; +VERSION = "V3.1"; -hollow(OCTN, throw_types[2][0], shaft_r, pivot_depth); +//hollow(OCTN, throw_types[2][0], shaft_r, pivot_depth); -//juqs(model = OCTN, collar = SHORT, throw_type= throw_types[2], production = true); +juqs(model = OCTN, collar = FULL, throw_type= throw_types[2], production = true); + +/* +color("red") + translate([0,0,-pivot_depth]) + rotate([throw_types[2][0],0,0]) + cylinder(h = 100, r = shaft_r); +*/ module juqs(model = CIR, ver = VERSION, collar = SHORT, throw_type = throw_types[0], shaft_r = shaft_r, pivot_depth = pivot_depth, production = false) { throw = throw_type[0]; @@ -38,10 +45,10 @@ module juqs(model = CIR, ver = VERSION, collar = SHORT, throw_type = throw_types base(b=0); collar(collar_h); if(stepped) - collar(h = collar_h + step_h, r = 23.5 / 2, bevel = production ? 0.5 : undef); + collar(h = collar_h + step_h, r = 23.5 / 2, bevel =0.5); }; - bevels(collar_h + step_h, bevel[0], production ? 0 : bevel[1]) { - hollow(model, throw, shaft_r, pivot_depth); + inner_bevel(collar_h + step_h, bevel[1]) { + hollow(model, throw, shaft_r, pivot_depth, collar_h + step_h, bevel); }; }; if(!production) { @@ -62,31 +69,24 @@ module juqs(model = CIR, ver = VERSION, collar = SHORT, throw_type = throw_types }; }; -module hollow(model = CIR, throw, shaft_r, pivot_depth){ +module hollow(model = CIR, throw, shaft_r, pivot_depth, collar_h, bevel){ translate([0,0,-pivot_depth]){ if(model == CIR) cir_gate(throw, shaft_r); if(model == SQR) - shape_gate(sqr_poly, throw, shaft_r); + shape_gate(sqr_poly, throw, shaft_r, 0, collar_h, pivot_depth, bevel); if(model == OCT) - shape_gate(oct_poly, throw, shaft_r, 0.5); + shape_gate(oct_poly, throw, shaft_r, 0.5, collar_h, pivot_depth, bevel); if(model == OCTR) octr_gate(throw, shaft_r); if(model == OCTN) - shape_gate(octn_poly, throw, shaft_r, 0.5); + shape_gate(octn_poly, throw, shaft_r, 0.5, collar_h, pivot_depth, bevel); if(model == SQRN) qrn_gate(throw, shaft_r); } } -module bevels(collar_height, b_size = 0.8, t_size = 0.8){ - if(b_size > 0) { - translate([0,0,-0.1]) - linear_extrude(b_size + 0.1) - projection(cut = true) - translate([0,0,-b_size]) - children(); - } +module inner_bevel(collar_height, t_size = 0.8){ if(t_size > 0) { translate([0,0,collar_height - t_size]) linear_extrude(height = t_size + 0.1, scale = 1 + 0.125 * (t_size + 0.1)) diff --git a/renders/JUQS-V3.1-OCTN-SN-ISLAND.stl b/renders/JUQS-V3.1-OCTN-SN-ISLAND.stl new file mode 100644 index 0000000..9981f7d Binary files /dev/null and b/renders/JUQS-V3.1-OCTN-SN-ISLAND.stl differ diff --git a/renders/PROD/JUQS-V3.1-OCTN-SN-FULL.stl b/renders/PROD/JUQS-V3.1-OCTN-SN-FULL.stl new file mode 100644 index 0000000..5646aa4 Binary files /dev/null and b/renders/PROD/JUQS-V3.1-OCTN-SN-FULL.stl differ diff --git a/renders/PROD/JUQS-V3.1-OCTN-SN-SHORT.stl b/renders/PROD/JUQS-V3.1-OCTN-SN-SHORT.stl new file mode 100644 index 0000000..fed879d Binary files /dev/null and b/renders/PROD/JUQS-V3.1-OCTN-SN-SHORT.stl differ diff --git a/renders/PROD/JUQS-V3.1-OCTN-SN-STEPPED.stl b/renders/PROD/JUQS-V3.1-OCTN-SN-STEPPED.stl new file mode 100644 index 0000000..8129d9e Binary files /dev/null and b/renders/PROD/JUQS-V3.1-OCTN-SN-STEPPED.stl differ diff --git a/shape_gate.scad b/shape_gate.scad index 49ad4d9..6e4679e 100644 --- a/shape_gate.scad +++ b/shape_gate.scad @@ -1,18 +1,22 @@ $fn = 100; -gate_height = 50; +gate_height = 28; include; include; -module shape_gate (shape, throw, shaft_r, sharpness = 0) { - function throw_travel(throw) = gate_height * tan(throw); - - hull(){ - translate([0,0, -(shaft_r / tan(throw))]) - linear_extrude(0.1) - round_poly(shape, 0, 0, sharpness); - translate([0,0,gate_height]) - linear_extrude(0.00001) - round_poly(shape, shaft_r, throw_travel(throw), sharpness); +module shape_gate (shape, throw, shaft_r, sharpness = 0, collar_h, pivot_depth, bevel) { + function throw_travel(throw, height) = height * tan(throw); + union(){ + translate([0,0, pivot_depth]) + linear_extrude(bevel[0] + 1) + round_poly(shape, shaft_r, throw_travel(throw, pivot_depth + bevel[0]), sharpness); + hull(){ + translate([0,0, pivot_depth + bevel[0]]) + linear_extrude(0.00001) + round_poly(shape, shaft_r, throw_travel(throw, pivot_depth + bevel[0]), sharpness); + translate([0,0,collar_h + pivot_depth - bevel[1]]) + linear_extrude(1) + round_poly(shape, shaft_r, throw_travel(throw, pivot_depth + collar_h - bevel[1]), sharpness); + } } }