Compare commits

...

5 Commits

Author SHA1 Message Date
0129cf6ce6
add inner wall pieces that push out through their associated window
this looks kind of neat and helps the build feel of the horizontal
stripe windows, which were a bit flimsy without something sticking
through them

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-02-24 13:35:45 -06:00
c79427052e
modularize the horizontal stripes for reuse
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-02-20 09:13:32 -06:00
623118b627
parameterize the frame wall cutout for readability's sake
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-02-19 11:09:48 -06:00
aff6efebb3
remove unnecessary difference now that all pieces have flush corner seams
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-02-19 07:41:07 -06:00
f3d0d4b6e2
simplify the "longish" extended side
also do the same thing for a "longish" front/back, since I want to play
around with windowed structural strength with this piece

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-02-18 16:03:17 -06:00
8 changed files with 140 additions and 48 deletions

View File

@ -352,14 +352,14 @@ module frame() {
// for cutting out slashes from the frame outer wall
module slash_cutout() {
polyhedron([
[slash_inner_displacement/2, -frame_wall/2, -slash_height/2],
[(slash_inner_displacement/2+slash_width), -frame_wall/2, -slash_height/2],
[(slash_inner_displacement/2+slash_width), frame_wall/2, -slash_height/2],
[slash_inner_displacement/2, frame_wall/2, -slash_height/2],
[-(slash_inner_displacement/2+slash_width), -frame_wall/2, slash_height/2],
[-slash_inner_displacement/2, -frame_wall/2, slash_height/2],
[-slash_inner_displacement/2, frame_wall/2, slash_height/2],
[-(slash_inner_displacement/2+slash_width), frame_wall/2, slash_height/2]
[slash_inner_displacement/2, -wall_cutout_depth, -slash_height/2],
[(slash_inner_displacement/2+slash_width), -wall_cutout_depth, -slash_height/2],
[(slash_inner_displacement/2+slash_width), wall_cutout_depth, -slash_height/2],
[slash_inner_displacement/2, wall_cutout_depth, -slash_height/2],
[-(slash_inner_displacement/2+slash_width), -wall_cutout_depth, slash_height/2],
[-slash_inner_displacement/2, -wall_cutout_depth, slash_height/2],
[-slash_inner_displacement/2, wall_cutout_depth, slash_height/2],
[-(slash_inner_displacement/2+slash_width), wall_cutout_depth, slash_height/2]
], [[0, 1, 2, 3], [4, 5, 1, 0], [7, 6, 5, 4], [5, 6, 2, 1], [6, 7, 3, 2], [7, 4, 0, 3]]);
}

View File

@ -0,0 +1,32 @@
/* The inner top/bottom wall of the frame, for being displayed through a horizontal stripe windowed part.
*
* SPDX-FileCopyrightText: © 2025 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
use <front-or-back-inner-wall.scad>
use <front-or-back-longish.scad>
use <front-or-back-windowed-horiz-stripes.scad>
// for stability's sake, this piece juts out a bit from the outside of the wall, so we
// need to hack the window piece a bit to subtract from the longer and get ours longer
module horiz_striped_windowed_front_or_back_frame_piece() {
difference() {
front_or_back_longish_frame_piece();
// subtract frame wall windows
front_horiz_stripes();
// subtract the inner wall area that will be provided by the other piece
front_or_back_inner_wall_frame_piece();
}
}
module front_or_back_windowed_horiz_stripes_inner_wall_frame_piece() {
difference() {
front_or_back_longish_frame_piece();
horiz_striped_windowed_front_or_back_frame_piece();
}
}
front_or_back_windowed_horiz_stripes_inner_wall_frame_piece();

View File

@ -0,0 +1,30 @@
/*
* SPDX-FileCopyrightText: © 2025 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
use <front-or-back.scad>
module front_or_back_frame_piece_wall() {
// get a slice of the whole wall, to use it for making the extended version
difference() {
front_or_back_frame_piece();
cube([frame_x, frame_y-frame_wall*2, frame_z], center=true);
}
}
module front_or_back_frame_piece_extension() {
hull() {
front_or_back_frame_piece_wall();
translate([0, -frame_bevel_height*2, 0]) front_or_back_frame_piece_wall();
}
}
module front_or_back_longish_frame_piece() {
front_or_back_frame_piece_extension();
front_or_back_frame_piece();
}
front_or_back_longish_frame_piece();

View File

@ -8,30 +8,26 @@ include <components.scad>
use <front-or-back.scad>
use <front-or-back-inner-wall.scad>
module front_stripe() {
cube([frame_x-(frame_mount_column_width*1.75)*2, frame_wall, 5], center=true);
module front_horiz_stripe() {
cube([frame_x-(frame_mount_column_width*1.75)*2, wall_cutout_depth, 5], center=true);
}
module front_horiz_stripes() {
translate([0, -(frame_y-frame_wall)/2, 18]) front_horiz_stripe();
translate([0, -(frame_y-frame_wall)/2, 9]) front_horiz_stripe();
translate([0, -(frame_y-frame_wall)/2, 0]) front_horiz_stripe();
translate([0, -(frame_y-frame_wall)/2, -9]) front_horiz_stripe();
translate([0, -(frame_y-frame_wall)/2, -18]) front_horiz_stripe();
}
module horiz_striped_windowed_front_or_back_frame_piece() {
difference() {
front_or_back_frame_piece();
// subtract frame wall windows
translate([0, -(frame_y-frame_wall)/2, 18]) front_stripe();
translate([0, -(frame_y-frame_wall)/2, 9]) front_stripe();
translate([0, -(frame_y-frame_wall)/2, 0]) front_stripe();
translate([0, -(frame_y-frame_wall)/2, -9]) front_stripe();
translate([0, -(frame_y-frame_wall)/2, -18]) front_stripe();
front_horiz_stripes();
// subtract the inner wall area that will be provided by the other piece
front_or_back_inner_wall_frame_piece();
}
}
module horiz_striped_windowed_front_or_back_frame_piece_for_extended_side() {
difference() {
horiz_striped_windowed_front_or_back_frame_piece();
// ...minus the frame wall and lip on the left
translate([-frame_x/2+frame_wall/2, 0, 0]) cube([frame_wall, frame_y, frame_z], center=true);
}
}
horiz_striped_windowed_front_or_back_frame_piece_for_extended_side();
horiz_striped_windowed_front_or_back_frame_piece();

View File

@ -0,0 +1,32 @@
/* The inner side wall of the frame, for being displayed through a horizontal stripe windowed part.
*
* SPDX-FileCopyrightText: © 2025 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
use <side-inner-wall.scad>
use <side-longish.scad>
use <side-windowed-horiz-stripes.scad>
// for stability's sake, this piece juts out a bit from the outside of the wall, so we
// need to hack the window piece a bit to subtract from the longer and get ours longer
module horiz_striped_windowed_side_frame_piece() {
difference() {
side_longish_frame_piece();
// subtract frame wall windows
side_horiz_stripes();
// subtract the inner wall area that will be provided by the other piece
side_inner_wall_frame_piece();
}
}
module side_windowed_horiz_stripes_inner_wall_frame_piece() {
difference() {
side_longish_frame_piece();
horiz_striped_windowed_side_frame_piece();
}
}
side_windowed_horiz_stripes_inner_wall_frame_piece();

View File

@ -5,34 +5,28 @@
include <parameters.scad>
include <components.scad>
use <frames/complete/left-frame.scad>
use <side.scad>
module side_frame_piece_wall() {
// get a slice of the piece, to use it in extruding
// this doesn't use the side_frame_piece because of the 45 degree angle geometry
// not creating a clean thing to cut, so we just take the whole wall and use that
projection(cut=true) rotate([0, 90, 0]) translate([frame_x/2-frame_wall-(frame_bevel_height/2), 0, 0])
left_frame();
// get a slice of the whole wall, to use it for making the extended version
difference() {
side_frame_piece();
cube([frame_x-frame_wall*2, frame_y, frame_z], center=true);
}
}
module side_frame_piece_extension() {
// combine the original with a shrunken piece to "pull" the wall out
// hulling the two walls provides a wall with a thicker x
hull() {
linear_extrude(height=frame_bevel_height*4)
square([frame_z-(frame_bevel_height*2), frame_y-(frame_bevel_height*2)], center=true);
linear_extrude(height=frame_bevel_height*3) side_frame_piece_wall();
linear_extrude(height=frame_bevel_height) side_frame_piece_wall();
side_frame_piece_wall();
translate([-frame_bevel_height*2, 0, 0]) side_frame_piece_wall();
}
}
module side_longish_frame_piece() {
difference() {
side_frame_piece();
// chop off the old edge which is getting replaced with the extension
translate([-frame_x/2+frame_bevel_height/2, 0, 0]) cube([frame_bevel_height, frame_y, frame_z], center=true);
}
translate([-frame_x/2+frame_bevel_height*2, 0, 0]) rotate([0, -90, 0]) side_frame_piece_extension();
// combine the wider wall and the original piece
side_frame_piece_extension();
side_frame_piece();
}
side_longish_frame_piece();

View File

@ -8,19 +8,23 @@ include <components.scad>
use <side.scad>
use <side-inner-wall.scad>
module side_stripe() {
cube([frame_wall, frame_y-(frame_mount_column_width*1.75)*2, 5], center=true);
module side_horiz_stripe() {
cube([wall_cutout_depth, frame_y-(frame_mount_column_width*1.75)*2, 5], center=true);
}
module side_horiz_stripes() {
translate([-(frame_x-frame_wall)/2, 0, 18]) side_horiz_stripe();
translate([-(frame_x-frame_wall)/2, 0, 9]) side_horiz_stripe();
translate([-(frame_x-frame_wall)/2, 0, 0]) side_horiz_stripe();
translate([-(frame_x-frame_wall)/2, 0, -9]) side_horiz_stripe();
translate([-(frame_x-frame_wall)/2, 0, -18]) side_horiz_stripe();
}
module horiz_striped_windowed_side_frame_piece() {
difference() {
side_frame_piece();
// subtract frame wall windows
translate([-(frame_x-frame_wall)/2, 0, 18]) side_stripe();
translate([-(frame_x-frame_wall)/2, 0, 9]) side_stripe();
translate([-(frame_x-frame_wall)/2, 0, 0]) side_stripe();
translate([-(frame_x-frame_wall)/2, 0, -9]) side_stripe();
translate([-(frame_x-frame_wall)/2, 0, -18]) side_stripe();
side_horiz_stripes();
// subtract the inner wall area that will be provided by the other piece
side_inner_wall_frame_piece();
}

View File

@ -104,6 +104,10 @@ neutrik_d_radius = 12 + hole_tolerance;
decorative_radius_scale = 1.75;
jumbo_decorative_radius_scale = 2;
// decorative wall cutout parameters
// thicker than the actual base wall to account for the longish pieces
wall_cutout_depth = frame_wall * 3;
// decorative slash parameters
slash_inner_displacement = 10;
slash_width = 15;