Compare commits
5 Commits
97a6f52e07
...
0129cf6ce6
Author | SHA1 | Date | |
---|---|---|---|
0129cf6ce6 | |||
c79427052e | |||
623118b627 | |||
aff6efebb3 | |||
f3d0d4b6e2 |
@ -352,14 +352,14 @@ module frame() {
|
|||||||
// for cutting out slashes from the frame outer wall
|
// for cutting out slashes from the frame outer wall
|
||||||
module slash_cutout() {
|
module slash_cutout() {
|
||||||
polyhedron([
|
polyhedron([
|
||||||
[slash_inner_displacement/2, -frame_wall/2, -slash_height/2],
|
[slash_inner_displacement/2, -wall_cutout_depth, -slash_height/2],
|
||||||
[(slash_inner_displacement/2+slash_width), -frame_wall/2, -slash_height/2],
|
[(slash_inner_displacement/2+slash_width), -wall_cutout_depth, -slash_height/2],
|
||||||
[(slash_inner_displacement/2+slash_width), frame_wall/2, -slash_height/2],
|
[(slash_inner_displacement/2+slash_width), wall_cutout_depth, -slash_height/2],
|
||||||
[slash_inner_displacement/2, frame_wall/2, -slash_height/2],
|
[slash_inner_displacement/2, wall_cutout_depth, -slash_height/2],
|
||||||
[-(slash_inner_displacement/2+slash_width), -frame_wall/2, slash_height/2],
|
[-(slash_inner_displacement/2+slash_width), -wall_cutout_depth, slash_height/2],
|
||||||
[-slash_inner_displacement/2, -frame_wall/2, slash_height/2],
|
[-slash_inner_displacement/2, -wall_cutout_depth, slash_height/2],
|
||||||
[-slash_inner_displacement/2, frame_wall/2, slash_height/2],
|
[-slash_inner_displacement/2, wall_cutout_depth, slash_height/2],
|
||||||
[-(slash_inner_displacement/2+slash_width), frame_wall/2, 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]]);
|
], [[0, 1, 2, 3], [4, 5, 1, 0], [7, 6, 5, 4], [5, 6, 2, 1], [6, 7, 3, 2], [7, 4, 0, 3]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
30
src/frames/pieces/front-or-back-longish.scad
Normal file
30
src/frames/pieces/front-or-back-longish.scad
Normal 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();
|
@ -8,30 +8,26 @@ include <components.scad>
|
|||||||
use <front-or-back.scad>
|
use <front-or-back.scad>
|
||||||
use <front-or-back-inner-wall.scad>
|
use <front-or-back-inner-wall.scad>
|
||||||
|
|
||||||
module front_stripe() {
|
module front_horiz_stripe() {
|
||||||
cube([frame_x-(frame_mount_column_width*1.75)*2, frame_wall, 5], center=true);
|
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() {
|
module horiz_striped_windowed_front_or_back_frame_piece() {
|
||||||
difference() {
|
difference() {
|
||||||
front_or_back_frame_piece();
|
front_or_back_frame_piece();
|
||||||
// subtract frame wall windows
|
// subtract frame wall windows
|
||||||
translate([0, -(frame_y-frame_wall)/2, 18]) front_stripe();
|
front_horiz_stripes();
|
||||||
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();
|
|
||||||
// subtract the inner wall area that will be provided by the other piece
|
// subtract the inner wall area that will be provided by the other piece
|
||||||
front_or_back_inner_wall_frame_piece();
|
front_or_back_inner_wall_frame_piece();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module horiz_striped_windowed_front_or_back_frame_piece_for_extended_side() {
|
horiz_striped_windowed_front_or_back_frame_piece();
|
||||||
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();
|
|
||||||
|
32
src/frames/pieces/side-inner-wall-for-horiz-stripes.scad
Normal file
32
src/frames/pieces/side-inner-wall-for-horiz-stripes.scad
Normal 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();
|
@ -5,34 +5,28 @@
|
|||||||
|
|
||||||
include <parameters.scad>
|
include <parameters.scad>
|
||||||
include <components.scad>
|
include <components.scad>
|
||||||
use <frames/complete/left-frame.scad>
|
|
||||||
use <side.scad>
|
use <side.scad>
|
||||||
|
|
||||||
module side_frame_piece_wall() {
|
module side_frame_piece_wall() {
|
||||||
// get a slice of the piece, to use it in extruding
|
// get a slice of the whole wall, to use it for making the extended version
|
||||||
// this doesn't use the side_frame_piece because of the 45 degree angle geometry
|
difference() {
|
||||||
// not creating a clean thing to cut, so we just take the whole wall and use that
|
side_frame_piece();
|
||||||
projection(cut=true) rotate([0, 90, 0]) translate([frame_x/2-frame_wall-(frame_bevel_height/2), 0, 0])
|
cube([frame_x-frame_wall*2, frame_y, frame_z], center=true);
|
||||||
left_frame();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module side_frame_piece_extension() {
|
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() {
|
hull() {
|
||||||
linear_extrude(height=frame_bevel_height*4)
|
side_frame_piece_wall();
|
||||||
square([frame_z-(frame_bevel_height*2), frame_y-(frame_bevel_height*2)], center=true);
|
translate([-frame_bevel_height*2, 0, 0]) side_frame_piece_wall();
|
||||||
linear_extrude(height=frame_bevel_height*3) side_frame_piece_wall();
|
|
||||||
linear_extrude(height=frame_bevel_height) side_frame_piece_wall();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module side_longish_frame_piece() {
|
module side_longish_frame_piece() {
|
||||||
difference() {
|
// combine the wider wall and the original piece
|
||||||
side_frame_piece();
|
side_frame_piece_extension();
|
||||||
// chop off the old edge which is getting replaced with the extension
|
side_frame_piece();
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
side_longish_frame_piece();
|
side_longish_frame_piece();
|
||||||
|
@ -8,19 +8,23 @@ include <components.scad>
|
|||||||
use <side.scad>
|
use <side.scad>
|
||||||
use <side-inner-wall.scad>
|
use <side-inner-wall.scad>
|
||||||
|
|
||||||
module side_stripe() {
|
module side_horiz_stripe() {
|
||||||
cube([frame_wall, frame_y-(frame_mount_column_width*1.75)*2, 5], center=true);
|
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() {
|
module horiz_striped_windowed_side_frame_piece() {
|
||||||
difference() {
|
difference() {
|
||||||
side_frame_piece();
|
side_frame_piece();
|
||||||
// subtract frame wall windows
|
// subtract frame wall windows
|
||||||
translate([-(frame_x-frame_wall)/2, 0, 18]) side_stripe();
|
side_horiz_stripes();
|
||||||
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();
|
|
||||||
// subtract the inner wall area that will be provided by the other piece
|
// subtract the inner wall area that will be provided by the other piece
|
||||||
side_inner_wall_frame_piece();
|
side_inner_wall_frame_piece();
|
||||||
}
|
}
|
||||||
|
@ -104,6 +104,10 @@ neutrik_d_radius = 12 + hole_tolerance;
|
|||||||
decorative_radius_scale = 1.75;
|
decorative_radius_scale = 1.75;
|
||||||
jumbo_decorative_radius_scale = 2;
|
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
|
// decorative slash parameters
|
||||||
slash_inner_displacement = 10;
|
slash_inner_displacement = 10;
|
||||||
slash_width = 15;
|
slash_width = 15;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user