From 446164021b50cfca27ed333bb55d4575a1275c8b Mon Sep 17 00:00:00 2001 From: Sasza Stanczew Date: Mon, 22 Sep 2025 09:36:25 +0200 Subject: [PATCH] =?UTF-8?q?Palik=20Oliwki,=20i=20nowy=20celownik=20na=20lu?= =?UTF-8?q?net=C4=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Oliwka/palik2.scad | 6 +-- Oliwka/palik3.scad | 73 +++++++++++++++++++++++++++++++++ Sasza/celownik/celownik2.scad | 2 +- Sasza/celownik/celownik3.scad | 77 +++++++++++++++++++++++------------ 4 files changed, 129 insertions(+), 29 deletions(-) create mode 100644 Oliwka/palik3.scad diff --git a/Oliwka/palik2.scad b/Oliwka/palik2.scad index 0ebd18e..4b22deb 100644 --- a/Oliwka/palik2.scad +++ b/Oliwka/palik2.scad @@ -21,11 +21,11 @@ dz_ile_kw = 3; dz_ile_kol = 1; dz_t = 3; -module column_hex(ile_h, ile_d, size, h, angle) { +module column_hex(ile_h, ile_d, size, h, angle, d) { for(i=[0:ile_h]) { translate([0,0,i*h]) rotate([0,0,i*(360/ile_d/2)]) union() { for (j=[0:360/ile_d:360]) { - rotate([angle,30,j]) cylinder(d=size, $fn=6, h=100); + rotate([angle,30,j]) cylinder(d1=0, d2=size, $fn=6, h=d/2); } } } @@ -42,7 +42,7 @@ union() { difference() { cylinder(d=palik_d, h=palik_h, $fn=360); down(0.1) cylinder(d=palik_d-2*t, h=palik_h+0.2, $fn=360); - up(tab[2]/2) column_hex(tab[0],tab[1],tab[2],tab[3],tab[4]); + up(tab[2]/2) column_hex(tab[0],tab[1],tab[2],tab[3],tab[4], palik_d); } // cienszy element do łączenia rotate([0,180,0]) difference() { diff --git a/Oliwka/palik3.scad b/Oliwka/palik3.scad new file mode 100644 index 0000000..8d02de1 --- /dev/null +++ b/Oliwka/palik3.scad @@ -0,0 +1,73 @@ +include + +h = 240; +bot_h = 110; +d = 70; +t = 2; +conn_h = 10; + +conn_slop = 0.25; + +hex_size = 15; +hex_t = 1.5; + +$fn = 360; + +module column_hex(w, h, hex_size, t) { + fwd(50) for(i=[0:1:h/(hex_size+t)]) { + up(i*(hex_size+t)) left(i%2 * (hex_size+t)/2) union() { + for (j=[-w:hex_size+t:w]) { + right(j) rotate([270,90,0]) cylinder(d=hex_size, $fn=6, h=100); + } + } + } +} + +union() { + difference() { + cyl(d=d, h=h); + difference() { + cyl(d=d-t*2, h=h+0.1); + down(h/2 - bot_h) difference() { + cyl(d=d, h=t); + xrot(90) up(hex_size/4) column_hex(d,d/2,hex_size/2, hex_t); + } + } + left(d/2+0.1) down(h/2+0.1) back(t/2) cube([d+1, d+1, h+1]); + } + + difference() { + cuboid([d,t,h]); + down(h - bot_h) cuboid([d+1,t+1,h]); + down(h/2 - bot_h) column_hex(d,h-bot_h-1,hex_size,hex_t); + } +} + +left(d*2) union() { + difference() { + cyl(d=d, h=h); + cyl(d=d-t*2, h=h+0.1); + left(d/2+0.1) down(h/2+0.1) back(t/2) cube([d+1, d+1, h+1]); + } + + difference() { + cuboid([d,t,h]); + //down(h - bot_h) cuboid([d+1,t+1,h]); + down(h/2) column_hex(d,h-1,hex_size,hex_t); + } + + down(h/2) difference() { + union() { + cyl(d=d-t*2 - conn_slop, h=conn_h*2); + up(conn_h/2) cyl(d=d-t*2, h=conn_h); + up(conn_h/2) cuboid([d,t,conn_h]); + } + difference() { + cyl(d=d-t*4, h=conn_h*2 + 1); + fwd(t) cuboid([d,t,conn_h]*2); + } + left(d/2+0.1) down(h+0.1) fwd(t/2 + conn_slop) cube([d+1, d+1, h*2+1]); + } + down(h/2) up(conn_h/2) fwd(t/2) cuboid([d,t*2,conn_h]); + +} \ No newline at end of file diff --git a/Sasza/celownik/celownik2.scad b/Sasza/celownik/celownik2.scad index 4d0a34a..2247892 100644 --- a/Sasza/celownik/celownik2.scad +++ b/Sasza/celownik/celownik2.scad @@ -10,7 +10,7 @@ include // wystaje pałąk do przykręcenia (post) // parameters -length = 26; // ustaw poniżej 5 do testów wymiarów +length = 4; // ustaw poniżej 5 do testów wymiarów clamp_inner = 22.15; clamp_inner_acurracy = 50; diff --git a/Sasza/celownik/celownik3.scad b/Sasza/celownik/celownik3.scad index 3e5a060..dedf74d 100644 --- a/Sasza/celownik/celownik3.scad +++ b/Sasza/celownik/celownik3.scad @@ -8,21 +8,21 @@ include // wystaje pałąk do przykręcenia (post) // parameters -length = 15; // ustaw poniżej 5 do testów wymiarów +length = 9; // ustaw poniżej 5 do testów wymiarów -clamp_inner = 22.15; -clamp_inner_acurracy = 50; -clamp_thickness = 4; +clamp_inner = 22.1; +clamp_inner_acurracy = 90; +clamp_thickness = 2; c_s = length>5 ? 1 : 0.4; // chamfer_size używane tylko do testów rail_height = -9.4 + clamp_inner/2 + 6.8; // -9.4 is to center the picatinny -post_thickness=15; -post_length=10; -post_slit=2; +post_thickness=7; +post_length=9; +post_slit=1; post_chamfer = 1.665; -nut_wall_t = -0.1; +nut_wall_t = -1.5; screw = "M2.5"; info = screw_info(name=screw, head="socket"); @@ -31,12 +31,15 @@ screw_head_h = post_thickness - hh - nut_wall_t; $slop = 0.1; -top_screw = 3.8; +top_screw = 3.9; top_h = 5; top_w = 6; top_lock_hole_distance = 4; top_lock_hole_d = 1.8; +quality = 1; +$fn=36*quality; + difference() { // celownik @@ -51,7 +54,7 @@ difference() { // top front sights yrot(-90) up((clamp_inner + top_h)/2) union() { - cuboid([length,top_w,top_h], rounding=2); + cuboid([length,top_w,top_h], rounding=2, edges=TOP); } } @@ -66,10 +69,11 @@ difference() { // miejsce na śrubę if (length > 5){ - for (i = [length*-1/4, length*1/4]) { + tab = length>12?[length*-1/4, length*1/4]:[0]; + for (i = tab) { translate([(clamp_inner + post_length)/2,0,i]) rotate([90,90,0]) - screw_hole(spec=screw, length=screw_head_h, head="socket", thread=0, $fn=100); + screw_hole(spec=screw, length=screw_head_h, head="socket", thread=0, $fn=120); translate([(clamp_inner + post_length)/2,post_thickness/2 - nut_wall_t,i]) rotate([90,90,0]) nut_trap_inline(spec=screw, h=hh); @@ -82,8 +86,12 @@ difference() { // top front sights yrot(-90) up((clamp_inner + top_h)/2 - 0.2) union() { - left(top_lock_hole_distance/2) cyl(h=top_h + 1, d=top_lock_hole_d, $fn=12); - right(top_lock_hole_distance/2) cyl(d=top_screw, length=top_h + 1, $fn=12); + if(length>12) { + left(top_lock_hole_distance/2) cyl(h=top_h + 1, d=top_lock_hole_d, $fn=12*quality); + right(top_lock_hole_distance/2) cyl(d=top_screw, length=top_h + 1, $fn=12*quality); + } else { + cyl(d=top_screw, length=top_h + 1, $fn=12*quality); + } } // debug - wyświetl rozmiar @@ -95,27 +103,46 @@ difference() { } // rear sight +r_clamp_width = 20; +r_clamp_th = 3.4; +r_clamp_t = 1.5; +r_clamp_l = 16; +r_clamp_h = 10; +r_clamp_w = r_clamp_th + 2*r_clamp_t; + +r_clamp_hole_pos = 2.8; +r_clamp_hole_d = 4.7; + +r_sight_pos = 12; +r_sight_pos_h = 0.5; +r_sight_screw_d1 = 3.7; +r_sight_screw_d2 = 5.4; +r_sight_screw_head_d = 9.5; + back(50) union() { // slits to hold onto optic mount difference() { union() { - left(10) cuboid([5.4,16,10]); - right(10) cuboid([5.4, 16, 10]); + left(r_clamp_width/2) cuboid([r_clamp_w,r_clamp_l,r_clamp_h]); + right(r_clamp_width/2) cuboid([r_clamp_w, r_clamp_l, r_clamp_h]); } union() { - left(10) fwd(2.1) cuboid([3.4, 12, 11]); - right(10) fwd(2.1) cuboid([3.4, 12, 11]); - fwd(2.7) yrot(90) cyl(d=4.5, h=100, $fn=12); + left(r_clamp_width/2) fwd(r_clamp_t*2) + cuboid([r_clamp_th, r_clamp_l, r_clamp_h+1]); + right(r_clamp_width/2) fwd(r_clamp_t*2) + cuboid([r_clamp_th, r_clamp_l, r_clamp_h+1]); + fwd(r_clamp_hole_pos) yrot(90) cyl(d=r_clamp_hole_d, h=100, $fn=36*quality); // hole for screw head for peepsight screw - back(12) down(1.5) yrot(90) fwd(1) up(-50) cyl(d=9, h=100, $fn=36); + back(r_sight_pos) down(r_sight_pos_h) yrot(90) fwd(1) up(-50) + cyl(d=r_sight_screw_head_d, h=100, $fn=36*quality); } } // rear part for sight - back(12) down(0.5) difference() { - down(0.5) cuboid([20,12,8]); - down(0.5) cuboid([15, 12.1, 8.1]); - yrot(90) fwd(1) up(50) cyl(d=3.7, h=100, $fn=12); - yrot(90) fwd(1) up(-50) cyl(d=5.4, h=100, $fn=12); + back(r_sight_pos) down(r_sight_pos_h) difference() { + down(r_sight_pos_h) cuboid([20,12,8]); + down(r_sight_pos_h) cuboid([15, 12.1, 8.1]); + yrot(90) fwd(1) up(50) cyl(d=r_sight_screw_d1, h=100, $fn=12*quality); + yrot(90) fwd(1) up(-50) cyl(d=r_sight_screw_d2, h=100, $fn=12*quality); } back(16.5) down(-1.5) cuboid([20,3,3]); back(16.5) down(4) cuboid([20,3,2]);