diff --git a/demo/all-together-demo-extended.scad b/demo/all-together-demo-extended.scad new file mode 100644 index 0000000..4317411 --- /dev/null +++ b/demo/all-together-demo-extended.scad @@ -0,0 +1,43 @@ +/* + * SPDX-FileCopyrightText: © 2023 Brian S. Stephan + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +include <../src/parameters.scad> +include <../src/components.scad> +use <../src/frame-piece-top-or-bottom-extended.scad> +use <../src/frame-piece-side-extended-to-bottom.scad> +use <../src/frame-piece-top-or-bottom-for-extended-side-aux-and-neutrik.scad> +use <../src/top-panel-inset-lever-and-dir_arc-plus-w-30mm.scad> +use <../src/top-panel-inset-sega-2p-plus-one-plus-control-with-mount.scad> +use <../src/misc-decorative-plate-24mm-button.scad> +use <../src/misc-decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-plus-one.scad> +use <../src/misc-decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-plus-one-plates.scad> +use <../src/misc-dustwasher-lsx-nobi.scad> + +/* top_panel_color = "white"; */ +/* bottom_panel_color = "red"; */ +/* frame_top_bottom_color = "red"; */ +/* frame_side_color = "red"; */ +/* top_deco_color = "black"; */ +top_panel_color = "#5B6579"; +bottom_panel_color = "#8E9089"; +frame_top_bottom_color = "#8E9089"; +frame_side_color = "#8E9089"; +top_deco_color = "#8E9089"; + +color(top_panel_color) translate([-panel_x/2, 0, frame_z/2-panel_z+0.01]) top_panel_inset_lever_and_dir_arc_w_30mm(); +color(top_panel_color) translate([panel_x/2, 0, frame_z/2-panel_z+0.01]) top_panel_inset_sega_2p_plus_one_plus_control_with_mount(); +color(frame_side_color) translate([-frame_x/2+4, 0, -2.5]) extra_extended_left_or_right_frame_piece(); +color(frame_side_color) translate([frame_x/2-4, 0, -2.5]) mirror([1, 0, 0]) extra_extended_left_or_right_frame_piece(); +color(frame_top_bottom_color) translate([-frame_x/2+4, 0, -2.5]) extended_top_or_bottom_frame_piece(); +color(frame_top_bottom_color) translate([frame_x/2-4, 0, -2.5]) extended_top_or_bottom_frame_piece(); +color(frame_top_bottom_color) translate([-frame_x/2+4, 0, -2.5]) rotate([180, 0, 0]) top_or_bottom_aux_and_neutrik_box_frame_piece_for_extended_side(); +color(frame_top_bottom_color) translate([frame_x/2-4, 0, -2.5]) rotate([180, 180, 0]) top_or_bottom_aux_and_neutrik_box_frame_piece_for_extended_side(); +color(bottom_panel_color) translate([-panel_x/2, 0, -5-frame_z/2+5]) bottom_panel(); +color(bottom_panel_color) translate([panel_x/2, 0, -5-frame_z/2+5]) bottom_panel(); + +/* color(top_deco_color) translate([0, 0, 3+frame_z/2-4]) dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate_of_plates(); */ +color(top_deco_color) translate([0, 0, 3+frame_z/2-panel_z]) dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate(); +color(top_deco_color) translate([-170, 20, 3+frame_z/2-panel_z]) lsx_nobi_dustwasher(); +color(top_deco_color) translate([panel_x-24, 30, 3+frame_z/2-panel_z]) button_24mm_decorative_plate(); diff --git a/src/frame-piece-side-extended-to-bottom.scad b/src/frame-piece-side-extended-to-bottom.scad index 7b9b4b2..531251d 100644 --- a/src/frame-piece-side-extended-to-bottom.scad +++ b/src/frame-piece-side-extended-to-bottom.scad @@ -5,13 +5,16 @@ include include +use +use use -use module side_and_bottom_frame_piece_wall() { // get a slice of the pieces, to use it in extruding - projection(cut=true) rotate([0, 90, 0]) translate([frame_x/2-frame_bevel_height, 0, 0]) - side_frame_piece(); + // 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(); projection(cut=true) translate([0, -frame_y/2+frame_wall, 0]) rotate([90, 90, 0]) bottom_piece_extension(); } @@ -25,7 +28,7 @@ module side_and_bottom_frame_piece_extension() { module extra_extended_left_or_right_frame_piece() { difference() { - side_frame_piece(); + side_box_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); } diff --git a/src/frame-piece-side-extended.scad b/src/frame-piece-side-extended.scad index cc88f7f..d931c05 100644 --- a/src/frame-piece-side-extended.scad +++ b/src/frame-piece-side-extended.scad @@ -5,12 +5,16 @@ include include -use +use +use +use module side_frame_piece_wall() { // get a slice of the piece, to use it in extruding - projection(cut=true) rotate([0, 90, 0]) translate([frame_x/2-frame_bevel_height, 0, 0]) - side_frame_piece(); + // 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(); } module side_frame_piece_extension() { @@ -23,7 +27,7 @@ module side_frame_piece_extension() { module extended_bottom_left_or_right_frame_piece() { difference() { - side_frame_piece(); + side_box_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); } diff --git a/src/frame-piece-top-or-bottom-extended.scad b/src/frame-piece-top-or-bottom-extended.scad index bf7f7bd..8ab4356 100644 --- a/src/frame-piece-top-or-bottom-extended.scad +++ b/src/frame-piece-top-or-bottom-extended.scad @@ -5,33 +5,33 @@ include include -use +use + +module clean_top_or_bottom() { + difference() { + top_or_bottom_box_frame_piece_for_extended_side(); + // chop off the lip we left on the basic piece + translate([-frame_x/2+frame_wall/2, 0, 0]) cube([frame_wall, frame_y, frame_z], center=true); + }; +} module bottom_piece_wall() { - // get a slice of the piece, to use it in extruding - projection(cut=true) rotate([-90, 0, 0]) translate([0, frame_y/2-frame_bevel_height, 0]) - difference() { - top_or_bottom_frame_piece(); - // chop off the lip we left on the basic piece - translate([-frame_x/2+frame_wall/2, 0, 0]) cube([frame_wall, frame_y, frame_z], center=true); - }; + // get a slice of the piece (before the bevel), to use it in extruding + projection(cut=true) rotate([-90, 0, 0]) translate([0, frame_y/2-(frame_wall-frame_bevel_height)*3/2, 0]) + clean_top_or_bottom(); } module bottom_piece_extension() { // combine the original with a shrunken piece to "pull" the wall out hull() { linear_extrude(height=frame_extension_y) scale([1, 0.5, 1]) bottom_piece_wall(); - linear_extrude(height=frame_bevel_height) bottom_piece_wall(); + linear_extrude(height=(frame_wall-frame_bevel_height)) bottom_piece_wall(); } } module extended_top_or_bottom_frame_piece() { - difference() { - top_or_bottom_frame_piece(); - // chop off the lip we left on the basic piece - translate([-frame_x/2+frame_wall/2, 0, 0]) cube([frame_wall, frame_y+1, frame_z], center=true); - } - translate([0, -frame_y/2+frame_bevel_height, 0]) rotate([90, 0, 0]) bottom_piece_extension(); + clean_top_or_bottom(); + translate([0, -frame_y/2+frame_wall, 0]) rotate([90, 0, 0]) bottom_piece_extension(); } extended_top_or_bottom_frame_piece(); diff --git a/src/frame-piece-top-or-bottom-for-extended-side-aux-and-neutrik.scad b/src/frame-piece-top-or-bottom-for-extended-side-aux-and-neutrik.scad new file mode 100644 index 0000000..3834924 --- /dev/null +++ b/src/frame-piece-top-or-bottom-for-extended-side-aux-and-neutrik.scad @@ -0,0 +1,28 @@ +/* + * SPDX-FileCopyrightText: © 2024 Brian S. Stephan + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +include +include +use + +module top_or_bottom_aux_and_neutrik_box_frame_piece_for_extended_side() { + difference() { + top_or_bottom_box_frame_piece_for_extended_side(); + + // aux button holes + translate([-35.25, -101.5, 0]) rotate([90, 0, 0]) aux_control_three_button_cluster(); + translate([-35.25, -(frame_y/2)+neutrik_panel_thickness+4, 0]) frame_cutout(); + translate([-72.25, -(frame_y/2)+neutrik_panel_thickness+4, 0]) frame_cutout(); + translate([2, -(frame_y/2)+neutrik_panel_thickness+4, 0]) frame_cutout(); + + // neutrix button hole + translate([frame_center_to_neutrik, -(frame_y/2)+neutrik_panel_thickness, 0]) + rotate([270, 0, 0]) neutrik_d_mount(); + translate([frame_center_to_neutrik, -(frame_y/2)+neutrik_panel_thickness+4, 0]) + frame_cutout(); + } +} + +top_or_bottom_aux_and_neutrik_box_frame_piece_for_extended_side(); diff --git a/src/frame-piece-top-or-bottom-for-extended-side.scad b/src/frame-piece-top-or-bottom-for-extended-side.scad new file mode 100644 index 0000000..72b976c --- /dev/null +++ b/src/frame-piece-top-or-bottom-for-extended-side.scad @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: © 2024 Brian S. Stephan + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +include +include +use + +module top_or_bottom_box_frame_piece_for_extended_side() { + difference() { + top_or_bottom_box_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); + } +} + +top_or_bottom_box_frame_piece_for_extended_side();