obudowy/obudowy/obudowy.scad

127 lines
3.1 KiB
OpenSCAD

// Użyj pudełek z mcada do zaokrągleń
include<MCAD/boxes.scad>
include <MCAD/regular_shapes.scad>
//definicje
stdScrewDiameter=3;
//wycięcie pod śruby+łby
module stdScrewCutWithPhase(screw_diameter,height)
{
screw_radius=screw_diameter/2;
//otwór na śrubę
cylinder(h=height,r=screw_radius*1.1);
//faza
cylinder(h=screw_radius,r2=screw_radius*1.1,r1=screw_radius*2);
//duży cylinder nad razą - żeby wyciąć
translate([0,0,-1])
cylinder(h=1.01,r=screw_radius*2);
}
//wycięcie pod ekran
module stdScreenCutout(pos,size)
{
if(size[0] > size[1])
{
translate([pos[0]+(size[0]/2),pos[1]+(size[1]/2),0])
square_pyramid(size[0],size[1],size[1]);
}
else
{
translate([pos[0]+(size[0]/2),pos[1]+(size[1]/2),0])
square_pyramid(size[0],size[1],size[0]);
}
}
// standardowe pudełko, częśc dolna
// size - wymiary, wektor [l,w,h]
// thickness - grubość ścianek
module stdBox(size,thickness)
{
inner_cutout = size-[thickness*2,thickness*2,0];
standoff_height=size[2]-thickness;
//pudełko
difference()
{
//baza dla pudełka
cube(size);
//wytnij środek
translate([thickness,thickness,thickness])
cube(inner_cutout);
}
//mocowanie - x4 śruby
for(i=[0,1])
for(j=[0,1])
{
translate([stdScrewDiameter*2+i*(size[0]-stdScrewDiameter*4),stdScrewDiameter*2+j*(size[1]-stdScrewDiameter*4),thickness])
stdScrewStandoff(stdScrewDiameter,standoff_height-2,standoff_height);
}
//wzmocnienia
}
// standardowe pudełko, częśc gorna (klapka)
// size - wymiary, wektor [l,w,h]
// thickness - grubość ścianek
module stdCover(size,thickness)
{
inner_cutout = size-[thickness*2,thickness*2,0];
standoff_height=size[2]-thickness;
//klapka
difference()
{
//baza dla pudełka
cube(size);
//wytnij środek
translate([thickness,thickness,thickness])
cube(inner_cutout);
//wytnij otwory pod 4 śruby
for(i=[0,1])
for(j=[0,1])
translate([stdScrewDiameter*2+i*(size[0]-stdScrewDiameter*4),stdScrewDiameter*2+j*(size[1]-stdScrewDiameter*4),0])
stdScrewCutWithPhase(stdScrewDiameter,10);
}
}
// pudełko z zaokrąglonymi rogami, częśc dolna
// size - wymiary, wektor [l,w,h]
// thickness - grubość ścianek
// radius - promień zaokrąglenia
module roundEdgesBox(size,thickness,radius)
{
// aby zaokrąglenie uwzględniało pokrywkę
//robię pudełko wyższe o thickness a potem obcinam o thickness od góry
outer_size = size + [0,0,thickness];
inner_cutout = outer_size-[thickness*2,thickness*2,0];
standoff_height=size[2]-thickness;
difference()
{
//baza dla pudełka
translate(outer_size/2)
roundedBox(outer_size,radius);
//wytnij środek
translate([thickness,thickness,thickness])
translate(inner_cutout/2)
roundedBox(inner_cutout,radius);
//przytnij górę
translate([-1,-1,size[2]])
cube(size+[2,2,2]);
}
//mocowanie - x4 śruby
for(i=[0,1])
for(j=[0,1])
translate([stdScrewRadius*2+i*(size[0]-stdScrewRadius*4),stdScrewRadius*2+j*(size[1]-stdScrewRadius*4),thickness])
stdScrewStandoff(stdScrewRadius,standoff_height-2,standoff_height);
}