real_diam = 25.8; real_depth = 40.2; fudge = 0.1; diam = real_diam + fudge; depth = real_depth + fudge; detail = 100; thickness = 3; plate = 80; front = 32; focus = 1.2; module mock_scope(x, y) { cylinder(h = depth + y, d = diam + x, $fn=detail); } module slices() { translate([-diam,-focus/2,0]) cube([diam*2, focus, depth+0.02]); rotate([0,0,90]) translate([-diam,-focus/2,0]) cube([diam*2, focus, depth+0.02]); } module aim_slices() { difference() { slices(); translate([0,0,depth-diam/2]) rotate([0,0,45]) cylinder(h=diam/2+2, d1=diam*3.14159/2, d2=focus*3.14159/2, $fn=4); translate([0,0,1.2]) mock_scope(0.01,-diam/2); } } module mock_scope2(x, y) { difference() { mock_scope(x, y); aim_slices(); } } module billet() { union() { cylinder(h = depth, d = diam + thickness, $fn=detail); cylinder(h = depth/front, d = (diam + thickness)*1.8, $fn=detail); translate([-plate/2,-thickness/2,0]) cube([plate, thickness, depth/front]); rotate([0,0,90]) translate([-plate/2,-thickness/2,0]) cube([plate, thickness, depth/front]); //inner_cut(); } } module product() { difference() { billet(); translate([0,0,-0.01]) mock_scope2(0,thickness*2); }; } product(); //mock_scope2(0,0);