Подставочка для пробирочек

Все таки хорошо, когда есть доступ к станочку лазерной резки и немного акрилика. Некоторое время назад я запилил себе вот такую вот подставку под пробирки.

Ну… На самом деле не пробирки, а банки от ‘бифидума бактерина’, коим я выправляю периодически убитый антибиотиками желудок. (А в случае жесткой ангины оные кушать приходится) В общем баночек осталось у меня до черта, и использую я их вместо химпосуды. Дешево и сердито. Подставка вышла примерно такая:

А вот исходничек в 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);
}
}

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.