81 lines
1.7 KiB
OpenSCAD
81 lines
1.7 KiB
OpenSCAD
// Variables
|
|
include <config.scad>
|
|
|
|
// Reusables
|
|
use <modules.scad>
|
|
|
|
// Major components (i.e. tops and subs)
|
|
use <tops/main.scad>
|
|
use <tops/side.scad>
|
|
use <subs/base.scad>
|
|
|
|
// Assembly
|
|
|
|
top_main();
|
|
|
|
/* --- */
|
|
// sidetable
|
|
|
|
translate([MAIN_WIDTH, MAIN_DEPTH, 0]){
|
|
rotate([0, 0, -90]){
|
|
// ↑ transforms for the entire sidetable
|
|
|
|
top_side();
|
|
|
|
}
|
|
}
|
|
|
|
/* --- */
|
|
// spacers connecting main desk and sidetable
|
|
main_to_side = LEG_OFFSET_X + LEG_OFFSET_Y;
|
|
|
|
translate([
|
|
MAIN_WIDTH - LEG_OFFSET_X,
|
|
LEG_OFFSET_Y,
|
|
_FOOT_HEIGHT - LEG_BASE_THICKNESS - SPACER_CUFF_HEIGHT * 2
|
|
]) {
|
|
rotate([0, 0, -90]){
|
|
spacer(main_to_side);
|
|
}
|
|
}
|
|
|
|
translate([
|
|
MAIN_WIDTH - LEG_OFFSET_X,
|
|
_FOOT_OFFSET_Y,
|
|
_FOOT_HEIGHT - LEG_BASE_THICKNESS - SPACER_CUFF_HEIGHT * 2
|
|
]) {
|
|
rotate([0, 0, -90]){
|
|
spacer(main_to_side);
|
|
}
|
|
}
|
|
|
|
// main plate grid calculation
|
|
|
|
grid_size_x_mm = MAIN_WIDTH - LEG_OFFSET_X * 2 - LEG_BASE_DIAMETER;
|
|
grid_size_y_mm = MAIN_DEPTH - _CABLE_TRAY_DEPTH - MODULE_RAIL_MARGIN_SCREW;
|
|
|
|
grid_size_x_gridunits = grid_elements(grid_size_x_mm, 1);
|
|
grid_size_y_gridunits = grid_elements(grid_size_y_mm, 1);
|
|
for(xy = grid(grid_size_x_gridunits, grid_size_y_gridunits, 1, 1)){
|
|
translate([
|
|
LEG_OFFSET_X + LEG_BASE_DIAMETER,
|
|
MODULE_RAIL_MARGIN_SCREW,
|
|
MAIN_HEIGHT - MODULE_SCREW_LENGTH
|
|
]) {
|
|
translate(xy) { screw_hole(); }
|
|
}
|
|
}
|
|
|
|
// rack module placeholder
|
|
translate([
|
|
200,
|
|
MODULE_RAIL_MARGIN_SCREW,
|
|
MAIN_HEIGHT - TOP_THICKNESS
|
|
]) {
|
|
|
|
rack_width_gridunits = grid_units_length(550);
|
|
rack_depth_gridunits = grid_units_length(650);
|
|
module_base(rack_width_gridunits, rack_depth_gridunits, 600, 3);
|
|
module_rail_set(rack_width_gridunits, rack_depth_gridunits, 3);
|
|
}
|