diff --git a/Sasza/Tłumik.scad b/Sasza/Tłumik.scad new file mode 100644 index 0000000..9811614 --- /dev/null +++ b/Sasza/Tłumik.scad @@ -0,0 +1,97 @@ +/* + + Silencer + Inspired by the QuickCan Parametric Printable Silencer Tool + quickcan.scad by Hillary Izabych. I couldn't find her or any + way to contact her, and her project had no license. + + I modified the silencer to print a threaded portion to screw onto + barrel threads instead of as a muzzle brake slip-on device. + + The thread should ensure better fitment and alignment, lessening + the possibility of baffle strikes, and of course better ease of use. + +*/ + +include +include + +test = 0; // 1 for exploded view +$fn=36; + +// overall dimensions +len = 200; +out_d = 22; +t = 2; +bullet_hole = 6; // for .22lr 5.6mm + some spare + +// threaded portion +th_len = 20; +th_spec = str("1/2-20,", th_len/10); // change to your barrel thread spec +$slop = 0.15; // For my printer, no slop results in an extremely tight thread. + +// baffles +baf_dist = 0; +baf_h_num = 6; +baf_h_d1 = 2; +baf_h_d2 = 2.6; + + +// Do not modify - internal calculations +in_d = out_d - 2*t; +baf_len = len - th_len; + +module body() { + difference() { + cyl(d=out_d, h=len); + cyl(d=in_d, h=len+0.1); + } +} + +module baffle() { + difference() { + cyl(d1=out_d, d2=0, h=out_d/2); + down(t*sqrt(2)) cyl(d1=out_d, d2=0, h=out_d/2); + // holes + for(i=[0:baf_h_num]) { + zrot(60*i) left(in_d*3/7) cyl(d=baf_h_d1, h=len); + zrot(60*i + 30) left(in_d*3/10) cyl(d=baf_h_d2, h=len); + } + } +} + +module baffles() { + difference() { + down(baf_len/2) for(i=[0:out_d/2 + baf_dist:baf_len-out_d]) { + up(i) baffle(); + } + // hole for bullet + cyl(d=bullet_hole, h=len); + } +} + +module cap() { + down(len/2) difference() { + cyl(d=out_d, h=t); + cyl(d=bullet_hole, h=t+1); + } +} + +module thread() { + up(len/2 - th_len/2) difference() { + cyl(h=th_len, d=out_d); + up(th_len/2 - 1) + screw_hole(th_spec, thread=true, head="flat small", anchor="head_bot"); + cyl(h=out_d, d1=out_d, d2=0); + } +} + +module silencer() { + left(test*(out_d+5)) body(); + baffles(); + right(test*(out_d+5)) cap(); + right(test*(out_d+5)) thread(); +} + +silencer(); +echo(th_spec); \ No newline at end of file