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
90 lines
No EOL
3 KiB
OpenSCAD
90 lines
No EOL
3 KiB
OpenSCAD
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],
|
|
[18, "Karty Akcji postaci", 8],
|
|
// [4, "Atrybuty", 10], // za małe
|
|
[13, "Eksploracja Miasta", 8],
|
|
[13, "Eksploracja Dziczy", 8],
|
|
[20, "Zdarzenia", 10],
|
|
[11, "Eliksiry", 10],
|
|
[7.5 + 3 + 5.5, "Trofea szkół + Atrybuty + INNE", 5],
|
|
[18, "Potwory i ataki", 10]
|
|
// [6, "INNE", 10]
|
|
];
|
|
|
|
// 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_in,txt, txt_size) {
|
|
h = h_in + 2*t;
|
|
// bottom box
|
|
difference() {
|
|
// main body
|
|
cuboid([each out, h],anchor=BOTTOM, rounding=t/2);
|
|
// 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, rounding=-t/2, edges=TOP);
|
|
// cutouts
|
|
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] + 2)
|
|
union() {
|
|
// cover
|
|
difference() {
|
|
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]);
|
|
}
|
|
// 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);
|
|
|
|
}
|
|
}
|
|
|
|
for(i=[0:len(tab)-1]) {
|
|
left((out[0] + t)*i) box(tab[i][0], tab[i][1], tab[i][2]);
|
|
} |