2023-09-21 19:27:44 +02:00
|
|
|
/******************************************************************
|
|
|
|
* *
|
|
|
|
* FlowFlexure Microscope: tube holder *
|
|
|
|
* *
|
|
|
|
* (c) Sebastian Wendel, 2023 *
|
|
|
|
* Released under the CERN Open Hardware License *
|
|
|
|
* *
|
|
|
|
******************************************************************/
|
|
|
|
|
2023-09-19 01:34:32 +02:00
|
|
|
$fn = 100;
|
|
|
|
|
|
|
|
case_thickness = 3;
|
|
|
|
|
|
|
|
tube_count = 3;
|
|
|
|
tube_radius = 15;
|
|
|
|
tube_height = 20;
|
|
|
|
|
|
|
|
module hook()
|
|
|
|
{
|
|
|
|
translate([ 23.5, -(tube_height + case_thickness * 1.5), tube_height - case_thickness ])
|
|
|
|
rotate([ 0, 90, 0 ])
|
|
|
|
{
|
|
|
|
linear_extrude(tube_height)
|
|
|
|
{
|
|
|
|
square([ tube_height - case_thickness, case_thickness ]);
|
|
|
|
rotate([ 0, 0, 90 ])
|
|
|
|
square([ case_thickness * 2.5, case_thickness ]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
module tube_holes(radius = tube_radius)
|
|
|
|
{
|
|
|
|
circle(radius);
|
|
|
|
|
|
|
|
translate([ (tube_radius * 2) + case_thickness, 0, 0 ])
|
|
|
|
circle(radius);
|
|
|
|
|
|
|
|
translate([ ((tube_radius * 2) + case_thickness) * 2, 0, 0 ])
|
|
|
|
circle(radius);
|
|
|
|
}
|
|
|
|
|
|
|
|
module tube_holder_base()
|
|
|
|
{
|
|
|
|
difference()
|
|
|
|
{
|
|
|
|
hull()
|
|
|
|
{
|
|
|
|
tube_holes(tube_radius + (case_thickness));
|
|
|
|
}
|
|
|
|
tube_holes();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
module tube_holder()
|
|
|
|
{
|
|
|
|
linear_extrude(tube_height)
|
|
|
|
{
|
|
|
|
tube_holder_base();
|
|
|
|
}
|
|
|
|
hook();
|
|
|
|
}
|
|
|
|
|
|
|
|
tube_holder();
|