modularize the frame into separate wall pieces
this provides a system for interlocking frame walls as separate pieces, rather than a whole frame box as one piece. the primary motivation for this was to improve print quality. these pieces can be printed flat side down, meaning improvements due to: 1. printing the box required the long, thin bottom to be the side on the print surface, which meant shrinkage force would curl the corners with essentially no remedy outside of bed adhesive 2. printing the box bottom up created poor circles for the button holes, sometimes bad enough to be a visible problem, as well as making small flow glitches to stand out (especially on non-matte PLA) 3. printing the box also required supports when the frame bottom was inset-style, leading to an annoying post-print step 4. the outward side is now what rests on the print surface, yielding a nicer, more consistent surface the box modules still exist in the event someone wants them, but I personally will probably be focused on this method going forward. this also opens up some exciting options regarding color mixing, different side panel shapes, and the like, so I expect to see more of these even if the boxes don't go away (especially since these new pieces are all derived from the boxes anyway). Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
This commit is contained in:
parent
0708540ac7
commit
155cba6d85
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
include <parameters.scad>
|
||||
include <components.scad>
|
||||
use <frame-left.scad>
|
||||
|
||||
module bottom_left_or_right_frame_piece() {
|
||||
piece_width = panel_support_width+frame_wall+frame_mount_column_width;
|
||||
intersection() {
|
||||
left_frame();
|
||||
difference() {
|
||||
// include the whole bottom wall (including mount columns)
|
||||
translate([0, -(frame_y/2)+(piece_width/2), 0]) cube([frame_x, piece_width, frame_z], center=true);
|
||||
// ...minus the frame wall (lip) on the left but leaving the very bottom lip
|
||||
translate([-frame_x/2+frame_wall/2, 0, 0])
|
||||
cube([frame_wall, frame_y-(frame_wall*2), frame_z], center=true);
|
||||
// ...minus a slot for the combining piece to go into
|
||||
cube([frame_x, frame_y-(panel_support_width+frame_wall)*2, frame_z/4], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bottom_left_or_right_frame_piece();
|
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
include <parameters.scad>
|
||||
include <components.scad>
|
||||
use <frame-piece-side.scad>
|
||||
|
||||
module interconnect_frame_half_piece() {
|
||||
translate([frame_x/2-frame_wall, 0, 0]) difference() {
|
||||
side_frame_piece();
|
||||
rotate([0, 0, 180]) side_chopper();
|
||||
}
|
||||
}
|
||||
|
||||
module interconnect_frame_piece() {
|
||||
difference() {
|
||||
union() {
|
||||
// slight translate is to make this a 2-manifold in OpenSCAD
|
||||
translate([-0.01, 0, 0]) interconnect_frame_half_piece();
|
||||
mirror([1, 0, 0]) interconnect_frame_half_piece();
|
||||
}
|
||||
translate([-frame_x/2, 0, 0]) frame_cable_routing_hole();
|
||||
}
|
||||
}
|
||||
|
||||
interconnect_frame_piece();
|
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
include <parameters.scad>
|
||||
include <components.scad>
|
||||
use <frame-piece-top-left.scad>
|
||||
use <frame-piece-bottom-left-or-right.scad>
|
||||
|
||||
module side_frame_piece() {
|
||||
piece_width = panel_support_width+frame_wall+frame_mount_column_width;
|
||||
difference() {
|
||||
// side piece is left/right agnostic
|
||||
frame();
|
||||
// minus the top and bottom
|
||||
top_left_frame_piece();
|
||||
bottom_left_or_right_frame_piece();
|
||||
// and just chop out the rest of the frame
|
||||
translate([piece_width, 0, 0]) cube([frame_x, frame_y+1, frame_z+1], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
side_frame_piece();
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
include <parameters.scad>
|
||||
include <components.scad>
|
||||
use <frame-left.scad>
|
||||
|
||||
module top_left_frame_piece() {
|
||||
piece_width = panel_support_width+frame_wall+frame_mount_column_width;
|
||||
intersection() {
|
||||
left_frame();
|
||||
difference() {
|
||||
// include the whole top wall (including mount columns)
|
||||
translate([0, (frame_y/2)-(piece_width/2), 0]) cube([frame_x, piece_width, frame_z], center=true);
|
||||
// ...minus the frame wall (lip) on the left but leaving the very top lip
|
||||
translate([-frame_x/2+frame_wall/2, 0, 0])
|
||||
cube([frame_wall, frame_y-(frame_wall*2), frame_z], center=true);
|
||||
// ...minus a slot for the combining piece to go into
|
||||
cube([frame_x, frame_y-(panel_support_width+frame_wall)*2, frame_z/4], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
top_left_frame_piece();
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
include <parameters.scad>
|
||||
include <components.scad>
|
||||
use <frame-right.scad>
|
||||
|
||||
module top_right_frame_piece() {
|
||||
piece_width = panel_support_width+frame_wall+frame_mount_column_width;
|
||||
intersection() {
|
||||
right_frame();
|
||||
difference() {
|
||||
// include the whole top wall (including mount columns)
|
||||
translate([0, (frame_y/2)-(piece_width/2), 0]) cube([frame_x, piece_width, frame_z], center=true);
|
||||
// ...minus the frame wall (lip) on the left but leaving the very top lip
|
||||
translate([frame_x/2-frame_wall/2, 0, 0])
|
||||
cube([frame_wall, frame_y-(frame_wall*2), frame_z], center=true);
|
||||
// ...minus a slot for the combining piece to go into
|
||||
cube([frame_x, frame_y-(panel_support_width+frame_wall)*2, frame_z/4], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
top_right_frame_piece();
|
Loading…
Reference in New Issue