use use // 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); } } }