You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
228 lines
4.7 KiB
OpenSCAD
228 lines
4.7 KiB
OpenSCAD
1 year ago
|
//modules
|
||
|
|
||
|
use <./component--joint--tee.scad>;
|
||
|
use <./component--pipe.scad>;
|
||
|
|
||
|
{ //parameters
|
||
|
|
||
|
{
|
||
|
caster_hight=135;
|
||
|
caster_widht=50;
|
||
|
joint_tee_size=60;
|
||
|
pipe_diameter=26.67;
|
||
|
}
|
||
|
|
||
|
{
|
||
|
table_widht=600;
|
||
|
table_length=1800;
|
||
|
table_hight=700;
|
||
|
}
|
||
|
|
||
|
{
|
||
|
base_bottom_center=caster_hight+joint_tee_size/2;
|
||
|
base_top_center=table_hight-joint_tee_size/2;
|
||
|
}
|
||
|
|
||
|
{
|
||
|
base_widht=table_widht-2*(0)/2;
|
||
|
base_length=table_length-2*(0)/2;
|
||
|
}
|
||
|
|
||
|
{
|
||
|
assembly_offset=5;
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
{ //operations
|
||
|
|
||
|
|
||
|
{ //positioning
|
||
|
|
||
|
point_node=(
|
||
|
[
|
||
|
[base_widht/2,base_length/2,base_bottom_center]
|
||
|
]
|
||
|
);
|
||
|
|
||
|
|
||
|
point_pipe_horizontal=(
|
||
|
[
|
||
|
[base_widht/4,base_length/2,base_bottom_center],
|
||
|
[base_widht/4,base_length/2,base_top_center],
|
||
|
|
||
|
]
|
||
|
);
|
||
|
|
||
|
|
||
|
point_central_node=(
|
||
|
[
|
||
|
[0,base_length/2,base_bottom_center],
|
||
|
[0,base_length/2,base_top_center],
|
||
|
]
|
||
|
);
|
||
|
|
||
|
|
||
|
point_pipe=(
|
||
|
[
|
||
|
[base_widht/2,base_length/2,caster_hight+(base_top_center-caster_hight)/2],
|
||
|
]
|
||
|
);
|
||
|
|
||
|
|
||
|
point_caster=(
|
||
|
[
|
||
|
[base_widht/2,base_length/2,caster_hight/2],
|
||
|
]
|
||
|
);
|
||
|
|
||
|
|
||
|
|
||
|
point_crossbar=(
|
||
|
[
|
||
|
[0,0,base_bottom_center],
|
||
|
[0,0,base_top_center],
|
||
|
]
|
||
|
);
|
||
|
|
||
|
|
||
|
point_node_top=(
|
||
|
[
|
||
|
[base_widht/2,base_length/2,base_top_center],
|
||
|
]
|
||
|
);
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
{ //modules
|
||
|
|
||
|
color("yellow")
|
||
|
crossbars();
|
||
|
laterals();
|
||
|
|
||
|
module laterals()
|
||
|
{
|
||
|
lateral_mid();
|
||
|
lateral_mid_mirror();
|
||
|
}
|
||
|
|
||
|
module lateral_mid()
|
||
|
{
|
||
|
lateral_quarter();
|
||
|
lateral_quarter_mirror();
|
||
|
node_pos_central();
|
||
|
}
|
||
|
|
||
|
module lateral_quarter()
|
||
|
{
|
||
|
color("blue")
|
||
|
caster();
|
||
|
|
||
|
color("red")
|
||
|
for (pos=point_node)
|
||
|
translate(pos)
|
||
|
node_bottom();
|
||
|
|
||
|
color("orange")
|
||
|
pipe_vertical();
|
||
|
|
||
|
color("orange")
|
||
|
pipe_horizontal_pos();
|
||
|
|
||
|
|
||
|
color("green")
|
||
|
node_top();
|
||
|
}
|
||
|
|
||
|
|
||
|
module node_bottom()
|
||
|
{
|
||
|
joint_tee(size=joint_tee_size);
|
||
|
};
|
||
|
|
||
|
module pipe_vertical()
|
||
|
{
|
||
|
for (pos=point_pipe)
|
||
|
translate(pos)
|
||
|
pipe(diam=pipe_diameter,hight=base_top_center-caster_hight-joint_tee_size+2*assembly_offset);
|
||
|
};
|
||
|
|
||
|
module pipe_horizontal_pos ()
|
||
|
{
|
||
|
for (pos=point_pipe_horizontal)
|
||
|
translate(pos)
|
||
|
pipe_horizontal();
|
||
|
};
|
||
|
|
||
|
module pipe_horizontal()
|
||
|
{
|
||
|
rotate([0,90,0])
|
||
|
pipe(diam=pipe_diameter,hight=base_widht/2-joint_tee_size+2*assembly_offset);
|
||
|
};
|
||
|
|
||
|
module caster()
|
||
|
{
|
||
|
for (pos=point_caster)
|
||
|
translate(pos)
|
||
|
rotate([0,90,0])
|
||
|
cylinder(h=caster_widht,r=caster_hight/2,center=true);
|
||
|
};
|
||
|
|
||
|
module node_top()
|
||
|
{
|
||
|
for (pos=point_node_top)
|
||
|
translate(pos)
|
||
|
cube(size=joint_tee_size,center=true);
|
||
|
};
|
||
|
|
||
|
module lateral_quarter_mirror()
|
||
|
{
|
||
|
mirror([1,0,0])
|
||
|
lateral_quarter();
|
||
|
};
|
||
|
|
||
|
module lateral_mid_mirror()
|
||
|
{
|
||
|
mirror([1,0,0])
|
||
|
lateral_mid();
|
||
|
}
|
||
|
|
||
|
module node_pos_central()
|
||
|
{
|
||
|
color("red")
|
||
|
for (pos=point_central_node)
|
||
|
translate(pos)
|
||
|
joint_tee(size=joint_tee_size);
|
||
|
}
|
||
|
|
||
|
|
||
|
module lateral_mid_mirror()
|
||
|
{
|
||
|
mirror([0,1,0])
|
||
|
lateral_mid();
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
module crossbars()
|
||
|
{
|
||
|
color("red")
|
||
|
for (pos=point_crossbar)
|
||
|
translate(pos)
|
||
|
crossbar();
|
||
|
}
|
||
|
|
||
|
module crossbar()
|
||
|
{
|
||
|
rotate([90,0,0])
|
||
|
pipe(diam=pipe_diameter,hight=base_length-joint_tee_size+2*assembly_offset);
|
||
|
}
|
||
|
}
|
||
|
|
||
1 year ago
|
}
|