thickness = 8; // the overall thickness of the sight (the height when laid flat on the ground) sight_diameter = 30; // diameter of the cross hairs sight_thickness = 1.5; // thickness of the walls around the cross hairs sight_offset = 3; // how far the sight is offset above the clip offset_thickness = 4; // thickness of the offset between the clip and crosshairs crosshair_thickness = .4; // thickness of the crosshairs, I wanted to keep this a single nozzle width // thick and my printer's extruder is .4mm in diameter clip_diameter = 17; // clip diameter, slightly smaller than the diameter that it should be clipping to clip_thickness = 1.5; // thickness of the walls of the clip clip_gap = 10; // how wide the opening in the clip is, if you're having trouble attaching the clip to your barrel, make this wider $fa = 1; $fs = 1; union() { difference() { cylinder(h=thickness, r=clip_diameter/2+clip_thickness, center=false); #translate([0,0,-1]) cylinder(h=thickness+2, r=clip_diameter/2, center=false); translate([0,-clip_diameter/2+clip_thickness/2,thickness/2]) { cube([clip_gap, clip_diameter/2, thickness+2], center=true); } } translate([0,clip_diameter/2+(sight_offset+clip_thickness/2+sight_thickness/2)/2,thickness/2]) { cube([offset_thickness, sight_offset+clip_thickness/2+sight_thickness/2, thickness], center=true); } translate([0, clip_diameter/2+clip_thickness+sight_offset+sight_thickness/2+sight_diameter/2, 0]) { union() { difference() { cylinder(h=thickness, r=sight_diameter/2+sight_thickness, center=false); #translate([0,0,-1]) cylinder(h=thickness+2, r=sight_diameter/2, center=false); } translate([0,0,thickness/2]) { union() { cube([crosshair_thickness, sight_diameter+sight_thickness, thickness], center=true); cube([sight_diameter+sight_thickness, crosshair_thickness, thickness], center=true); } } } } }