zmiany, celownik v3

This commit is contained in:
sasza 2025-09-16 08:50:00 +02:00
parent 797c8f05f0
commit 635c664e76
12 changed files with 172902 additions and 158399 deletions

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

21
Oliwka/drabinka.scad Normal file
View file

@ -0,0 +1,21 @@
include <BOSL2/std.scad>
wys = 500;
szer = 80;
t = 7.5;
ile=10;
$fn=36;
// paliki
cylinder(h=wys, d=t);
left(szer) cylinder(h=wys, d=t);
// drabinka
for(i=[0:1:ile]) {
up(i*(wys/ile)) yrot(-90) cylinder(d=t, h=szer);
}
// zaokrąglenie rogów
up() left() sphere(d=t);
up() left(szer) sphere(d=t);
up(wys) left() sphere(d=t);
up(wys) left(szer) sphere(d=t);

19
Oliwka/haczyk_gleba.scad Normal file
View file

@ -0,0 +1,19 @@
include <BOSL2/std.scad>
top_height = 10;
top_w = 1;
bottom_height = 25;
width = 7;
t = 2;
$fn=36;
linear_extrude(t) {
stroke([[-width/2,0], [-width/2, -bottom_height]], width=t);
stroke([[width/2,0], [width/2, -bottom_height]], width=t);
yflip() fwd(width/2) stroke(catenary(top_w, droop=top_height), width=t);
difference() {
stroke([circle(d=7)], width=t);
left(50) xrot(180) square([100,100]);
}
}

View file

@ -0,0 +1,28 @@
include <BOSL2/std.scad>
sphere_d = 35;
t = 1.5;
hole_d = 11;
tab_t = 5;
tab_w = 5;
tab_l = 7;
tab_e_w = tab_w + 1;
tab_e_l = 2;
tab_e_r = 1;
cut_t = 0.5;
$fn=360;
difference() {
union() {
sphere(d=sphere_d);
cuboid([sphere_d + 2 * tab_l,tab_t,tab_w], rounding=1);
for(i=[-sphere_d-2*tab_l + 1, sphere_d+2*tab_l - 1]) {
left(i/2) cuboid([tab_e_l,tab_e_w,tab_e_w], rounding=tab_e_r);
}
}
sphere(d=sphere_d-2*t);
cyl(d=hole_d, h=2*sphere_d);
cuboid([sphere_d*3,cut_t,sphere_d*3]);
}

12
Oliwka/patyk.scad Normal file
View file

@ -0,0 +1,12 @@
include <BOSL2/std.scad>
h = 200;
d = 10;
r = 2;
hole_h = 40;
hole_d = 2.1 + 0.25;
difference() {
round3d(r, $fn=20) cyl(h=h, d=d, $fn=4);
up(h/2) cyl(h=hole_h*2, d=hole_d, $fn=36);
up(-h/2) cyl(h=hole_h*2, d=hole_d, $fn=36);
}

View file

@ -0,0 +1,21 @@
include <BOSL2/std.scad>
d_up = 70;
d_down = 60;
t = 2;
h_total = 230;
h_in = 40;
bot_h = 10;
bot_size = d_down + 35;
$fn = 36;
d_mid = d_up - (d_up-d_down) * ((h_in)/h_total);
union() {
down(h_total) cyl(d=bot_size, h=bot_h, rounding1=1, rounding2=5);
difference() {
down(h_total/2) cyl(d2=d_up, d1=d_down, h=h_total, rounding1=10);
down(h_in/2-0.01) cyl(d2=d_up-t, d1=d_mid-t, h=h_in, rounding1=5);
}
}

View file

@ -0,0 +1,122 @@
include <BOSL2/std.scad>
include <BOSL2/screws.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 = 15; // ustaw poniżej 5 do testów wymiarów
clamp_inner = 22.15;
clamp_inner_acurracy = 50;
clamp_thickness = 4;
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_chamfer = 1.665;
nut_wall_t = -0.1;
screw = "M2.5";
info = screw_info(name=screw, head="socket");
hh = struct_val(info, "head_height");
screw_head_h = post_thickness - hh - nut_wall_t;
$slop = 0.1;
top_screw = 3.8;
top_h = 5;
top_w = 6;
top_lock_hole_distance = 4;
top_lock_hole_d = 1.8;
difference() {
// celownik
union() {
// obejma wokół lufy
cyl_size = clamp_inner/2 + clamp_thickness;
cyl(h=length, r=cyl_size, rounding=1*c_s);
// na dole wystający trzpień do przykręcenia
translate([(clamp_inner + post_length)/2, 0, 0])
cuboid([post_length, post_thickness, length], rounding=c_s);
// top front sights
yrot(-90) up((clamp_inner + top_h)/2) union() {
cuboid([length,top_w,top_h], rounding=2);
}
}
// lufa, śruby oraz przecięcie
union() {
// lufa karabinu
cyl(h=length+0.2, r=clamp_inner/2, $fn=clamp_inner_acurracy, rounding=-c_s);
// przecięcie
translate([(clamp_inner+post_length)/2 - 0.1,0,0])
cuboid([post_length + 0.25,post_slit,length+0.2], rounding=-1);
// miejsce na śrubę
if (length > 5){
for (i = [length*-1/4, length*1/4]) {
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);
translate([(clamp_inner + post_length)/2,post_thickness/2 - nut_wall_t,i])
rotate([90,90,0])
nut_trap_inline(spec=screw, h=hh);
}
}
// chamfer for slit
translate([clamp_inner/2 - post_slit/4,0,0]) rotate([0,0,45])
cuboid([post_slit*post_chamfer,post_slit*post_chamfer,length+2]);
// 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);
}
// 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);
}
}
}
// rear sight
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]);
}
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);
// 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);
}
}
// 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(16.5) down(-1.5) cuboid([20,3,3]);
back(16.5) down(4) cuboid([20,3,2]);
}