3d_print/Sasza/celownik/celownik.scad
2025-06-02 12:25:47 +02:00

56 lines
No EOL
1.5 KiB
OpenSCAD

use <picatinny-rail.scad>
length=35;
barrel_diameter=22.2;
barrel_acurracy=30;
wall_thickness=4;
wall_acurracy=50;
slit_thickness=2;
post_thickness=15;
post_length=15;
picatinny_move=15;
hex_size=4;
screw_size=2;
difference() {
// celownik
union() {
// obejma wokół lufy
cylinder(h=length, d=barrel_diameter + wall_thickness*2, $fn=wall_acurracy);
// na górze picatinny
rotate([90,0,-90]) translate([0,0,picatinny_move])
picatinny_rail(l=length, d=picatinny_move, c=1.5);
// na dole wystające do przykręcenia
translate([barrel_diameter/2, post_thickness*-0.5, 0])
cube([post_length, post_thickness, length]);
}
// lufa, śruby oraz przecięcie
union() {
// lufa karabinu
translate([0,0,-1])
cylinder(h=length+2, d=barrel_diameter, $fn=barrel_acurracy);
// przecięcie
translate([0,(slit_thickness * -0.5),-1])
cube([(post_length+barrel_diameter)*1.1,slit_thickness,length+2]);
// miejsce na śrubę
if (length > 5){
translate([(barrel_diameter + post_length)/2,-slit_thickness*2,length*3/4])
rotate([90,90,0])
union() {
cylinder(r=hex_size, h=post_thickness, $fn=6);
translate([0,0,-post_thickness+1]) cylinder(r=screw_size, h=post_thickness+1);
}
translate([(barrel_diameter + post_length)/2,-slit_thickness*2,length/4])
rotate([90,90,0])
union() {
cylinder(r=hex_size, h=post_thickness, $fn=6);
translate([0,0,-post_thickness+1]) cylinder(r=screw_size, h=post_thickness+1);
}
}
}
}