Compare commits
19 Commits
1083492ef8
...
9d109f1756
Author | SHA1 | Date | |
---|---|---|---|
9d109f1756 | |||
0ea02154b5 | |||
e29d9e6180 | |||
f509b8df80 | |||
71b2c786be | |||
5c542944d2 | |||
623e025566 | |||
d1a8f34c2a | |||
900ca8c751 | |||
d87794db59 | |||
f0d3f434a3 | |||
2f027ef1fe | |||
b826ecaccf | |||
0cdd0ae846 | |||
504dab935c | |||
0de2505de2 | |||
fd2193cc5a | |||
766fbf2883 | |||
7a03a1e38e |
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,4 @@
|
|||||||
build/
|
build/
|
||||||
|
*.stl
|
||||||
|
|
||||||
*.sw*
|
*.sw*
|
||||||
|
24
CHANGELOG.md
24
CHANGELOG.md
@ -2,6 +2,30 @@
|
|||||||
|
|
||||||
Included is a summary of changes to the project, by version. Details can be found in the commit history.
|
Included is a summary of changes to the project, by version. Details can be found in the commit history.
|
||||||
|
|
||||||
|
## v4.5.0
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* Many components for the Buildable Stick System - Arcade Edition --- pieces to create a control enclosure for the Qanba
|
||||||
|
2009 base! These pieces live in `extras/bss-ae/` but do use some parts from the base project; check that subdir's
|
||||||
|
README.
|
||||||
|
* Created a Sega 2P 11 button layout, basically following the curve of the fourth column and adding a fifth, plus one
|
||||||
|
extra button
|
||||||
|
* More decorative plates, this time square ones for an NES-styled project.
|
||||||
|
|
||||||
|
### Improvements
|
||||||
|
|
||||||
|
* Button layout positions for Sega 2P and directional arc layouts have been parameterized.
|
||||||
|
* The decorative plates for the directional arc + W and Sega 2P 9 layout have been split into two files, since there was
|
||||||
|
no reason to keep them as one with multiple pieces anymore.
|
||||||
|
* Tweaks to the horizontal stripes in order to get them to print better.
|
||||||
|
* Renamed "Sega 2P plus one" to Sega 2P 9, following the pattern of the 11 layout.
|
||||||
|
|
||||||
|
### Miscellaneous
|
||||||
|
|
||||||
|
* Renaming of extended side pieces to fit the front/back idiom.
|
||||||
|
* Cleanups to the demos.
|
||||||
|
|
||||||
## v4.4.3
|
## v4.4.3
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
@ -10,10 +10,9 @@ use <frames/pieces/extended/side.scad>
|
|||||||
use <frames/pieces/extended/front-or-back-clean-for-extended-side-aux-and-neutrik.scad>
|
use <frames/pieces/extended/front-or-back-clean-for-extended-side-aux-and-neutrik.scad>
|
||||||
use <frames/pieces/extended/front-or-back-clean-for-extended-side-windowed-horiz-stripes.scad>
|
use <frames/pieces/extended/front-or-back-clean-for-extended-side-windowed-horiz-stripes.scad>
|
||||||
use <panels/inset/lever-and-dir_arc-plus-w-30mm-panel.scad>
|
use <panels/inset/lever-and-dir_arc-plus-w-30mm-panel.scad>
|
||||||
use <panels/inset/sega-2p-plus-one-plus-control-panel-with-mount.scad>
|
use <panels/inset/sega-2p-nine-plus-control-panel-with-mount.scad>
|
||||||
use <misc/decorative-plate-24mm-button.scad>
|
use <misc/decorative-plate-24mm-button.scad>
|
||||||
use <misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-plus-one.scad>
|
use <misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-nine.scad>
|
||||||
use <misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-plus-one-plates.scad>
|
|
||||||
use <misc/dustwasher-lsx-nobi.scad>
|
use <misc/dustwasher-lsx-nobi.scad>
|
||||||
|
|
||||||
top_panel_color = "#5B6579";
|
top_panel_color = "#5B6579";
|
||||||
@ -23,7 +22,7 @@ frame_side_color = "#8E9089";
|
|||||||
top_deco_color = "#8E9089";
|
top_deco_color = "#8E9089";
|
||||||
|
|
||||||
color(top_panel_color) translate([-panel_x/2, 0, frame_z/2-panel_z+0.01]) lever_and_dir_arc_w_30mm_panel();
|
color(top_panel_color) translate([-panel_x/2, 0, frame_z/2-panel_z+0.01]) lever_and_dir_arc_w_30mm_panel();
|
||||||
color(top_panel_color) translate([panel_x/2, 0, frame_z/2-panel_z+0.01]) sega_2p_plus_one_plus_control_panel_with_mount();
|
color(top_panel_color) translate([panel_x/2, 0, frame_z/2-panel_z+0.01]) sega_2p_nine_plus_control_panel_with_mount();
|
||||||
color(frame_side_color) translate([-frame_x/2+4, 0, -2.5]) extended_left_or_right_frame_piece();
|
color(frame_side_color) translate([-frame_x/2+4, 0, -2.5]) extended_left_or_right_frame_piece();
|
||||||
color(frame_side_color) translate([frame_x/2-4, 0, -2.5]) mirror([1, 0, 0]) extended_left_or_right_frame_piece();
|
color(frame_side_color) translate([frame_x/2-4, 0, -2.5]) mirror([1, 0, 0]) extended_left_or_right_frame_piece();
|
||||||
color(frame_top_bottom_color) translate([-frame_x/2+4, 0, -2.5]) horiz_striped_windowed_front_or_back_box_frame_piece_for_extended_side();
|
color(frame_top_bottom_color) translate([-frame_x/2+4, 0, -2.5]) horiz_striped_windowed_front_or_back_box_frame_piece_for_extended_side();
|
||||||
@ -33,7 +32,7 @@ color(frame_top_bottom_color) translate([frame_x/2-4, 0, -2.5]) rotate([180, 180
|
|||||||
color(bottom_panel_color) translate([-panel_x/2, 0, -5-frame_z/2+5]) panel();
|
color(bottom_panel_color) translate([-panel_x/2, 0, -5-frame_z/2+5]) panel();
|
||||||
color(bottom_panel_color) translate([panel_x/2, 0, -5-frame_z/2+5]) panel();
|
color(bottom_panel_color) translate([panel_x/2, 0, -5-frame_z/2+5]) 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-4]) dir_arc_plus_w_30mm_and_sega_2p_nine_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([0, 0, 3+frame_z/2-panel_z]) dir_arc_plus_w_30mm_and_sega_2p_nine_decorative_plate();
|
||||||
color(top_deco_color) translate([-170, 20, 3+frame_z/2-panel_z]) lsx_nobi_dustwasher();
|
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();
|
color(top_deco_color) translate([panel_x-24, 30, 3+frame_z/2-panel_z]) button_24mm_decorative_plate();
|
||||||
|
@ -6,13 +6,12 @@
|
|||||||
include <parameters.scad>
|
include <parameters.scad>
|
||||||
include <components.scad>
|
include <components.scad>
|
||||||
use <frames/pieces/extended/front-or-back.scad>
|
use <frames/pieces/extended/front-or-back.scad>
|
||||||
use <frames/pieces/extended/side-extended-to-bottom.scad>
|
use <frames/pieces/extended/side-extended-to-front.scad>
|
||||||
use <frames/pieces/extended/front-or-back-clean-for-extended-side-aux-and-neutrik.scad>
|
use <frames/pieces/extended/front-or-back-clean-for-extended-side-aux-and-neutrik.scad>
|
||||||
use <panels/inset/lever-and-dir_arc-plus-w-30mm-panel.scad>
|
use <panels/inset/lever-and-dir_arc-plus-w-30mm-panel.scad>
|
||||||
use <panels/inset/sega-2p-plus-one-plus-control-panel-with-mount.scad>
|
use <panels/inset/sega-2p-nine-plus-control-panel-with-mount.scad>
|
||||||
use <misc/decorative-plate-24mm-button.scad>
|
use <misc/decorative-plate-24mm-button.scad>
|
||||||
use <misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-plus-one.scad>
|
use <misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-nine.scad>
|
||||||
use <misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-plus-one-plates.scad>
|
|
||||||
use <misc/dustwasher-lsx-nobi.scad>
|
use <misc/dustwasher-lsx-nobi.scad>
|
||||||
|
|
||||||
top_panel_color = "#5B6579";
|
top_panel_color = "#5B6579";
|
||||||
@ -22,7 +21,7 @@ frame_side_color = "#8E9089";
|
|||||||
top_deco_color = "#8E9089";
|
top_deco_color = "#8E9089";
|
||||||
|
|
||||||
color(top_panel_color) translate([-panel_x/2, 0, frame_z/2-panel_z+0.01]) lever_and_dir_arc_w_30mm_panel();
|
color(top_panel_color) translate([-panel_x/2, 0, frame_z/2-panel_z+0.01]) lever_and_dir_arc_w_30mm_panel();
|
||||||
color(top_panel_color) translate([panel_x/2, 0, frame_z/2-panel_z+0.01]) sega_2p_plus_one_plus_control_panel_with_mount();
|
color(top_panel_color) translate([panel_x/2, 0, frame_z/2-panel_z+0.01]) sega_2p_nine_plus_control_panel_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]) 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_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_front_or_back_frame_piece();
|
color(frame_top_bottom_color) translate([-frame_x/2+4, 0, -2.5]) extended_front_or_back_frame_piece();
|
||||||
@ -32,7 +31,6 @@ color(frame_top_bottom_color) translate([frame_x/2-4, 0, -2.5]) rotate([180, 180
|
|||||||
color(bottom_panel_color) translate([-panel_x/2, 0, -5-frame_z/2+5]) panel();
|
color(bottom_panel_color) translate([-panel_x/2, 0, -5-frame_z/2+5]) panel();
|
||||||
color(bottom_panel_color) translate([panel_x/2, 0, -5-frame_z/2+5]) panel();
|
color(bottom_panel_color) translate([panel_x/2, 0, -5-frame_z/2+5]) 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_nine_decorative_plate();
|
||||||
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([-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();
|
color(top_deco_color) translate([panel_x-24, 30, 3+frame_z/2-panel_z]) button_24mm_decorative_plate();
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
include <parameters.scad>
|
include <parameters.scad>
|
||||||
include <components.scad>
|
include <components.scad>
|
||||||
use <frames/pieces/extended/front-or-back.scad>
|
use <frames/pieces/extended/front-or-back.scad>
|
||||||
use <frames/pieces/extended/side-extended-to-bottom.scad>
|
use <frames/pieces/extended/side-extended-to-front.scad>
|
||||||
use <frames/pieces/extended/front-or-back-clean-for-extended-side-aux-and-neutrik.scad>
|
use <frames/pieces/extended/front-or-back-clean-for-extended-side-aux-and-neutrik.scad>
|
||||||
use <panels/inset/lever-and-dir_arc-plus-w-30mm-panel.scad>
|
use <panels/inset/lever-and-dir_arc-plus-w-30mm-panel.scad>
|
||||||
use <panels/inset/lever-and-sega-2p-6-button-panel-with-aux-with-mount.scad>
|
use <panels/inset/lever-and-sega-2p-6-button-panel-with-aux-with-mount.scad>
|
||||||
|
@ -9,10 +9,9 @@ use <frames/pieces/box/side.scad>
|
|||||||
use <frames/pieces/box/front-or-back.scad>
|
use <frames/pieces/box/front-or-back.scad>
|
||||||
use <frames/pieces/box/front-or-back-aux-and-neutrik.scad>
|
use <frames/pieces/box/front-or-back-aux-and-neutrik.scad>
|
||||||
use <panels/inset/lever-and-dir_arc-plus-w-30mm-panel.scad>
|
use <panels/inset/lever-and-dir_arc-plus-w-30mm-panel.scad>
|
||||||
use <panels/inset/sega-2p-plus-one-plus-control-panel-with-mount.scad>
|
use <panels/inset/sega-2p-nine-plus-control-panel-with-mount.scad>
|
||||||
use <misc/decorative-plate-24mm-button.scad>
|
use <misc/decorative-plate-24mm-button.scad>
|
||||||
use <misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-plus-one.scad>
|
use <misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-nine.scad>
|
||||||
use <misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-plus-one-plates.scad>
|
|
||||||
use <misc/dustwasher-lsx-nobi.scad>
|
use <misc/dustwasher-lsx-nobi.scad>
|
||||||
|
|
||||||
panel_color = "red";
|
panel_color = "red";
|
||||||
@ -20,7 +19,7 @@ base_color = "gray";
|
|||||||
top_deco_color = "white";
|
top_deco_color = "white";
|
||||||
|
|
||||||
color(panel_color) translate([-panel_x/2, 0, frame_z/2-panel_z+0.01]) lever_and_dir_arc_w_30mm_panel();
|
color(panel_color) translate([-panel_x/2, 0, frame_z/2-panel_z+0.01]) lever_and_dir_arc_w_30mm_panel();
|
||||||
color(panel_color) translate([panel_x/2, 0, frame_z/2-panel_z+0.01]) sega_2p_plus_one_plus_control_panel_with_mount();
|
color(panel_color) translate([panel_x/2, 0, frame_z/2-panel_z+0.01]) sega_2p_nine_plus_control_panel_with_mount();
|
||||||
color(base_color) translate([panel_x/2, 0, -2.5]) rotate([0, 180, 0]) side_box_frame_piece();
|
color(base_color) translate([panel_x/2, 0, -2.5]) rotate([0, 180, 0]) side_box_frame_piece();
|
||||||
color(base_color) translate([-panel_x/2, 0, -2.5]) side_box_frame_piece();
|
color(base_color) translate([-panel_x/2, 0, -2.5]) side_box_frame_piece();
|
||||||
color(base_color) translate([panel_x/2, 0, -2.5]) front_or_back_box_frame_piece();
|
color(base_color) translate([panel_x/2, 0, -2.5]) front_or_back_box_frame_piece();
|
||||||
@ -30,6 +29,6 @@ color(base_color) translate([-panel_x/2, 0, -2.5]) rotate([180, 180, 0]) front_o
|
|||||||
color(base_color) translate([-panel_x/2, 0, -5-frame_z/2+5]) panel();
|
color(base_color) translate([-panel_x/2, 0, -5-frame_z/2+5]) panel();
|
||||||
color(base_color) translate([panel_x/2, 0, -5-frame_z/2+5]) panel();
|
color(base_color) translate([panel_x/2, 0, -5-frame_z/2+5]) panel();
|
||||||
|
|
||||||
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([0, 0, 3+frame_z/2-panel_z]) dir_arc_plus_w_30mm_and_sega_2p_nine_decorative_plate();
|
||||||
color(top_deco_color) translate([-170, 20, 3+frame_z/2-panel_z]) lsx_nobi_dustwasher();
|
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();
|
color(top_deco_color) translate([panel_x-24, 30, 3+frame_z/2-panel_z]) button_24mm_decorative_plate();
|
||||||
|
@ -10,14 +10,14 @@ use <frames/pieces/box/side.scad>
|
|||||||
use <frames/pieces/box/front-or-back.scad>
|
use <frames/pieces/box/front-or-back.scad>
|
||||||
use <frames/pieces/box/front-or-back-aux-and-neutrik.scad>
|
use <frames/pieces/box/front-or-back-aux-and-neutrik.scad>
|
||||||
use <panels/overhang/left-lever-and-dir_arc-plus-w-30mm-panel.scad>
|
use <panels/overhang/left-lever-and-dir_arc-plus-w-30mm-panel.scad>
|
||||||
use <panels/overhang/right-sega-2p-plus-one-plus-control-panel-with-mount.scad>
|
use <panels/overhang/right-sega-2p-nine-plus-control-panel-with-mount.scad>
|
||||||
use <panels/overhang/left-or-right-panel.scad>
|
use <panels/overhang/left-or-right-panel.scad>
|
||||||
use <misc/decorative-plate-24mm-button.scad>
|
use <misc/decorative-plate-24mm-button.scad>
|
||||||
use <misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-plus-one.scad>
|
use <misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-nine.scad>
|
||||||
use <misc/dustwasher-lsx-nobi.scad>
|
use <misc/dustwasher-lsx-nobi.scad>
|
||||||
|
|
||||||
color("#C12E1F") translate([-panel_x/2-25, 0, frame_z/2+75]) lever_and_dir_arc_w_30mm_left_overhang_panel();
|
color("#C12E1F") translate([-panel_x/2-25, 0, frame_z/2+75]) lever_and_dir_arc_w_30mm_left_overhang_panel();
|
||||||
color("#C12E1F") translate([panel_x/2+25, 0, frame_z/2+75]) sega_2p_plus_one_plus_control_right_overhang_panel_with_mount();
|
color("#C12E1F") translate([panel_x/2+25, 0, frame_z/2+75]) sega_2p_nine_plus_control_right_overhang_panel_with_mount();
|
||||||
color("black") translate([-frame_x/2+5-25, -55, -2.5]) front_or_back_box_frame_piece();
|
color("black") translate([-frame_x/2+5-25, -55, -2.5]) front_or_back_box_frame_piece();
|
||||||
color("black") rotate([0, 180, 0]) translate([-frame_x/2+5-25, -55, -2.5]) front_or_back_box_frame_piece();
|
color("black") rotate([0, 180, 0]) translate([-frame_x/2+5-25, -55, -2.5]) front_or_back_box_frame_piece();
|
||||||
color("black") translate([-frame_x/2+5-50, 0, -2.5]) side_box_frame_piece();
|
color("black") translate([-frame_x/2+5-50, 0, -2.5]) side_box_frame_piece();
|
||||||
@ -29,6 +29,6 @@ color("#C12E1F") translate([-panel_x/2-25, 0, -5-frame_z/2-75]) left_or_right_ov
|
|||||||
color("#C12E1F") mirror([0, 1, 0]) translate([panel_x/2+25, 0, -5-frame_z/2-75]) rotate([0, 0, 180])
|
color("#C12E1F") mirror([0, 1, 0]) translate([panel_x/2+25, 0, -5-frame_z/2-75]) rotate([0, 0, 180])
|
||||||
left_or_right_overhang_panel();
|
left_or_right_overhang_panel();
|
||||||
|
|
||||||
color("black") translate([0, 0, 3+frame_z/2+150]) dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate();
|
color("black") translate([0, 0, 3+frame_z/2+150]) dir_arc_plus_w_30mm_and_sega_2p_nine_decorative_plate();
|
||||||
color("black") translate([-195, 25, 3+frame_z/2+150]) lsx_nobi_dustwasher();
|
color("black") translate([-195, 25, 3+frame_z/2+150]) lsx_nobi_dustwasher();
|
||||||
color("black") translate([panel_x, 25, 3+frame_z/2+150]) button_24mm_decorative_plate();
|
color("black") translate([panel_x, 25, 3+frame_z/2+150]) button_24mm_decorative_plate();
|
||||||
|
@ -11,6 +11,10 @@ module m4_hole_countersink() {
|
|||||||
cylinder(r1=m4_bolt_radius, r2=m4_bolt_countersink_radius, h=3.2, $fn=50, center=true);
|
cylinder(r1=m4_bolt_radius, r2=m4_bolt_countersink_radius, h=3.2, $fn=50, center=true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module m6_hole() {
|
||||||
|
cylinder(r=m6_bolt_radius, h=100, $fn=50, center=true);
|
||||||
|
}
|
||||||
|
|
||||||
module panel_holes() {
|
module panel_holes() {
|
||||||
// holes for mount bolts
|
// holes for mount bolts
|
||||||
translate([panel_to_frame_point_x, panel_to_frame_point_y, 0]) m4_hole();
|
translate([panel_to_frame_point_x, panel_to_frame_point_y, 0]) m4_hole();
|
||||||
@ -90,6 +94,12 @@ module aux_control_three_button_cluster() {
|
|||||||
translate([37, 0, 0]) button_24mm_hole();
|
translate([37, 0, 0]) button_24mm_hole();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module aux_control_three_button_tight_cluster() {
|
||||||
|
translate([-32, 0, 0]) button_24mm_hole();
|
||||||
|
translate([0, 0, 0]) button_24mm_hole();
|
||||||
|
translate([32, 0, 0]) button_24mm_hole();
|
||||||
|
}
|
||||||
|
|
||||||
module m2_mount_post() {
|
module m2_mount_post() {
|
||||||
difference() {
|
difference() {
|
||||||
cylinder(r=m2_screw_selftap_radius*2.25, h=3, $fn=6, center=true);
|
cylinder(r=m2_screw_selftap_radius*2.25, h=3, $fn=6, center=true);
|
||||||
@ -460,12 +470,18 @@ module sega_2p() {
|
|||||||
translate([sega_2p_column_4_offset, -19-9, 0]) sega_2p_p1();
|
translate([sega_2p_column_4_offset, -19-9, 0]) sega_2p_p1();
|
||||||
}
|
}
|
||||||
|
|
||||||
module sega_2p_plus_one() {
|
module sega_2p_nine() {
|
||||||
sega_2p();
|
sega_2p();
|
||||||
// just my guesstimate on this one
|
// just my guesstimate on this one
|
||||||
translate([0, -19-9-11-19-9-11, 0]) sega_2p_p1();
|
translate([0, -19-9-11-19-9-11, 0]) sega_2p_p1();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module sega_2p_eleven() {
|
||||||
|
sega_2p_nine();
|
||||||
|
translate([sega_2p_column_5_offset, 0, 0]) sega_2p_p1();
|
||||||
|
translate([sega_2p_column_5_offset, -19-9-11, 0]) sega_2p_p1();
|
||||||
|
}
|
||||||
|
|
||||||
module shiokenstar() {
|
module shiokenstar() {
|
||||||
translate([-172, 32, 0]) dir_arc_24mm_directionals();
|
translate([-172, 32, 0]) dir_arc_24mm_directionals();
|
||||||
sega_2p();
|
sega_2p();
|
||||||
|
38
src/extras/bss-ae/README.md
Normal file
38
src/extras/bss-ae/README.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# BSS Arcade Edition
|
||||||
|
|
||||||
|
Pieces for mounting to a Qanba 2009 in order to create the Buildable Stick System - Arcade Edition.
|
||||||
|
|
||||||
|
## Pieces
|
||||||
|
|
||||||
|
* 4 `interconnect-x` --- creating the internal support for joining two rows of panels
|
||||||
|
* 6 `frames/pieces/interconnect` --- (core project) the standard piece for joining two+ columns of panels
|
||||||
|
* 4 `extended-side-no-back` --- the extended side pieces, flush on the back to connect to each other
|
||||||
|
* 4 `frames/pieces/extended/front-or-back` --- (core project) the front extended piece
|
||||||
|
* 2 `extended-back` --- a small piece that fits into the Qanba 2009 "lip" for running cables
|
||||||
|
* 1 `extended-back-left-mount`
|
||||||
|
* 1 `extended-back-right-mount` --- extended back pieces that can be mounted to the Qanba 2009 base
|
||||||
|
* 1 `panel-front-left-mount`
|
||||||
|
* 1 `panel-front-right-mount` --- blank panels that can be mounted to the Qanba 2009 base
|
||||||
|
* 6 `panels/inset/panel` --- the rest of the bottom panels
|
||||||
|
* 4 `panels/inset/` panels of your choice for the front controls
|
||||||
|
* 2 `panel-three-aux-buttons` --- for aux controls in the back row
|
||||||
|
* 2 `panel-three-aux-buttons-and-rocker-hole` --- for aux controls and the wired rocker in the back row
|
||||||
|
* 4 `decorative-plate-aux-control-tight-three-button-cluster` --- for decorating the aux control clusters
|
||||||
|
* 4 `src/misc/` decorative plates of your choice for the front controls, and similar miscellany
|
||||||
|
* 4 `mount-spacer` --- making a flush mount between the enclosure and the base
|
||||||
|
|
||||||
|
## Hardware
|
||||||
|
|
||||||
|
* 32 45mm M4 hex brass standoffs (or equivalent) for each panel/frame compartment
|
||||||
|
* 64 8-12mm M4 countersunk hex bolts for attaching panels to the compartments
|
||||||
|
* 4 8-12mm M3 hex bolts and 4 M3 flange nuts for attaching rocker switches to the back panels
|
||||||
|
* 4 40mm M6 bolts for connecting the enclosure to the base
|
||||||
|
* 4 M6 flange nuts
|
||||||
|
|
||||||
|
## Components
|
||||||
|
|
||||||
|
* 2 controller boards, e.g. the RP2040 Advanced Breakout Board
|
||||||
|
* buttons and/or levers as desired
|
||||||
|
* necessary wiring
|
||||||
|
|
||||||
|
For the rest of the build (e.g. mounting a level to a panel), see the core README.
|
@ -0,0 +1,24 @@
|
|||||||
|
/* Decorative plate for aux buttons.
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
decorative_radius_scale = 1.5;
|
||||||
|
jumbo_decorative_radius_scale = 0;
|
||||||
|
include <components.scad>
|
||||||
|
|
||||||
|
module aux_control_three_button_tight_cluster_decorative_plate() {
|
||||||
|
difference() {
|
||||||
|
// get a 2mm slice of the bigger button cylinders
|
||||||
|
translate([0, 0, -25]) hull() aux_control_three_button_tight_cluster();
|
||||||
|
// keep a thin slice
|
||||||
|
translate([0, 0, -100]) cube([500, 500, 198], center=true);
|
||||||
|
translate([0, 0, 100]) cube([500, 500, 198], center=true);
|
||||||
|
// cut out the normal holes
|
||||||
|
translate([0, 0, -1]) aux_control_three_button_tight_cluster();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
aux_control_three_button_tight_cluster_decorative_plate();
|
26
src/extras/bss-ae/extended-back-left-mount.scad
Normal file
26
src/extras/bss-ae/extended-back-left-mount.scad
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/* A back piece of the enclosure, with a mounting hole.
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
use <extended-back.scad>
|
||||||
|
|
||||||
|
// X: inner post to post (inclusive) is approx. 428.625mm, so half that, minus half the post itself
|
||||||
|
// (41.28mm) is how much in from a normal panel to put the M6 mounting hole
|
||||||
|
// Y: eyeballed it to 30mm
|
||||||
|
mount_hole_x = (panel_x / 2) - (panel_x - ((428.625 / 2) - (41.28 / 2)));
|
||||||
|
mount_hole_y = (panel_y / 2) + 30;
|
||||||
|
|
||||||
|
module left_mount_extended_back() {
|
||||||
|
difference() {
|
||||||
|
extended_back();
|
||||||
|
translate([mount_hole_x, -mount_hole_y, -30]) m6_hole();
|
||||||
|
// punch out the back for cables
|
||||||
|
cube([frame_x-70, frame_y+160, frame_z-20], center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
left_mount_extended_back();
|
15
src/extras/bss-ae/extended-back-right-mount.scad
Normal file
15
src/extras/bss-ae/extended-back-right-mount.scad
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/* A back piece of the enclosure, with a mounting hole.
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
use <extended-back-left-mount.scad>
|
||||||
|
|
||||||
|
module right_mount_extended_back() {
|
||||||
|
mirror([1, 0, 0]) left_mount_extended_back();
|
||||||
|
}
|
||||||
|
|
||||||
|
right_mount_extended_back();
|
30
src/extras/bss-ae/extended-back.scad
Normal file
30
src/extras/bss-ae/extended-back.scad
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* A back piece extended the rest of the depth of the base.
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
use <frames/pieces/extended/front-or-back.scad>
|
||||||
|
|
||||||
|
module back_piece_extension() {
|
||||||
|
// combine the original wall with a copy to "pull" the wall out
|
||||||
|
hull() {
|
||||||
|
linear_extrude(height=80) bottom_piece_wall();
|
||||||
|
linear_extrude(height=(frame_wall-frame_bevel_height)) bottom_piece_wall();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module extended_back() {
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
clean_front_or_back();
|
||||||
|
translate([0, -frame_y/2+frame_wall, 0]) rotate([90, 0, 0]) back_piece_extension();
|
||||||
|
}
|
||||||
|
cube([frame_x-60, frame_y+160-10, frame_z-10], center=true);
|
||||||
|
translate([0, -frame_y/2-35, 0]) cube([frame_x-20, 70, frame_z-10], center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extended_back();
|
60
src/extras/bss-ae/extended-side-no-back.scad
Normal file
60
src/extras/bss-ae/extended-side-no-back.scad
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/* Create an extended side that is flush on the back to lay against another side.
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
use <frames/complete/left-frame.scad>
|
||||||
|
use <frames/pieces/box/side.scad>
|
||||||
|
use <frames/pieces/extended/front-or-back.scad>
|
||||||
|
|
||||||
|
module side_frame_piece_wall() {
|
||||||
|
// 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_and_bottom_frame_piece_wall() {
|
||||||
|
// get a slice of the pieces, 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
|
||||||
|
side_frame_piece_wall();
|
||||||
|
projection(cut=true) translate([0, -frame_y/2+frame_wall, 0]) rotate([90, 90, 0]) bottom_piece_extension();
|
||||||
|
}
|
||||||
|
|
||||||
|
module side_and_bottom_frame_piece_extension() {
|
||||||
|
// combine the original with a shrunken piece to "pull" the wall out
|
||||||
|
hull() {
|
||||||
|
linear_extrude(height=frame_extension_y) scale([0.5, 0.90, 1]) side_and_bottom_frame_piece_wall();
|
||||||
|
linear_extrude(height=frame_extension_y) scale([0.5, 1, 1])
|
||||||
|
difference() {
|
||||||
|
side_frame_piece_wall();
|
||||||
|
// remove the front piece so it doesn't interfere with the front extend
|
||||||
|
translate([0, -frame_y/2, 0]) square([frame_x, frame_y], center=true);
|
||||||
|
}
|
||||||
|
linear_extrude(height=frame_bevel_height) side_and_bottom_frame_piece_wall();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module extra_extended_left_or_right_frame_piece() {
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
difference() {
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
translate([-frame_x/2+frame_bevel_height*2, 0, 0])
|
||||||
|
rotate([0, -90, 0]) side_and_bottom_frame_piece_extension();
|
||||||
|
}
|
||||||
|
// minus the back piece where the wall would be, since there is no wall and the pieces and panels
|
||||||
|
// go flush against one another
|
||||||
|
translate([0, frame_y/2-(frame_wall/2), 0]) cube([frame_x*2, frame_wall, frame_z], center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extra_extended_left_or_right_frame_piece();
|
30
src/extras/bss-ae/interconnect-x.scad
Normal file
30
src/extras/bss-ae/interconnect-x.scad
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* Interconnect frames along the x-axis (the longer side)
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
use <frames/pieces/box/front-or-back.scad>
|
||||||
|
|
||||||
|
module interconnect_frame_half_piece() {
|
||||||
|
translate([0, frame_y/2-frame_wall, 0]) difference() {
|
||||||
|
front_or_back_box_frame_piece();
|
||||||
|
translate([0, (-frame_y+frame_wall)/2-panel_overhang_amount, 0])
|
||||||
|
cube([overhang_panel_x, frame_wall+panel_overhang_amount*2, frame_z], center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module interconnect_frame_piece() {
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
// slight translate is to make this a 2-manifold in OpenSCAD
|
||||||
|
translate([0, -0.01, 0]) interconnect_frame_half_piece();
|
||||||
|
mirror([0, 1, 0]) interconnect_frame_half_piece();
|
||||||
|
}
|
||||||
|
rotate([0, 0, 90]) translate([-frame_y/2, 0, 0]) frame_cable_routing_hole();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interconnect_frame_piece();
|
17
src/extras/bss-ae/mount-spacer.scad
Normal file
17
src/extras/bss-ae/mount-spacer.scad
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/* Just a simple washer to go between the frame post and the arcade enclosure.
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
|
||||||
|
module mount_spacer() {
|
||||||
|
difference() {
|
||||||
|
cylinder(r=25, h=1.25, $fn=50, center=true);
|
||||||
|
m6_hole();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mount_spacer();
|
24
src/extras/bss-ae/panel-front-left-mount.scad
Normal file
24
src/extras/bss-ae/panel-front-left-mount.scad
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/* A panel with a mount point for the front left of the enclosure.
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
use <panels/inset/panel.scad>
|
||||||
|
|
||||||
|
// X: inner post to post (inclusive) is approx. 428.625mm, so half that, minus half the post itself
|
||||||
|
// (41.28mm) is how much in from a normal panel to put the M6 mounting hole
|
||||||
|
// Y: eyeballed it to 2": 50.80mm
|
||||||
|
mount_hole_x = (panel_x / 2) - (panel_x - ((428.625 / 2) - (41.28 / 2)));
|
||||||
|
mount_hole_y = (panel_y / 2) - 50.80;
|
||||||
|
|
||||||
|
module front_left_mount_panel() {
|
||||||
|
difference() {
|
||||||
|
panel();
|
||||||
|
translate([-mount_hole_x, -mount_hole_y, 0]) m6_hole();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
front_left_mount_panel();
|
14
src/extras/bss-ae/panel-front-right-mount.scad
Normal file
14
src/extras/bss-ae/panel-front-right-mount.scad
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
use <panel-front-left-mount.scad>
|
||||||
|
|
||||||
|
module front_right_mount_panel() {
|
||||||
|
mirror([1, 0, 0]) front_left_mount_panel();
|
||||||
|
}
|
||||||
|
|
||||||
|
front_right_mount_panel();
|
@ -0,0 +1,18 @@
|
|||||||
|
/* A panel for mounting a couple aux buttons in a out of the way spot.
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
|
||||||
|
module three_aux_button_and_20mm_panel() {
|
||||||
|
difference() {
|
||||||
|
panel();
|
||||||
|
translate([0, -70, 0]) aux_control_three_button_tight_cluster();
|
||||||
|
translate([0, frame_y/2-30, 0]) rotate([180, 0, 0]) neutrik_d_mount();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
three_aux_button_and_20mm_panel();
|
17
src/extras/bss-ae/panel-three-aux-buttons.scad
Normal file
17
src/extras/bss-ae/panel-three-aux-buttons.scad
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/* A panel for mounting a couple aux buttons in a out of the way spot.
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
|
||||||
|
module three_aux_button_panel() {
|
||||||
|
difference() {
|
||||||
|
panel();
|
||||||
|
translate([0, -70, 0]) aux_control_three_button_tight_cluster();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
three_aux_button_panel();
|
@ -16,12 +16,11 @@ module horiz_striped_windowed_front_or_back_box_frame_piece() {
|
|||||||
difference() {
|
difference() {
|
||||||
front_or_back_box_frame_piece();
|
front_or_back_box_frame_piece();
|
||||||
// subtract frame wall windows
|
// subtract frame wall windows
|
||||||
translate([0, -(frame_y-frame_wall)/2, 17.5]) front_stripe();
|
translate([0, -(frame_y-frame_wall)/2, 18]) front_stripe();
|
||||||
translate([0, -(frame_y-frame_wall)/2, 10.5]) front_stripe();
|
translate([0, -(frame_y-frame_wall)/2, 9]) front_stripe();
|
||||||
translate([0, -(frame_y-frame_wall)/2, 3.5]) front_stripe();
|
translate([0, -(frame_y-frame_wall)/2, 0]) front_stripe();
|
||||||
translate([0, -(frame_y-frame_wall)/2, -3.5]) front_stripe();
|
translate([0, -(frame_y-frame_wall)/2, -9]) front_stripe();
|
||||||
translate([0, -(frame_y-frame_wall)/2, -10.5]) front_stripe();
|
translate([0, -(frame_y-frame_wall)/2, -18]) front_stripe();
|
||||||
translate([0, -(frame_y-frame_wall)/2, -17.5]) 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();
|
||||||
}
|
}
|
||||||
|
@ -16,12 +16,11 @@ module horiz_striped_windowed_side_box_frame_piece() {
|
|||||||
difference() {
|
difference() {
|
||||||
side_box_frame_piece();
|
side_box_frame_piece();
|
||||||
// subtract frame wall windows
|
// subtract frame wall windows
|
||||||
translate([-(frame_x-frame_wall)/2, 0, 17.5]) side_stripe();
|
translate([-(frame_x-frame_wall)/2, 0, 18]) side_stripe();
|
||||||
translate([-(frame_x-frame_wall)/2, 0, 10.5]) side_stripe();
|
translate([-(frame_x-frame_wall)/2, 0, 9]) side_stripe();
|
||||||
translate([-(frame_x-frame_wall)/2, 0, 3.5]) side_stripe();
|
translate([-(frame_x-frame_wall)/2, 0, 0]) side_stripe();
|
||||||
translate([-(frame_x-frame_wall)/2, 0, -3.5]) side_stripe();
|
translate([-(frame_x-frame_wall)/2, 0, -9]) side_stripe();
|
||||||
translate([-(frame_x-frame_wall)/2, 0, -10.5]) side_stripe();
|
translate([-(frame_x-frame_wall)/2, 0, -18]) side_stripe();
|
||||||
translate([-(frame_x-frame_wall)/2, 0, -17.5]) 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();
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ decorative_radius_scale = 1.5;
|
|||||||
jumbo_decorative_radius_scale = 0;
|
jumbo_decorative_radius_scale = 0;
|
||||||
include <components.scad>
|
include <components.scad>
|
||||||
|
|
||||||
module dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate_of_plates() {
|
module dir_arc_plus_w_30mm_and_sega_2p_nine_decorative_plate_of_plates() {
|
||||||
difference() {
|
difference() {
|
||||||
// layout offset + 30 = width for layout plus button width + 12+3 = space around button
|
// layout offset + 30 = width for layout plus button width + 12+3 = space around button
|
||||||
left_plate_x = dir_arc_30mm_column_3_offset + 30 + 12;
|
left_plate_x = dir_arc_30mm_column_3_offset + 30 + 12;
|
||||||
@ -29,8 +29,8 @@ module dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate_of_plates() {
|
|||||||
}
|
}
|
||||||
// cut out the normal holes
|
// cut out the normal holes
|
||||||
translate([-panel_x/2, 0, -1]) dir_arc_w_30mm();
|
translate([-panel_x/2, 0, -1]) dir_arc_w_30mm();
|
||||||
translate([panel_x/2, 0, -1]) sega_2p_plus_one();
|
translate([panel_x/2, 0, -1]) sega_2p_nine();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate_of_plates();
|
dir_arc_plus_w_30mm_and_sega_2p_nine_decorative_plate_of_plates();
|
@ -6,19 +6,19 @@
|
|||||||
include <parameters.scad>
|
include <parameters.scad>
|
||||||
include <components.scad>
|
include <components.scad>
|
||||||
|
|
||||||
module dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate() {
|
module dir_arc_plus_w_30mm_and_sega_2p_nine_decorative_plate() {
|
||||||
difference() {
|
difference() {
|
||||||
// get a 2mm slice of the bigger button cylinders
|
// get a 2mm slice of the bigger button cylinders
|
||||||
union() {
|
union() {
|
||||||
translate([-panel_x/2, 0, -65]) dir_arc_w_30mm();
|
translate([-panel_x/2, 0, -65]) dir_arc_w_30mm();
|
||||||
translate([panel_x/2, 0, -65]) sega_2p_plus_one();
|
translate([panel_x/2, 0, -65]) sega_2p_nine();
|
||||||
}
|
}
|
||||||
translate([0, 0, -100]) cube([500, 500, 198], center=true);
|
translate([0, 0, -100]) cube([500, 500, 198], center=true);
|
||||||
translate([0, 0, 100]) cube([500, 500, 198], center=true);
|
translate([0, 0, 100]) cube([500, 500, 198], center=true);
|
||||||
// cut out the normal holes
|
// cut out the normal holes
|
||||||
translate([-panel_x/2, 0, -1]) dir_arc_w_30mm();
|
translate([-panel_x/2, 0, -1]) dir_arc_w_30mm();
|
||||||
translate([panel_x/2, 0, -1]) sega_2p_plus_one();
|
translate([panel_x/2, 0, -1]) sega_2p_nine();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate();
|
dir_arc_plus_w_30mm_and_sega_2p_nine_decorative_plate();
|
@ -1,4 +1,5 @@
|
|||||||
/*
|
/* Decorative plate for directional buttons.
|
||||||
|
*
|
||||||
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
*/
|
*/
|
||||||
@ -8,19 +9,15 @@ decorative_radius_scale = 1.5;
|
|||||||
jumbo_decorative_radius_scale = 0;
|
jumbo_decorative_radius_scale = 0;
|
||||||
include <components.scad>
|
include <components.scad>
|
||||||
|
|
||||||
module dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate_of_plates() {
|
module dir_arc_plus_w_30mm_plate_decorative_plate() {
|
||||||
difference() {
|
difference() {
|
||||||
// get a 2mm slice of the bigger button cylinders
|
// get a 2mm slice of the bigger button cylinders
|
||||||
union() {
|
translate([-panel_x/2, 0, -25]) hull() dir_arc_w_30mm();
|
||||||
translate([-panel_x/2, 0, -25]) hull() dir_arc_w_30mm();
|
|
||||||
translate([panel_x/2, 0, -25]) hull() sega_2p_plus_one();
|
|
||||||
}
|
|
||||||
translate([0, 0, -100]) cube([500, 500, 198], center=true);
|
translate([0, 0, -100]) cube([500, 500, 198], center=true);
|
||||||
translate([0, 0, 100]) cube([500, 500, 198], center=true);
|
translate([0, 0, 100]) cube([500, 500, 198], center=true);
|
||||||
// cut out the normal holes
|
// cut out the normal holes
|
||||||
translate([-panel_x/2, 0, -1]) dir_arc_w_30mm();
|
translate([-panel_x/2, 0, -1]) dir_arc_w_30mm();
|
||||||
translate([panel_x/2, 0, -1]) sega_2p_plus_one();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate_of_plates();
|
dir_arc_plus_w_30mm_plate_decorative_plate();
|
23
src/misc/decorative-plate-sega-2p-eleven-plate.scad
Normal file
23
src/misc/decorative-plate-sega-2p-eleven-plate.scad
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* Decorative plate for directional buttons.
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
decorative_radius_scale = 1.5;
|
||||||
|
jumbo_decorative_radius_scale = 0;
|
||||||
|
include <components.scad>
|
||||||
|
|
||||||
|
module sega_2p_eleven_plate_decorative_plate() {
|
||||||
|
difference() {
|
||||||
|
// get a 2mm slice of the bigger button cylinders
|
||||||
|
translate([panel_x/2, 0, -25]) hull() sega_2p_eleven();
|
||||||
|
translate([0, 0, -100]) cube([500, 500, 198], center=true);
|
||||||
|
translate([0, 0, 100]) cube([500, 500, 198], center=true);
|
||||||
|
// cut out the normal holes
|
||||||
|
translate([panel_x/2, 0, -1]) sega_2p_eleven();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sega_2p_eleven_plate_decorative_plate();
|
25
src/misc/decorative-plate-sega-2p-nine-plate.scad
Normal file
25
src/misc/decorative-plate-sega-2p-nine-plate.scad
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/* A rounded corner decorative plate for the Sega 2P + 1 button layout.
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
decorative_radius_scale = 1.5;
|
||||||
|
jumbo_decorative_radius_scale = 0;
|
||||||
|
include <components.scad>
|
||||||
|
|
||||||
|
module sega_2p_nine_decorative_plate_of_plates() {
|
||||||
|
difference() {
|
||||||
|
// get a 2mm slice of the bigger button cylinders
|
||||||
|
union() {
|
||||||
|
translate([panel_x/2, 0, -25]) hull() sega_2p_nine();
|
||||||
|
}
|
||||||
|
translate([0, 0, -100]) cube([500, 500, 198], center=true);
|
||||||
|
translate([0, 0, 100]) cube([500, 500, 198], center=true);
|
||||||
|
// cut out the normal holes
|
||||||
|
translate([panel_x/2, 0, -1]) sega_2p_nine();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sega_2p_nine_decorative_plate_of_plates();
|
@ -6,15 +6,15 @@
|
|||||||
include <parameters.scad>
|
include <parameters.scad>
|
||||||
include <components.scad>
|
include <components.scad>
|
||||||
|
|
||||||
module sega_2p_plus_one_decorative_plate() {
|
module sega_2p_nine_decorative_plate() {
|
||||||
difference() {
|
difference() {
|
||||||
// get a 2mm slice of the bigger button cylinders
|
// get a 2mm slice of the bigger button cylinders
|
||||||
translate([0, 0, -55]) sega_2p_plus_one();
|
translate([0, 0, -55]) sega_2p_nine();
|
||||||
translate([0, 0, -100]) cube([500, 500, 198], center=true);
|
translate([0, 0, -100]) cube([500, 500, 198], center=true);
|
||||||
translate([0, 0, 100]) cube([500, 500, 198], center=true);
|
translate([0, 0, 100]) cube([500, 500, 198], center=true);
|
||||||
// cut out the normal holes
|
// cut out the normal holes
|
||||||
translate([0, 0, -1]) sega_2p_plus_one();
|
translate([0, 0, -1]) sega_2p_nine();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sega_2p_plus_one_decorative_plate();
|
sega_2p_nine_decorative_plate();
|
16
src/panels/inset/sega-2p-eleven-panel-with-mount.scad
Normal file
16
src/panels/inset/sega-2p-eleven-panel-with-mount.scad
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/* 11-button Sega 2P panel with PCB mount
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
use <sega-2p-eleven-panel.scad>
|
||||||
|
|
||||||
|
module sega_2p_eleven_panel_with_mount() {
|
||||||
|
sega_2p_eleven_panel();
|
||||||
|
translate([30, -50, -(panel_z/2) - 3]) pcb_mount();
|
||||||
|
}
|
||||||
|
|
||||||
|
sega_2p_eleven_panel_with_mount();
|
17
src/panels/inset/sega-2p-eleven-panel.scad
Normal file
17
src/panels/inset/sega-2p-eleven-panel.scad
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/* A panel with the Sega 2P button layout plus three extra buttons for whatever purpose.
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
|
||||||
|
module sega_2p_eleven_panel() {
|
||||||
|
difference() {
|
||||||
|
panel();
|
||||||
|
sega_2p_eleven();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sega_2p_eleven_panel();
|
@ -6,11 +6,11 @@
|
|||||||
include <parameters.scad>
|
include <parameters.scad>
|
||||||
include <components.scad>
|
include <components.scad>
|
||||||
|
|
||||||
module sega_2p_plus_one_panel() {
|
module sega_2p_nine_panel() {
|
||||||
difference() {
|
difference() {
|
||||||
panel();
|
panel();
|
||||||
sega_2p_plus_one();
|
sega_2p_nine();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sega_2p_plus_one_panel();
|
sega_2p_nine_panel();
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
include <parameters.scad>
|
include <parameters.scad>
|
||||||
include <components.scad>
|
include <components.scad>
|
||||||
use <right-sega-2p-plus-one-panel.scad>
|
use <sega-2p-nine-plus-control-panel.scad>
|
||||||
|
|
||||||
module sega_2p_plus_one_with_mount_right_overhang_panel() {
|
module sega_2p_nine_plus_control_panel_with_mount() {
|
||||||
sega_2p_plus_one_right_overhang_panel();
|
sega_2p_nine_plus_control_panel();
|
||||||
translate([30, -50, -(panel_z/2) - 3]) pcb_mount();
|
translate([30, -50, -(panel_z/2) - 3]) pcb_mount();
|
||||||
}
|
}
|
||||||
|
|
||||||
sega_2p_plus_one_with_mount_right_overhang_panel();
|
sega_2p_nine_plus_control_panel_with_mount();
|
@ -6,13 +6,13 @@
|
|||||||
include <parameters.scad>
|
include <parameters.scad>
|
||||||
include <components.scad>
|
include <components.scad>
|
||||||
|
|
||||||
module sega_2p_plus_one_plus_control_panel() {
|
module sega_2p_nine_plus_control_panel() {
|
||||||
difference() {
|
difference() {
|
||||||
panel();
|
panel();
|
||||||
sega_2p_plus_one();
|
sega_2p_nine();
|
||||||
rotate([0, 0, 180]) side_chopper();
|
rotate([0, 0, 180]) side_chopper();
|
||||||
translate([89, 30, 0]) button_24mm_hole();
|
translate([89, 30, 0]) button_24mm_hole();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sega_2p_plus_one_plus_control_panel();
|
sega_2p_nine_plus_control_panel();
|
@ -5,14 +5,14 @@
|
|||||||
|
|
||||||
include <parameters.scad>
|
include <parameters.scad>
|
||||||
include <components.scad>
|
include <components.scad>
|
||||||
use <right-sega-2p-plus-one-plus-control-panel-with-mount.scad>
|
use <right-sega-2p-nine-plus-control-panel-with-mount.scad>
|
||||||
|
|
||||||
module sega_2p_plus_one_plus_control_right_overhang_panel_with_mount_with_oled() {
|
module sega_2p_nine_plus_control_right_overhang_panel_with_mount_with_oled() {
|
||||||
difference() {
|
difference() {
|
||||||
sega_2p_plus_one_plus_control_right_overhang_panel_with_mount();
|
sega_2p_nine_plus_control_right_overhang_panel_with_mount();
|
||||||
translate([75, 77.5, 0]) oled_ssd1306_mount_cutout();
|
translate([75, 77.5, 0]) oled_ssd1306_mount_cutout();
|
||||||
}
|
}
|
||||||
translate([75, 77.5, 0.5]) oled_ssd1306_mount();
|
translate([75, 77.5, 0.5]) oled_ssd1306_mount();
|
||||||
}
|
}
|
||||||
|
|
||||||
sega_2p_plus_one_plus_control_right_overhang_panel_with_mount_with_oled();
|
sega_2p_nine_plus_control_right_overhang_panel_with_mount_with_oled();
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
include <parameters.scad>
|
include <parameters.scad>
|
||||||
include <components.scad>
|
include <components.scad>
|
||||||
use <sega-2p-plus-one-plus-control-panel.scad>
|
use <right-sega-2p-nine-panel.scad>
|
||||||
|
|
||||||
module sega_2p_plus_one_plus_control_panel_with_mount() {
|
module sega_2p_nine_with_mount_right_overhang_panel() {
|
||||||
sega_2p_plus_one_plus_control_panel();
|
sega_2p_nine_right_overhang_panel();
|
||||||
translate([30, -50, -(panel_z/2) - 3]) pcb_mount();
|
translate([30, -50, -(panel_z/2) - 3]) pcb_mount();
|
||||||
}
|
}
|
||||||
|
|
||||||
sega_2p_plus_one_plus_control_panel_with_mount();
|
sega_2p_nine_with_mount_right_overhang_panel();
|
@ -6,12 +6,12 @@
|
|||||||
include <parameters.scad>
|
include <parameters.scad>
|
||||||
include <components.scad>
|
include <components.scad>
|
||||||
|
|
||||||
module sega_2p_plus_one_right_overhang_panel() {
|
module sega_2p_nine_right_overhang_panel() {
|
||||||
difference() {
|
difference() {
|
||||||
panel_with_raised_overhang();
|
panel_with_raised_overhang();
|
||||||
sega_2p_plus_one();
|
sega_2p_nine();
|
||||||
rotate([0, 0, 180]) side_chopper();
|
rotate([0, 0, 180]) side_chopper();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sega_2p_plus_one_right_overhang_panel();
|
sega_2p_nine_right_overhang_panel();
|
@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
include <components.scad>
|
||||||
|
use <right-sega-2p-nine-plus-control-panel.scad>
|
||||||
|
|
||||||
|
module sega_2p_nine_plus_control_right_overhang_panel_with_mount() {
|
||||||
|
sega_2p_nine_plus_control_right_overhang_panel();
|
||||||
|
translate([30, -50, -(panel_z/2) - 3]) pcb_mount();
|
||||||
|
}
|
||||||
|
|
||||||
|
sega_2p_nine_plus_control_right_overhang_panel_with_mount();
|
@ -6,13 +6,13 @@
|
|||||||
include <parameters.scad>
|
include <parameters.scad>
|
||||||
include <components.scad>
|
include <components.scad>
|
||||||
|
|
||||||
module sega_2p_plus_one_plus_control_right_overhang_panel() {
|
module sega_2p_nine_plus_control_right_overhang_panel() {
|
||||||
difference() {
|
difference() {
|
||||||
panel_with_raised_overhang();
|
panel_with_raised_overhang();
|
||||||
sega_2p_plus_one();
|
sega_2p_nine();
|
||||||
rotate([0, 0, 180]) side_chopper();
|
rotate([0, 0, 180]) side_chopper();
|
||||||
translate([89, 30, 0]) button_24mm_hole();
|
translate([89, 30, 0]) button_24mm_hole();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sega_2p_plus_one_plus_control_right_overhang_panel();
|
sega_2p_nine_plus_control_right_overhang_panel();
|
@ -1,15 +0,0 @@
|
|||||||
/*
|
|
||||||
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
|
|
||||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
*/
|
|
||||||
|
|
||||||
include <parameters.scad>
|
|
||||||
include <components.scad>
|
|
||||||
use <right-sega-2p-plus-one-plus-control-panel.scad>
|
|
||||||
|
|
||||||
module sega_2p_plus_one_plus_control_right_overhang_panel_with_mount() {
|
|
||||||
sega_2p_plus_one_plus_control_right_overhang_panel();
|
|
||||||
translate([30, -50, -(panel_z/2) - 3]) pcb_mount();
|
|
||||||
}
|
|
||||||
|
|
||||||
sega_2p_plus_one_plus_control_right_overhang_panel_with_mount();
|
|
@ -17,6 +17,9 @@ m4_bolt_radius = 2 + hole_tolerance;
|
|||||||
m4_bolt_countersink_radius = 6.1 + hole_tolerance;
|
m4_bolt_countersink_radius = 6.1 + hole_tolerance;
|
||||||
m4_bolt_hex_exterior_radius = 3.6 + hole_tolerance;
|
m4_bolt_hex_exterior_radius = 3.6 + hole_tolerance;
|
||||||
|
|
||||||
|
// M6
|
||||||
|
m6_bolt_radius = 3 + hole_tolerance;
|
||||||
|
|
||||||
// 24mm button
|
// 24mm button
|
||||||
small_button_radius = 12 + hole_tolerance;
|
small_button_radius = 12 + hole_tolerance;
|
||||||
|
|
||||||
@ -111,6 +114,7 @@ slash_height = frame_z-panel_z*3;
|
|||||||
sega_2p_column_2_offset = 30.5;
|
sega_2p_column_2_offset = 30.5;
|
||||||
sega_2p_column_3_offset = sega_2p_column_2_offset + 36;
|
sega_2p_column_3_offset = sega_2p_column_2_offset + 36;
|
||||||
sega_2p_column_4_offset = sega_2p_column_3_offset + 36;
|
sega_2p_column_4_offset = sega_2p_column_3_offset + 36;
|
||||||
|
sega_2p_column_5_offset = sega_2p_column_4_offset + 36;
|
||||||
|
|
||||||
// this offset is from the left edge of the panel
|
// this offset is from the left edge of the panel
|
||||||
sega_2p_column_1_left_panel_edge_offset = 28.06;
|
sega_2p_column_1_left_panel_edge_offset = 28.06;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user