diff --git a/Dom/Wiedzmin_stary_swiat/na_karty.scad b/Dom/Wiedzmin_stary_swiat/na_karty.scad index 4a16656..3966526 100644 --- a/Dom/Wiedzmin_stary_swiat/na_karty.scad +++ b/Dom/Wiedzmin_stary_swiat/na_karty.scad @@ -3,56 +3,84 @@ include // EDITABLE VARIABLES $fn = 36; +$slop = 1; +t = 2; +wing_h = 0.8; + +// rozmiar karty +karta = [65,100]; + +// Tablica o wartościach: // [wysokość pliku kart, "tekst", rozmiar tekstu], tab = [ [35, "Karty Akcji", 10], - [19, "Karty Akcji postaci", 8], + [18, "Karty Akcji postaci", 8], // [4, "Atrybuty", 10], // za małe - [14, "Eksploracja Miasta", 8], - [14, "Eksploracja Dziczy", 8], - [21, "Zdarzenia", 10], + [13, "Eksploracja Miasta", 8], + [13, "Eksploracja Dziczy", 8], + [20, "Zdarzenia", 10], [11, "Eliksiry", 10], - [7.5 + 4 + 6, "Trofea szkół + Atrybuty + INNE", 5], + [7.5 + 3 + 5.5, "Trofea szkół + Atrybuty + INNE", 5], [18, "Potwory i ataki", 10] // [6, "INNE", 10] ]; -// rozmiar karty -card = [65,100]; -t = 2; - // END OF EDITABLE VARIABLES +card = [karta[0]+2*$slop, karta[1]+2*$slop]; out = [card[0]+2*t, card[1]+2*t]; -module box(h,txt, txt_size) { +module box(h_in,txt, txt_size) { + h = h_in + 2*t; // bottom box difference() { // main body cuboid([each out, h],anchor=BOTTOM, rounding=t/2); - text3d(txt, h=t, orient=DOWN, center=true, spin=90, size=txt_size); + // text + right(card[0]/2 - txt_size) text3d(txt, h=t/4, orient=DOWN, anchor=TOP, center=true, spin=90, size=txt_size); + up(t) right(card[0]/2 - txt_size) text3d(txt, h=t/4, orient=UP, anchor=TOP, center=true, spin=90, size=txt_size); + // hole in the bottom + left(txt_size/2) cuboid([out[0]/2 - txt_size,out[1]/2,t], chamfer=-t/4, anchor=BOTTOM); // hole for cards - up(t) cuboid([each card, h-t], anchor=BOTTOM); + up(t) cuboid([each card, h-t], anchor=BOTTOM, rounding=-t/2, edges=TOP); // cutouts - up(t) cuboid([card[0]/2 + t, card[1]*2, h-t], anchor=BOTTOM, rounding=-t, edges=TOP); - up(t) cuboid([card[0]*2, card[1]/2 + t, h-t], anchor=BOTTOM, rounding=-t, edges=TOP); + difference() { + union() { + cuboid([card[0]/2 + t, card[1]*2, h], anchor=BOTTOM, rounding=-t, edges=TOP); + cuboid([card[0]*2, card[1]/2 + t, h], anchor=BOTTOM, rounding=-t, edges=TOP); + } + cuboid([card[0]-$slop*2, card[1]-$slop*2, t], anchor=BOTTOM); + } + } + // top cover - fwd(out[1] + 10) + fwd(out[1] + 2) union() { // cover difference() { - cuboid([each out, t],anchor=BOTTOM, rounding=t/2); - text3d(txt, h=t, orient=DOWN, center=true, spin=90, size=txt_size); + cuboid([each out, t], anchor=BOTTOM, rounding=t/2); + // text + right(card[0]/2 - txt_size) down(0.1) text3d(txt, h=t/4, orient=DOWN, anchor=TOP, center=true, spin=90, size=txt_size); + right(card[0]/2 - txt_size) up(t+0.1) text3d(txt, h=t/4, orient=UP, anchor=TOP, center=true, spin=90, size=txt_size); + // hole in the top + down(0.01) left(txt_size/2) cuboid([out[0]/2 - txt_size,out[1]/2,t + 0.02], chamfer=-t/4, anchor=BOTTOM); + + } + // corners + up(t) difference() { + cuboid([card[0]+t, card[1]+t, t],anchor=BOTTOM, chamfer=t, edges=TOP); + cuboid([card[0], card[1], 4*t]); + cuboid([out[0]*3/4, out[1], 4*t]); + cuboid([out[0], out[1]*3/4, 4*t]); } - up(t/2) cuboid([each card, t],anchor=BOTTOM, chamfer=t/2); // side wings - left(out[0]/2 - t/2) cuboid([t,card[1]/2,h/2], anchor=BOTTOM, rounding=t/2); - right(out[0]/2 - t/2) cuboid([t,card[1]/2,h/2], anchor=BOTTOM, rounding=t/2); + left(out[0]/2 - t/2) cuboid([t,card[1]/2,h*wing_h], anchor=BOTTOM, rounding=t/2); + right(out[0]/2 - t/2) cuboid([t,card[1]/2,h*wing_h], anchor=BOTTOM, rounding=t/2); - fwd(out[1]/2 - t/2) cuboid([card[0]/2,t,h/2], anchor=BOTTOM, rounding=t/2); - back(out[1]/2 - t/2) cuboid([card[0]/2,t,h/2], anchor=BOTTOM, rounding=t/2); + fwd(out[1]/2 - t/2) cuboid([card[0]/2,t,h*wing_h], anchor=BOTTOM, rounding=t/2); + back(out[1]/2 - t/2) cuboid([card[0]/2,t,h*wing_h], anchor=BOTTOM, rounding=t/2); } } diff --git a/Neptune4/camera_mount.scad b/Neptune4/camera_mount.scad new file mode 100644 index 0000000..d31f579 --- /dev/null +++ b/Neptune4/camera_mount.scad @@ -0,0 +1,79 @@ +include +include + +t = 2; +t2 = 4; +$fn = 36; + +// connection to the camera +cam_out_width = 25; +cam_width = 15; +cam_hex = "M3"; +cam_head_d = 5.5; +cam_screw_l = 23.5; +cam_hole_d = 4; +cam_clearance = 3; + +// connection between parts +conn_clearance = 0.2; +conn_cam_distance = 25; +conn_wall_distance = 23; +conn_screw_d = 6; + +// wall mount +mount_h = 20; +mount_screw_d = 5; +mount_bror_dist = 17; +mount_bror_width = 5; + + +// NOT EDIT: helper functions +cam_out_width2 = (cam_out_width - cam_width)/2; +h = cam_hole_d + 2*t; + +// connection to the camera +yrot(90) difference() { + // body + union() { + cyl(h=cam_out_width, d=h); + cuboid([h,h,cam_out_width], anchor=FWD); + } + // cutout from the middle + cyl(h=cam_width, d=h + cam_clearance); + // hole for the screw + cyl(h=cam_out_width+t, d=cam_hole_d); + // hole for the screw heads: hex and round + up(cam_screw_l/2) cyl(d=cam_head_d, h=cam_out_width2, anchor=BOTTOM); + down(cam_screw_l/2) nut(spec=cam_hex, thickness=cam_out_width2, anchor=TOP); +} + +// connection between parts +back(conn_cam_distance) difference() { + // main body + union() { + cyl(h=h, d=cam_out_width); + up(h/2) cuboid([cam_out_width,conn_cam_distance - h,h/2-conn_clearance], anchor=TOP+BACK); + down(h/2) cuboid([cam_out_width,conn_wall_distance - t,h/2-conn_clearance], anchor=BOTTOM+FWD); + } + // slit in the middle + cyl(h=conn_clearance, d=cam_out_width*2); + // hole for screw + cyl(h=h, d=conn_screw_d); +} + +// wall mount +back(conn_cam_distance + conn_wall_distance) difference() { + union() { + // bottom chamfer + down(conn_clearance) cuboid([cam_out_width,t2,2*t], anchor=BOTTOM+BACK, rounding=-2*t, edges=BOTTOM+FWD); + // wall mount body + down(h/2) cuboid([cam_out_width,t2,mount_h+h/2],anchor=BOTTOM+BACK, rounding=cam_out_width/2, edges=[TOP+LEFT, TOP+RIGHT]); + } + // hole for screw + up(mount_h/2 - t) xrot(90) cyl(h=t2, d=mount_screw_d, anchor=BOTTOM, chamfer2=-1); + // holes for Ikea BROR mount + up(mount_screw_d) left(mount_bror_dist/2) + fwd(t2/2) wedge([mount_h,mount_bror_width,mount_bror_width], anchor=TOP+FWD, orient=LEFT); + up(mount_screw_d) yrot(180) fwd(t2/2) left(mount_bror_dist/2) wedge([mount_h,mount_bror_width,mount_bror_width], anchor=TOP+FWD, orient=LEFT); + +} \ No newline at end of file diff --git a/Neptune4/filament_detector_head_holder.scad b/Neptune4/filament_detector_head_holder.scad new file mode 100644 index 0000000..51ba475 --- /dev/null +++ b/Neptune4/filament_detector_head_holder.scad @@ -0,0 +1,60 @@ +include + +head_dist = 54; +head_pin_dist = 5; +head_spacing = 9; // distance from upright +head_d = 3.5; +head_pin_d = 1.2; +head_pin_h = 0.75; + +$fn = 72; + +bottom = [7,16,3]; +upright = [7,4,30]; +conn_up = 50; +connector = [12,4,12]; +det_hole = 6; + +// connection to print head +module conn() { +difference() { + union() { + // bottom + cuboid(bottom, anchor=BOTTOM+BACK, chamfer=0.4); + // pin + fwd(head_spacing + head_pin_dist) cyl(d=head_pin_d, h=head_pin_h, anchor=TOP, chamfer1=0.2); + } + // hole for screw + fwd(head_spacing) cyl(d=head_d, h=bottom[2], anchor=BOTTOM, chamfer=-0.2); +} +} + +left(head_dist/2) conn(); +right(head_dist/2) conn(); + +// upright to hold detector +difference() { + union() { + // uprights + left(head_dist/2) cuboid(upright, chamfer=0.4, anchor=BOTTOM); + right(head_dist/2) cuboid(upright, chamfer=0.4, anchor=BOTTOM); + // bottom rounding for strength + left(head_dist/2) up(bottom[2]) + cuboid([upright[0]-0.8,upright[1],upright[1]], chamfer=-4, edges=BOTTOM+FWD, anchor=BOTTOM); + right(head_dist/2) up(bottom[2]) + cuboid([upright[0]-0.8,upright[1],upright[1]], chamfer=-4, edges=BOTTOM+FWD, anchor=BOTTOM); + // upper portion + chain_hull() { + left(head_dist/2) up(upright[2] - upright[1]/2) + cuboid([upright[0], upright[1], upright[1]], chamfer=0.4); + up(conn_up) cuboid(connector); + right(head_dist/2) up(upright[2] - upright[1]/2) + cuboid([upright[0], upright[1], upright[1]], chamfer=0.4); + } + } + // hole for screw for the detector + up(conn_up - det_hole/4) xrot(90) cyl(h=connector[1], d=det_hole, rounding=-0.2); +} + +// mock filament detector +// up(conn_up) fwd(15) cuboid([41,17,36]); \ No newline at end of file diff --git a/Neptune4/filament_guide_printer_top.scad b/Neptune4/filament_guide_printer_top.scad new file mode 100644 index 0000000..028816a --- /dev/null +++ b/Neptune4/filament_guide_printer_top.scad @@ -0,0 +1,34 @@ +include + +$fn = 36*5; +t = 5; +rounding = 1; + +// base to connect to the printer +base_hole_distance = 40; +base_frame_hole_d = 4.5; +base_dim = [61,23,12]; + +difference() { + // base + cuboid(base_dim, rounding=rounding); + // holes for screws + left(base_hole_distance/2) cyl(d=base_frame_hole_d, h=base_dim[2], chamfer=-1); + right(base_hole_distance/2) cyl(d=base_frame_hole_d, h=base_dim[2], chamfer=-1); +} + +// PTFE tube holder +tube_dist = 15; +tube_d0 = 2.5; +tube_d1 = 4.2; +tube_d2 = 6; +tube_h = base_dim[2]; + +difference() { + union() { + fwd(base_dim[1]/2 - 2*rounding) cuboid([tube_d2, tube_dist + 2*rounding, tube_h], anchor=BACK, rounding=rounding, edges="Y"); + fwd(base_dim[1]/2 + tube_dist) cyl(d=tube_d2, h=tube_h); + } + fwd(base_dim[1]/2 + tube_dist) cyl(d=tube_d0, h=tube_h, rounding=-rounding); + fwd(base_dim[1]/2 + tube_dist) cyl(d=tube_d1, h=tube_h, anchor=BOTTOM); +} \ No newline at end of file diff --git a/Oliwka/pierscien.scad b/Oliwka/pierscien.scad index 3ca2d26..0ce8530 100644 --- a/Oliwka/pierscien.scad +++ b/Oliwka/pierscien.scad @@ -1,14 +1,18 @@ include include -t=7.5; -d = 80; -h = 100; +t=10; +d = 140; +h = 200; +cut_h = 60; +cut_h_in = 50; +cut_d = 2.9; conn = 0; tr = 4; // trytytka szer tr_d = 1; $fn = 360; +$slop = 0.5; difference() { torus(d_maj=d, d_min=t); @@ -21,14 +25,24 @@ difference() { // down(conn/2) cuboid([t*2,conn,conn]); // xrot(90) tube(h=tr, id=t-tr_d, wall=t, rounding=0.3); // } - left(d/2) xrot(-90) rabbit_clip("female", t/2,t/2,0.5, 0.4,1, lock=true); + left(d/2) xrot(-90) rabbit_clip("female", t/2,t/2,0.5, 0.4,t/4 + $slop, lock=true); } -right(d/2) xrot(-90) rabbit_clip("male", t/2,t/2,0.5, 0.4,1, lock=true); +right(d/2) xrot(-90) rabbit_clip("male", t/2,t/2,0.5, 0.4,t/4, lock=true); for(i = [0:1] ) { zrot(90*i + 45) left(d/2) union() { - cyl(h=h, d=t, anchor=BOTTOM); + difference() { + cyl(h=h, d=t, anchor=BOTTOM); + for(i = [cut_h:cut_h:h]) { + up(i) union() { + cyl(h=1, d=t*2); + cyl(h=cut_h_in, d=cut_d); + cyl(h=cut_d, d1=cut_d*2, d2=cut_d, anchor=BOTTOM); + cyl(h=cut_d, d2=cut_d*2, d1=cut_d, anchor=TOP); + } + } + } up(h) cyl(h=t*2, d1=t, d2=0, anchor=BOTTOM); } } \ No newline at end of file diff --git a/Sasza/bron/cz457/Tłumik.scad b/Sasza/bron/cz457/Tłumik.scad index ed1ee44..8e8aefb 100644 --- a/Sasza/bron/cz457/Tłumik.scad +++ b/Sasza/bron/cz457/Tłumik.scad @@ -20,17 +20,21 @@ test = 0; // 1 for exploded view $fn=36*5; // overall dimensions -len = 220; +len = 230; out_d = 22; -t = 2; +t = 2.5; bullet_hole_1 = 6.5; // for .22lr 5.6mm + some spare -bullet_hole_2 = 8.5; // for .22lr 5.6mm + some spare +bullet_hole_2 = 8; // for .22lr 5.6mm + some spare // threaded portion th_len = 20; th_spec = str("1/2-20,", th_len/10); // change to your barrel thread spec $slop = 0.15; // For my printer, no slop results in an extremely tight thread. +// clamp +cl_len = 50; +cl_in_d = 13; + // baffles baf_dist = 0; baf_h_num = 6; @@ -87,11 +91,21 @@ module thread() { } } +module clamp() { + up(len/2 + cl_len/2) difference() { + cyl(h=cl_len, d=out_d); + cyl(h=cl_len, d=cl_in_d); + cuboid([out_d, t, cl_len]); + down(cl_len/4 + out_d/4) cyl(h=out_d, d1=out_d, d2=0, anchor=down); + } +} + module silencer() { left(test*(out_d+5)) body(); baffles(); right(test*(out_d+5)) cap(); right(test*(out_d+5)) thread(); + // right(test*(out_d+5)) clamp(); } silencer(); diff --git a/Sasza/bron/ft1911/thumb_rest.scad b/Sasza/bron/ft1911/thumb_rest.scad index addf34a..d2b182e 100644 --- a/Sasza/bron/ft1911/thumb_rest.scad +++ b/Sasza/bron/ft1911/thumb_rest.scad @@ -15,7 +15,8 @@ chain_hull() { cuboid([t,thumb_size[1],t], anchor=LEFT+BOTTOM); } -hinge_d = 2; +hinge_d = 2.5; +hinge_hole = 0.8; hinge_num = 4; hinge_h = 3; @@ -29,7 +30,8 @@ down(t - frame_dist) right(thumb_fwd) fwd(thumb_up) zrot(180+45) xrot(-90) diffe } } - up(0) right(hinge_d/2) fwd(hinge_d/2 + t + 0.1) cyl(d=1, h=thumb_size[1]*2, $fn=36); + up(0) right(hinge_d/2) fwd(hinge_d/2 + t + 0.1) + cyl(d=hinge_hole, h=thumb_size[1]*2, $fn=36); } right(thumb_fwd) fwd(thumb_up) zrot(180+45) down(t - frame_dist) yrot(-90) down(t)