Compare commits
No commits in common. "main" and "v4.7.0" have entirely different histories.
14
CHANGELOG.md
14
CHANGELOG.md
@ -2,20 +2,6 @@
|
||||
|
||||
Included is a summary of changes to the project, by version. Details can be found in the commit history.
|
||||
|
||||
## v4.7.1
|
||||
|
||||
### Fixes
|
||||
|
||||
* Hull-based decorative plates were accidentally grown in v4.7.0 due to ye olde refactoring. They are back to the
|
||||
dimensions they should be (give or take) because there was an underlying bug in how they were geometried pre-v4.7.1.
|
||||
* The docs/ directory in the build now includes the images referred to, especially in the README.
|
||||
|
||||
### Miscellaneous
|
||||
|
||||
* Some README tweaks, including another demonstrative photo.
|
||||
* The build creates both a ZIP of everything, including docs, for humans to download, and also a ZIP of *just* the STLs,
|
||||
to ease uploading to Printables.
|
||||
|
||||
## v4.7.0
|
||||
|
||||
### Features
|
||||
|
6
Makefile
6
Makefile
@ -3,11 +3,11 @@ all:
|
||||
mkdir -p ./build/docs
|
||||
cp ./README.md ./build/README.md
|
||||
cp ./docs/README-objects.md ./build/README-objects.md
|
||||
cp ./docs/* ./build/docs/
|
||||
cp ./docs/assembly-and-tips.md ./build/docs/assembly-and-tips.md
|
||||
cp ./docs/printing-and-materials.md ./build/docs/printing-and-materials.md
|
||||
cp ./LICENSE ./build/LICENSE
|
||||
cp ./CHANGELOG.md ./build/CHANGELOG.md
|
||||
pushd ./build; zip ./buildable-stick-system-`git describe --dirty`-stls-and-docs.zip . -r; popd
|
||||
pushd ./build; zip ./buildable-stick-system-`git describe --dirty`-stls.zip extras frames misc panels -r; popd
|
||||
pushd ./build; zip ./buildable-stick-system-`git describe --dirty`-stls.zip . -r; popd
|
||||
|
||||
clean:
|
||||
rm -rf ./build
|
||||
|
18
README.md
18
README.md
@ -1,6 +1,6 @@
|
||||
# The Buildable Stick System
|
||||
|
||||
Files for 3D printing and building an arcade stick enclosure.
|
||||
Files for 3D printing an arcade stick.
|
||||
|
||||
Have you ever wanted to conjure your own arcade stick out of the ether (well, plastic), or to prototype a new layout or
|
||||
design before sending it to a custom builder? Do you just love having your space filled with arcade stick enclosures,
|
||||
@ -135,16 +135,6 @@ Board, ~$60 for Sanwa buttons and a lever, and ~$20 for miscellaneous connectors
|
||||
full-featured controller with an open source foundation together for around $140. Reducing wall and infill settings
|
||||
will probably save you around $5 of material, and you can probably decide what you want to do from there.
|
||||
|
||||
## FAQ
|
||||
|
||||
### I get a bunch of warnings on not being able to include files when I open them in OpenSCAD, what do I do?
|
||||
|
||||
OpenSCAD pathing is relative to the current working directory by default, which is probably not the `src/` directory.
|
||||
When you start OpenSCAD, you must either start it from inside the project's `src/` directory, or point it at the path to
|
||||
the source files via e.g. `OPENSCADPATH=path/to/buildable-stick-system/src/ openscad`.
|
||||
|
||||
See <https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Include_Statement>.
|
||||
|
||||
## Miscellany
|
||||
|
||||
See the `/docs/` directory for more thoughts too scattered for this document.
|
||||
@ -205,9 +195,3 @@ like the below should suffice in either electronic or printed form:
|
||||
|
||||
> This arcade stick is part of the Buildable Stick System, version X.Y.Z; the source code to this program is available
|
||||
> under the terms of the GNU General Public License, at [LINK].
|
||||
|
||||
## Gallery
|
||||
|
||||
More photos.
|
||||
|
||||

|
||||
|
@ -9,7 +9,7 @@ use <frames/pieces/side-trapezoid.scad>
|
||||
use <frames/pieces/front-or-back-aux-and-neutrik.scad>
|
||||
use <frames/pieces/front-or-back-windowed-horiz-stripes.scad>
|
||||
use <panels/inset/lever-and-dir_arc-plus-w-30mm-panel.scad>
|
||||
use <panels/inset/sega-2p-nine-plus-aux-button-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-dir_arc-plus-w-30mm-and-sega-2p-nine.scad>
|
||||
use <misc/dustwasher-lsx-nobi.scad>
|
||||
@ -21,7 +21,7 @@ frame_side_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]) sega_2p_nine_plus_aux_button_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]) side_trapezoid_frame_piece();
|
||||
color(frame_side_color) translate([frame_x/2-4, 0, -2.5]) mirror([1, 0, 0]) side_trapezoid_frame_piece();
|
||||
color(frame_top_bottom_color) translate([-frame_x/2+4, 0, -2.5]) horiz_striped_windowed_front_or_back_frame_piece();
|
||||
@ -31,6 +31,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(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_nine_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();
|
||||
|
@ -5,33 +5,32 @@
|
||||
|
||||
include <parameters.scad>
|
||||
include <components.scad>
|
||||
use <frames/pieces/front-or-back-aux-and-neutrik.scad>
|
||||
use <frames/pieces/front-or-back-trapezoid.scad>
|
||||
use <frames/pieces/side-trapezoid-extended-to-front-trapezoid.scad>
|
||||
use <panels/inset/lever-and-dir_arc-plus-w-30mm-panel-with-oled.scad>
|
||||
use <panels/inset/sega-2p-nine-plus-aux-button-with-mount.scad>
|
||||
use <frames/pieces/front-or-back-aux-and-neutrik.scad>
|
||||
use <panels/inset/lever-and-dir_arc-plus-w-30mm-panel.scad>
|
||||
use <panels/inset/sega-2p-nine-plus-control-panel-with-mount.scad>
|
||||
use <misc/decorative-plate-24mm-button.scad>
|
||||
use <misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-nine.scad>
|
||||
use <misc/dustwasher-lsx-nobi.scad>
|
||||
|
||||
top_panel_color = "#0086D6";
|
||||
bottom_panel_color = "white";
|
||||
frame_front_color = "white";
|
||||
frame_back_color = "white";
|
||||
frame_side_color = "yellow";
|
||||
top_deco_color = "white";
|
||||
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]) lever_and_dir_arc_w_30mm_panel_with_oled();
|
||||
color(top_panel_color) translate([panel_x/2, 0, frame_z/2-panel_z+0.01]) sega_2p_nine_plus_aux_button_with_mount();
|
||||
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_nine_plus_control_panel_with_mount();
|
||||
color(frame_side_color) translate([-frame_x/2+4, 0, -2.5]) side_trapezoid_extended_to_front_frame_piece();
|
||||
color(frame_side_color) translate([frame_x/2-4, 0, -2.5]) mirror([1, 0, 0]) side_trapezoid_extended_to_front_frame_piece();
|
||||
color(frame_front_color) translate([-frame_x/2+4, 0, -2.5]) front_or_back_trapezoid_frame_piece();
|
||||
color(frame_front_color) translate([frame_x/2-4, 0, -2.5]) front_or_back_trapezoid_frame_piece();
|
||||
color(frame_back_color) translate([-frame_x/2+4, 0, -2.5]) rotate([180, 0, 0]) front_or_back_aux_and_neutrik_frame_piece();
|
||||
color(frame_back_color) translate([frame_x/2-4, 0, -2.5]) rotate([180, 180, 0]) front_or_back_aux_and_neutrik_frame_piece();
|
||||
color(frame_top_bottom_color) translate([-frame_x/2+4, 0, -2.5]) front_or_back_trapezoid_frame_piece();
|
||||
color(frame_top_bottom_color) translate([frame_x/2-4, 0, -2.5]) front_or_back_trapezoid_frame_piece();
|
||||
color(frame_top_bottom_color) translate([-frame_x/2+4, 0, -2.5]) rotate([180, 0, 0]) front_or_back_aux_and_neutrik_frame_piece();
|
||||
color(frame_top_bottom_color) translate([frame_x/2-4, 0, -2.5]) rotate([180, 180, 0]) front_or_back_aux_and_neutrik_frame_piece();
|
||||
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-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]) rotate([180, 0, 0]) 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();
|
||||
|
@ -9,10 +9,11 @@ use <frames/pieces/side.scad>
|
||||
use <frames/pieces/front-or-back.scad>
|
||||
use <frames/pieces/front-or-back-aux-and-neutrik.scad>
|
||||
use <panels/inset/lever-and-dir_arc-plus-w-30mm-panel.scad>
|
||||
use <panels/inset/sega-2p-nine-plus-aux-button-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-dir_arc-plus-w-30mm-and-sega-2p-nine.scad>
|
||||
use <misc/dustwasher-lsx-nobi.scad>
|
||||
use <misc/decorative-corner.scad>
|
||||
|
||||
panel_color = "red";
|
||||
base_color = "gray";
|
||||
@ -20,7 +21,7 @@ top_deco_color = "white";
|
||||
brace_color = "gray";
|
||||
|
||||
color(panel_color) translate([-panel_x/2, 0, frame_z/2-panel_z/2+0.001]) lever_and_dir_arc_w_30mm_panel();
|
||||
color(panel_color) translate([panel_x/2, 0, frame_z/2-panel_z/2+0.001]) sega_2p_nine_plus_aux_button_with_mount();
|
||||
color(panel_color) translate([panel_x/2, 0, frame_z/2-panel_z/2+0.001]) sega_2p_nine_plus_control_panel_with_mount();
|
||||
color(base_color) translate([panel_x/2, 0, 0]) rotate([0, 180, 0]) side_frame_piece();
|
||||
color(base_color) translate([-panel_x/2, 0, 0]) side_frame_piece();
|
||||
color(base_color) translate([panel_x/2, 0, 0]) front_or_back_frame_piece();
|
||||
@ -30,6 +31,11 @@ color(base_color) translate([-panel_x/2, 0, 0]) rotate([180, 0, 0]) front_or_bac
|
||||
color(base_color) translate([-panel_x/2, 0, -frame_z/2+panel_z/2]) panel();
|
||||
color(base_color) translate([panel_x/2, 0, -frame_z/2+panel_z/2]) panel();
|
||||
|
||||
color(brace_color) translate([-panel_x/2, 0, 0]) decorative_corner();
|
||||
color(brace_color) mirror([1, 0, 0]) translate([-panel_x/2, 0, 0]) decorative_corner();
|
||||
color(brace_color) mirror([0, 1, 0]) translate([-panel_x/2, 0, 0]) decorative_corner();
|
||||
color(brace_color) mirror([1, 0, 0]) mirror([0, 1, 0]) translate([-panel_x/2, 0, 0]) decorative_corner();
|
||||
|
||||
color(top_deco_color) translate([0, 0, 4+frame_z/2-panel_z/2+0.001]) dir_arc_plus_w_30mm_and_sega_2p_nine_decorative_plate();
|
||||
color(top_deco_color) translate([-170, 20, 4+frame_z/2-panel_z/2+0.001]) lsx_nobi_dustwasher();
|
||||
color(top_deco_color) translate([panel_x-24, 30, 4+frame_z/2-panel_z/2+0.001]) button_24mm_decorative_plate();
|
||||
|
@ -10,14 +10,14 @@ use <frames/pieces/side.scad>
|
||||
use <frames/pieces/front-or-back.scad>
|
||||
use <frames/pieces/front-or-back-aux-and-neutrik.scad>
|
||||
use <panels/overhang/left-lever-and-dir_arc-plus-w-30mm-panel.scad>
|
||||
use <panels/overhang/right-sega-2p-nine-plus-aux-button-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 <misc/decorative-plate-24mm-button.scad>
|
||||
use <misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-nine.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]) sega_2p_nine_plus_aux_button_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_frame_piece();
|
||||
color("black") rotate([0, 180, 0]) translate([-frame_x/2+5-25, -55, -2.5]) front_or_back_frame_piece();
|
||||
color("black") translate([-frame_x/2+5-50, 0, -2.5]) side_frame_piece();
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 416 KiB |
@ -107,24 +107,16 @@ module m2_mount_post() {
|
||||
}
|
||||
}
|
||||
|
||||
module adafruit_pid_326_oled_ssd1306_mount_post() {
|
||||
cylinder(r=2.25/2, h=8, $fn=50, center=true);
|
||||
module oled_ssd1306_mount() {
|
||||
translate([11.5, 12, 0]) m2_mount_post();
|
||||
translate([11.5, -12, 0]) m2_mount_post();
|
||||
translate([-11.5, 12, 0]) m2_mount_post();
|
||||
translate([-11.5, -12, 0]) m2_mount_post();
|
||||
}
|
||||
|
||||
// aligned to the cutout below
|
||||
module adafruit_pid_326_oled_ssd1306_mount() {
|
||||
translate([12, 13.25, -2]) adafruit_pid_326_oled_ssd1306_mount_post();
|
||||
translate([12, -13.25, -2]) adafruit_pid_326_oled_ssd1306_mount_post();
|
||||
translate([-12, 13.25, -2]) adafruit_pid_326_oled_ssd1306_mount_post();
|
||||
translate([-12, -13.25, -2]) adafruit_pid_326_oled_ssd1306_mount_post();
|
||||
}
|
||||
|
||||
module adafruit_pid_326_oled_ssd1306_mount_cutout() {
|
||||
translate([0, 3.5, 0]) cube([ssd1306_x, ssd1306_y, panel_z+0.1], center=true);
|
||||
translate([0, 0, -ssd1306_z/2]) cube([adafruit_pid_326_oled_ssd1306_cutout_x,
|
||||
adafruit_pid_326_oled_ssd1306_cutout_y, panel_z-ssd1306_z+0.1], center=true);
|
||||
translate([0, 0, -ssd1306_z/2-2]) cube([adafruit_pid_326_oled_ssd1306_cutout_x*3/2,
|
||||
adafruit_pid_326_oled_ssd1306_cutout_y/2, panel_z/2+0.1], center=true);
|
||||
module oled_ssd1306_mount_cutout() {
|
||||
translate([0, 1.9, 0]) cube([25, 14, 5], center=true);
|
||||
translate([0, 0, -1.0]) cube([35, 35, 4], center=true);
|
||||
}
|
||||
|
||||
module m3_mount_post() {
|
||||
|
@ -10,13 +10,11 @@ include <components.scad>
|
||||
|
||||
module aux_control_three_button_tight_cluster_decorative_plate() {
|
||||
difference() {
|
||||
hull() difference() {
|
||||
// get a 2mm slice of the decorative button cylinders
|
||||
translate([0, 0, -50]) aux_control_three_button_tight_cluster();
|
||||
// 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();
|
||||
}
|
||||
|
@ -9,8 +9,8 @@ include <components.scad>
|
||||
|
||||
module button_24mm_decorative_plate() {
|
||||
difference() {
|
||||
// get a 2mm slice of the decorative button cylinders
|
||||
translate([0, 0, -50]) button_24mm_hole();
|
||||
// get a 2mm slice of the bigger button cylinders
|
||||
translate([0, 0, -55]) button_24mm_hole();
|
||||
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
|
||||
|
@ -8,8 +8,8 @@ include <components.scad>
|
||||
|
||||
module dir_arc_plus_w_24mm_8_button_decorative_plate() {
|
||||
difference() {
|
||||
// get a 2mm slice of the decorative button cylinders
|
||||
translate([0, 0, -50]) dir_arc_plus_w_24mm_8_button();
|
||||
// get a 2mm slice of the bigger button cylinders
|
||||
translate([0, 0, -55]) dir_arc_plus_w_24mm_8_button();
|
||||
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
|
||||
|
@ -12,7 +12,7 @@ module dir_arc_plus_w_30mm_and_sega_2p_nine_decorative_superplate() {
|
||||
difference() {
|
||||
union() {
|
||||
hull() difference() {
|
||||
// get a 2mm slice of the decorative button cylinders
|
||||
// get a 2mm slice of the bigger button cylinders
|
||||
union() {
|
||||
translate([-panel_x/2, 0, -50]) dir_arc_w_30mm();
|
||||
translate([panel_x/2, 0, -50]) sega_2p_nine();
|
||||
|
@ -8,10 +8,10 @@ include <components.scad>
|
||||
|
||||
module dir_arc_plus_w_30mm_and_sega_2p_nine_decorative_plate() {
|
||||
difference() {
|
||||
// get a 2mm slice of the jumbo decorative button cylinders
|
||||
// get a 2mm slice of the bigger button cylinders
|
||||
union() {
|
||||
translate([-panel_x/2, 0, -70]) dir_arc_w_30mm();
|
||||
translate([panel_x/2, 0, -70]) sega_2p_nine();
|
||||
translate([-panel_x/2, 0, -65]) dir_arc_w_30mm();
|
||||
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);
|
||||
|
@ -10,12 +10,10 @@ include <components.scad>
|
||||
|
||||
module dir_arc_plus_w_30mm_plate_decorative_plate() {
|
||||
difference() {
|
||||
hull() difference() {
|
||||
// get a 2mm slice of the decorative button cylinders
|
||||
translate([-panel_x/2, 0, -50]) dir_arc_w_30mm();
|
||||
// get a 2mm slice of the bigger button cylinders
|
||||
translate([-panel_x/2, 0, -25]) hull() dir_arc_w_30mm();
|
||||
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]) dir_arc_w_30mm();
|
||||
}
|
||||
|
@ -8,8 +8,8 @@ include <components.scad>
|
||||
|
||||
module dir_arc_plus_w_30mm_decorative_plate() {
|
||||
difference() {
|
||||
// get a 2mm slice of the decorative button cylinders
|
||||
translate([0, 0, -50]) dir_arc_w_30mm();
|
||||
// get a 2mm slice of the bigger button cylinders
|
||||
translate([0, 0, -55]) dir_arc_w_30mm();
|
||||
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
|
||||
|
@ -8,8 +8,8 @@ include <components.scad>
|
||||
|
||||
module sega_2p_6_button_decorative_plate() {
|
||||
difference() {
|
||||
// get a 2mm slice of the decorative button cylinders
|
||||
translate([0, 0, -50]) sega_2p_6_button();
|
||||
// get a 2mm slice of the bigger button cylinders
|
||||
translate([0, 0, -55]) sega_2p_6_button();
|
||||
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
|
||||
|
@ -10,12 +10,10 @@ include <components.scad>
|
||||
|
||||
module sega_2p_eleven_plate_decorative_plate() {
|
||||
difference() {
|
||||
hull() difference() {
|
||||
// get a 2mm slice of the decorative button cylinders
|
||||
translate([panel_x/2, 0, -50]) sega_2p_eleven();
|
||||
// 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();
|
||||
}
|
||||
|
@ -8,17 +8,17 @@ include <parameters.scad>
|
||||
decorative_radius_scale = 1.5;
|
||||
include <components.scad>
|
||||
|
||||
module sega_2p_nine_decorative_plate() {
|
||||
module sega_2p_nine_decorative_plate_of_plates() {
|
||||
difference() {
|
||||
hull() difference() {
|
||||
// get a 2mm slice of the decorative button cylinders
|
||||
translate([panel_x/2, 0, -50]) sega_2p_nine();
|
||||
// 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();
|
||||
sega_2p_nine_decorative_plate_of_plates();
|
||||
|
@ -8,8 +8,8 @@ include <components.scad>
|
||||
|
||||
module sega_2p_nine_decorative_plate() {
|
||||
difference() {
|
||||
// get a 2mm slice of the decorative button cylinders
|
||||
translate([0, 0, -50]) sega_2p_nine();
|
||||
// get a 2mm slice of the bigger button cylinders
|
||||
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);
|
||||
// cut out the normal holes
|
||||
|
@ -9,8 +9,8 @@ include <components.scad>
|
||||
|
||||
module sega_2p_decorative_plate() {
|
||||
difference() {
|
||||
// get a 2mm slice of the decorative button cylinders
|
||||
translate([0, 0, -50]) sega_2p();
|
||||
// get a 2mm slice of the bigger button cylinders
|
||||
translate([0, 0, -55]) sega_2p();
|
||||
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
|
||||
|
@ -1,24 +0,0 @@
|
||||
/* Wrap a smaller width hex spacer with plastic to get it to fit in our standard post hole.
|
||||
*
|
||||
* Since the hex spacers can vary in width, you may have to adjust the inner dimensions
|
||||
* to make this work right for your piece, but this worked right for mine. YMMV.
|
||||
*
|
||||
* SPDX-FileCopyrightText: © 2025 Brian S. Stephan <bss@incorporeal.org>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
include <parameters.scad>
|
||||
include <components.scad>
|
||||
|
||||
module small_m4_hole() {
|
||||
scale([1, 1, 2]) cylinder(r=3.25, h=frame_z, $fn=6, center=true);
|
||||
}
|
||||
|
||||
module m4_hex_spacer_sleeve() {
|
||||
difference() {
|
||||
resize([0, 0, 45]) frame_hex_bolt_hole();
|
||||
small_m4_hole();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
m4_hex_spacer_sleeve();
|
@ -1,18 +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 <lever-and-dir_arc-plus-w-30mm-panel.scad>
|
||||
|
||||
module lever_and_dir_arc_w_30mm_panel_with_oled() {
|
||||
difference() {
|
||||
lever_and_dir_arc_w_30mm_panel();
|
||||
translate([0, -(panel_y/2 - 22), 0]) adafruit_pid_326_oled_ssd1306_mount_cutout();
|
||||
}
|
||||
translate([0, -(panel_y/2 - 22), 0]) adafruit_pid_326_oled_ssd1306_mount();
|
||||
}
|
||||
|
||||
lever_and_dir_arc_w_30mm_panel_with_oled();
|
@ -5,11 +5,11 @@
|
||||
|
||||
include <parameters.scad>
|
||||
include <components.scad>
|
||||
use <sega-2p-nine-plus-aux-button.scad>
|
||||
use <sega-2p-nine-plus-control-panel.scad>
|
||||
|
||||
module sega_2p_nine_plus_aux_button_with_mount() {
|
||||
sega_2p_nine_plus_aux_button();
|
||||
module sega_2p_nine_plus_control_panel_with_mount() {
|
||||
sega_2p_nine_plus_control_panel();
|
||||
translate([30, -50, -(panel_z/2) - 3]) pcb_mount();
|
||||
}
|
||||
|
||||
sega_2p_nine_plus_aux_button_with_mount();
|
||||
sega_2p_nine_plus_control_panel_with_mount();
|
@ -6,7 +6,7 @@
|
||||
include <parameters.scad>
|
||||
include <components.scad>
|
||||
|
||||
module sega_2p_nine_plus_aux_button() {
|
||||
module sega_2p_nine_plus_control_panel() {
|
||||
difference() {
|
||||
panel();
|
||||
sega_2p_nine();
|
||||
@ -14,4 +14,4 @@ module sega_2p_nine_plus_aux_button() {
|
||||
}
|
||||
}
|
||||
|
||||
sega_2p_nine_plus_aux_button();
|
||||
sega_2p_nine_plus_control_panel();
|
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* 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-with-mount.scad>
|
||||
|
||||
module sega_2p_nine_plus_control_right_overhang_panel_with_mount_with_oled() {
|
||||
difference() {
|
||||
sega_2p_nine_plus_control_right_overhang_panel_with_mount();
|
||||
translate([75, 77.5, 0]) oled_ssd1306_mount_cutout();
|
||||
}
|
||||
translate([75, 77.5, 0.5]) oled_ssd1306_mount();
|
||||
}
|
||||
|
||||
sega_2p_nine_plus_control_right_overhang_panel_with_mount_with_oled();
|
@ -5,11 +5,11 @@
|
||||
|
||||
include <parameters.scad>
|
||||
include <components.scad>
|
||||
use <right-sega-2p-nine-plus-aux-button.scad>
|
||||
use <right-sega-2p-nine-plus-control-panel.scad>
|
||||
|
||||
module sega_2p_nine_plus_aux_button_right_overhang_panel_with_mount() {
|
||||
sega_2p_nine_plus_aux_button_right_overhang_panel();
|
||||
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_aux_button_right_overhang_panel_with_mount();
|
||||
sega_2p_nine_plus_control_right_overhang_panel_with_mount();
|
@ -6,7 +6,7 @@
|
||||
include <parameters.scad>
|
||||
include <components.scad>
|
||||
|
||||
module sega_2p_nine_plus_aux_button_right_overhang_panel() {
|
||||
module sega_2p_nine_plus_control_right_overhang_panel() {
|
||||
difference() {
|
||||
panel_with_raised_overhang();
|
||||
sega_2p_nine();
|
||||
@ -15,4 +15,4 @@ module sega_2p_nine_plus_aux_button_right_overhang_panel() {
|
||||
}
|
||||
}
|
||||
|
||||
sega_2p_nine_plus_aux_button_right_overhang_panel();
|
||||
sega_2p_nine_plus_control_right_overhang_panel();
|
@ -134,13 +134,6 @@ stand_x = 5;
|
||||
stand_y = frame_z;
|
||||
stand_z = 15;
|
||||
|
||||
// oled cutout stuff
|
||||
ssd1306_x = 23;
|
||||
ssd1306_y = 12;
|
||||
ssd1306_z = 1;
|
||||
adafruit_pid_326_oled_ssd1306_cutout_x = 30;
|
||||
adafruit_pid_326_oled_ssd1306_cutout_y = 32;
|
||||
|
||||
|
||||
// LAYOUTS
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user