Dużo pliczków
wiedźmin - pudełko na karty, dodałem dziurę w podstawie i pokrywce żeby dało się łatwiej podejrzeć karty neptune 4 camera mount - nowa kamera, do szafki BROR neptune 4 filament... - przesunąłem detektor filamentu do głowicy, więc te modele są helperami żeby 1. trzymać detektor oraz 2. trzymać obcinaczkę do filamentu Oliwka pierścień - dla taty Oliwki inny rozmiar Tłumik - dla seby thumb rest - 1911 ulepszony
This commit is contained in:
parent
2c5f0a3cb8
commit
f0964d702f
7 changed files with 264 additions and 33 deletions
|
|
@ -3,56 +3,84 @@ include <BOSL2/std.scad>
|
|||
// 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);
|
||||
}
|
||||
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);
|
||||
// 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);
|
||||
|
||||
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);
|
||||
}
|
||||
// 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]);
|
||||
}
|
||||
// side wings
|
||||
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*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);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
79
Neptune4/camera_mount.scad
Normal file
79
Neptune4/camera_mount.scad
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
include <BOSL2/std.scad>
|
||||
include <BOSL2/screws.scad>
|
||||
|
||||
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);
|
||||
|
||||
}
|
||||
60
Neptune4/filament_detector_head_holder.scad
Normal file
60
Neptune4/filament_detector_head_holder.scad
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
include <BOSL2/std.scad>
|
||||
|
||||
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]);
|
||||
34
Neptune4/filament_guide_printer_top.scad
Normal file
34
Neptune4/filament_guide_printer_top.scad
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
include <BOSL2/std.scad>
|
||||
|
||||
$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);
|
||||
}
|
||||
|
|
@ -1,14 +1,18 @@
|
|||
include <BOSL2/std.scad>
|
||||
include <BOSL2/joiners.scad>
|
||||
|
||||
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() {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue