+ scale(slop/torch_lit_dia + 1.0)
+ TorchOrig();
+}
+
+module ScrewHole(y, rot) {
+ translate([0,0, above -y]){
+ rotate([0,rot,0]){
+ hull(){
+ for (d= [-1,+1] * hole_slot/2) {
+ translate([d,0,0])
+ rotate([90,0,0])
+ translate([0,0,-stem_thick*2])
+ cylinder(r= hole_dia/2, h= stem_thick*4);
+ }
+ }
+ }
+ }
+}
+
+module TorchMovement(){
+ translate([0, -torch_out, 0]) {
+ translate([0, 0, -torch_recess])
+ Torch();
+ for (as=[-1,+1]) {
+ rotate([0,0, as*movement_extra_angle])
+ rotate([90,0,0])
+ linear_extrude(height= block_out)
+ projection() rotate([-90,0,0]) Torch();
+ }
+ }
+}
+
+module Bracket(){ ////toplevel
+ cid_w = stem_width * .75;
+ hole_near = hole_slot + hole_dia;
+
+ difference(){
+ mirror([0,1,0]) {
+ translate([-stem_width/2, 0, -stem_len])
+ cube([stem_width, stem_thick, stem_len]);
+ translate([0,0, -block_thick]) hull(){
+ translate([-stem_width/2, 0, -brace[2]])
+ cube([stem_width, stem_thick, 1]);
+ translate([-brace[0]/2, 0, 0])
+ cube([brace[0], brace[1], 1]);
+ }
+ }
+ ScrewHole(holes[0], 90);
+ ScrewHole(holes[1], 0);
+ translate([-cid_w/2, 0, above - holes[0] - hole_near])
+ rotate([-90,0,0])
+ scale([miniature, miniature, 1])
+ Commitid_BestCount([cid_w, holes[1]-holes[0] - hole_near*2]
+ / miniature);
+ }
+ difference(){
+ mirror([0,1,0])
+ translate([-block_width/2, 0, -block_thick])
+ cube([block_width, block_out, block_thick]);
+ TorchMovement();
+ }
+}
+
+module BracketPrint(){ ////toplevel
+ scale(1/miniature)
+ rotate([-90,0,0])
+ Bracket();
+}
+
+module TestTorchPrint(){ ////toplevel
+ scale(1/miniature)
+ intersection(){
+ translate([0,0, torch_lit_dia / 2 / sqrt(2)])
+ rotate([-90,0,0])
+ Torch();
+ translate([-100, -torch_tot_len*2, 0])
+ cube([200, torch_tot_len*4, 200]);