3d_print/Sasza/Tłumik.scad
2025-10-03 10:57:46 +02:00

97 lines
No EOL
2.2 KiB
OpenSCAD

/*
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 <BOSL2/std.scad>
include <BOSL2/screws.scad>
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);