3d_print/Sasza/celownik/celownik2.scad
sasza ef3e2edf69 celownik - dodałem tekst z rozmiarem do debugu
przyda się jak będę testował dokładne rozmiary lufy
2025-06-05 09:56:39 +02:00

86 lines
2.5 KiB
OpenSCAD

use <picatinny-rail.scad>
use <Chamfer.scad>
// To jest model celownika do karabinu CZ Varmint
// Koncepcyjnie składa się z 3 części - na górze jest szyna
// Picattiny (rail), na środku jest obejma lufy (clamp), i na dole
// wystaje pałąk do przykręcenia (post)
// parameters
length = 3; // ustaw poniżej 5 do testów wymiarów
c_s = length>5 ? 1 : 0.4; // chamfer_size używane tylko do testów
rail_height = 15;
clamp_inner = 22;
clamp_inner_acurracy = 50;
clamp_thickness = 4;
post_thickness=15;
post_length=20;
post_slit=2;
m3 = [6,3,5.7]; // M3
m2 = [4.3,2,3.3]; // M2
m2_5 = [5.5, 2.5, 4.68]; // M2.5
screw = m2;
hex_size=screw[0]; // rozmiar nakrętki od rogu do rogu
screw_thread=screw[1]; // rozmiar gwintu
screw_head=screw[2]; // rozmiar główki śruby
sink_depth = 3; // jak głęboko w pałąk powinny się wtopić główka oraz nakrętka
difference() {
// celownik
union() {
// obejma wokół lufy
cyl_size = clamp_inner/2 + clamp_thickness;
chamferCylinder(h=length, r=cyl_size, ch=1*c_s, q=1);
// na górze picatinny
if (length > 5) {
rotate([90,0,-90]) translate([0,0,rail_height])
picatinny_rail(l=length, d=rail_height, c=1.5, n=1, a=10);
}
// na dole wystający trzpień do przykręcenia
translate([clamp_inner/2, post_thickness*-0.5, 0])
chamferCube([post_length, post_thickness, length], ch=c_s);
}
// lufa, śruby oraz przecięcie
union() {
// lufa karabinu
translate([0,0,-0.1])
chamferCylinder(h=length+0.2, r=clamp_inner/2, $fn=clamp_inner_acurracy, ch=-c_s);
// przecięcie
translate([clamp_inner/2-0.1,(post_slit * -0.5),-0.1])
cube([(post_length + 0.2),post_slit,length+0.2]);
// miejsce na śrubę
if (length > 5){
for (i = [length*1/4, length*3/4]) {
translate([(clamp_inner + post_length)/2,0,i])
rotate([90,90,0])
union() {
// Miejsce na nakrętkę
translate([0,0,post_thickness/2-sink_depth])
cylinder(r=hex_size, h=sink_depth+0.1, $fn=6);
// dziura na wylot na gwint
translate([0,0,(-post_thickness-0.5)/2])
cylinder(r=screw_thread, h=post_thickness+0.5, $fn=20);
// miejsce na główkę śruby
translate([0,0,(-post_thickness/2)-0.1])
chamferCylinder(r=screw_head, h=sink_depth+0.1, ch=-0.5, ch2=0);
}
}
}
// debug - wyświetl rozmiar
if(length < 5) {
translate([clamp_inner/2 + 2 ,post_thickness/6,length-0.5])
linear_extrude(5) text(str(clamp_inner), 3);
}
}
}