Files
film-scanner/assembly.scad
2022-02-22 23:37:46 +01:00

102 lines
2.1 KiB
OpenSCAD

use_colors = true;
xsize = 500;
ysize = 400;
sled_ysize = 5 * 25.4;
sled_xsize = 6 * 25.4;
cur_xpos = 250;
cur_ypos = 200;
include <parts.scad>;
csize = 15;
module frame() {
translate([corner_offset, 0, 0])
rotate([0, 90, 0])
tslot(xsize - 2 * corner_offset);
translate([0, corner_offset, 0])
rotate([-90, 0, 0])
tslot(ysize - 2*corner_offset);
translate([corner_offset, ysize, 0])
rotate([0, 90, 0])
tslot(xsize - 2*corner_offset);
translate([xsize, corner_offset, 0])
rotate([-90, 0, 0])
tslot(ysize - 2*corner_offset);
}
module corners() {
render() {
translate([0,0]) flcorner();
translate([xsize, 0, 0]) frcorner();
translate([xsize, ysize, 0]) brcorner();
translate([0, ysize, 0]) blcorner();
}
}
module rails() {
frame_offset = frame_size / 2 + corner_size / 2;
colorize(stock_color)
{
for (xpos = [frame_offset, xsize - frame_offset]) {
translate([xpos,
frame_size / 2 + wall_thickness])
rotate([-90, 0, 0])
cylinder(d = rail_diam, h = ysize - corner_offset * 2);
}
}
}
module ysled_rails() {
frame_offset = frame_size + corner_size / 2;
yoff = ysled_rail_spacing / 2;
colorize(stock_color)
for (ypos = [-yoff, yoff])
translate([frame_size / 2, ypos, 0])
rotate([0, 90, 0])
cylinder(d = rail_diam, h = xsize - frame_size * 2 - corner_size);
}
module xsled() {
xdiff = sled_xsize / 2 + frame_size / 2;
*for(ypos = [-ysled_rail_spacing/2, ysled_rail_spacing/2]) {
translate([-xdiff, ypos, 0])
xsled_slider();
translate([xdiff, ypos, 0])
rotate([0,0,180])
xsled_slider();
}
translate([0, 0, frame_size])
xsled_frame();
}
union() {
frame();
rails();
corners();
}
translate([frame_size / 2 + corner_size / 2, cur_ypos, 0]) {
ysled_slider(spread = sled_ysize, associated_parts = true);
translate([xsize - frame_size - corner_size, 0, 0])
rotate([0, 180, 0])
ysled_slider(spread = sled_ysize, associated_parts = true);
ysled_rails();
translate([cur_xpos, 0, 0])
xsled();
}
//translate([0, 0, -1000]) cube(2000, center=true);