Все таки хорошо, когда есть доступ к станочку лазерной резки и немного акрилика. Некоторое время назад я запилил себе вот такую вот подставку под пробирки.
Ну… На самом деле не пробирки, а банки от ‘бифидума бактерина’, коим я выправляю периодически убитый антибиотиками желудок. (А в случае жесткой ангины оные кушать приходится) В общем баночек осталось у меня до черта, и использую я их вместо химпосуды. Дешево и сердито. Подставка вышла примерно такая:
А вот исходничек в OpenSCADе под ‘пивной’ лицензией.
rows=2;
cols=5;
spacing=2;
borderspace_w = 4;
borderspace_l = 20;
radius=8.5;
drill_via=1.6;
delta=0.1;
TARGET=2;
//////////////////////////
length = borderspace_l*2 + spacing + (radius*2+spacing) * cols;
width = borderspace_w*2 + spacing + (radius*2+spacing) * rows;
module vials(rows,cols,spacing,radius, borderspace_l, borderspace_w, shift)
{
length = borderspace_l*2 + spacing + (radius*2+spacing) * cols;
width = borderspace_w*2 + spacing + (radius*2+spacing) * rows;
echo("Vial holder: length: ",length, "width:", width);
difference(){
for (j=[0:rows-1])
{
for (i=[0:cols-1+ ( j % 2)])
{
#translate(
[
borderspace_w +radius+spacing + (radius*2+spacing)*j,
-shift * (j %2 ) + borderspace_l +radius+spacing + (radius*2+spacing)*i
]
) circle(radius);
}
}
}
}
difference()
{
square([width,length]);
# translate ([width/4,borderspace_l/3])circle(drill_via);
# translate ([3*width/4,borderspace_l/3])circle(drill_via);
# translate ([width/4,length-borderspace_l/3])circle(drill_via);
# translate ([3*width/4,length-borderspace_l/3])circle(drill_via);
# translate ([2*width/20,length/2-radius-spacing/2])circle(drill_via);
# translate ([2*width/20,length/2+radius+spacing/2])circle(drill_via);
# translate ([18*width/20,length/2])circle(drill_via);
}
if ( TARGET==1 )
{
translate([width+delta,0]) difference(){
square([width,length]);
# vials(rows,cols,spacing,radius, borderspace_l, borderspace_w, radius);
# translate ([width/4,borderspace_l/3])circle(drill_via);
# translate ([3*width/4,borderspace_l/3])circle(drill_via);
# translate ([width/4,length-borderspace_l/3])circle(drill_via);
# translate ([3*width/4,length-borderspace_l/3])circle(drill_via);
# translate ([2*width/20,length/2-radius-spacing/2])circle(drill_via);
# translate ([2*width/20,length/2+radius+spacing/2])circle(drill_via);
# translate ([18*width/20,length/2])circle(drill_via);
}
}
else
{
translate([0,0,15]) difference(){
square([width,length]);
# vials(rows,cols,spacing,radius, borderspace_l, borderspace_w, radius);
# translate ([width/4,borderspace_l/3])circle(drill_via);
# translate ([3*width/4,borderspace_l/3])circle(drill_via);
# translate ([width/4,length-borderspace_l/3])circle(drill_via);
# translate ([2*width/20,length/2-radius-spacing/2])circle(drill_via);
# translate ([2*width/20,length/2+radius+spacing/2])circle(drill_via);
# translate ([18*width/20,length/2])circle(drill_via);
}
}
