Compare commits
8 Commits
aa92e57fe0
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
0fd3880fa2
|
|||
|
d028736d5a
|
|||
|
80ce81c465
|
|||
|
8b5d994847
|
|||
|
852cef821c
|
|||
|
bf2f8a8a17
|
|||
|
1aea9221ff
|
|||
|
ea4beca89d
|
10
README.md
10
README.md
@@ -16,7 +16,7 @@ Randomus](https://webirc.randomus.net/#buildable-stick-system)!**
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
[Photo of a completed inset panel-based stick.]
|
[Photo of a completed overhang panel-based stick.]
|
||||||
|
|
||||||
Originally an attempt to make a couple customized STL files for the [OpenStickCommunity Fightstick
|
Originally an attempt to make a couple customized STL files for the [OpenStickCommunity Fightstick
|
||||||
Case](https://github.com/OpenStickCommunity/Hardware/tree/main/Fightstick%20Case), the changes ballooned to fit my
|
Case](https://github.com/OpenStickCommunity/Hardware/tree/main/Fightstick%20Case), the changes ballooned to fit my
|
||||||
@@ -57,11 +57,15 @@ about what the types of parts are and how to use them:
|
|||||||
these is that they aren't as reusable as the inset panels, since the inset panels can go anywhere, but the
|
these is that they aren't as reusable as the inset panels, since the inset panels can go anywhere, but the
|
||||||
overhang panels must be designed to not overlap with other overhang panels, so you might have to make more custom
|
overhang panels must be designed to not overlap with other overhang panels, so you might have to make more custom
|
||||||
variants depending on where you put things.
|
variants depending on where you put things.
|
||||||
* `misc/`
|
* `plates/`
|
||||||
* Pieces that I haven't organized better (yet) --- there are decorative plates for top buttons and similar to give
|
* Flat pieces used for cosmetic or connective reasons --- decorative plates for top buttons and similar to give
|
||||||
more color variance and some layers to the arcade stick, some very simple dustwashers, plates that fit rocker
|
more color variance and some layers to the arcade stick, some very simple dustwashers, plates that fit rocker
|
||||||
switches and the like in Neutrik D or 20mm holes, and a lever mount spacer for getting your lever shaft at the
|
switches and the like in Neutrik D or 20mm holes, and a lever mount spacer for getting your lever shaft at the
|
||||||
desired height. You don't *need* any of these, but you'll probably use a few.
|
desired height. You don't *need* any of these, but you'll probably use a few.
|
||||||
|
* `misc/`
|
||||||
|
* Pieces that I haven't organized better (yet) --- odd things and scratch ideas, mostly. There are some decorative
|
||||||
|
corners for a bit more height/nicer seams, a sleeve to make smaller hex spacers fit in the hole as they're
|
||||||
|
supposed to, things of that nature.
|
||||||
* `extras/`
|
* `extras/`
|
||||||
* Various experiments and things not directly related to making an arcade stick. At time of writing, there's a
|
* Various experiments and things not directly related to making an arcade stick. At time of writing, there's a
|
||||||
couple pieces for a little stand for the stick, solely for vanity purposes.
|
couple pieces for a little stand for the stick, solely for vanity purposes.
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ use <frames/pieces/front-or-back-aux-and-neutrik.scad>
|
|||||||
use <frames/pieces/front-or-back-windowed-horiz-stripes.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/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-aux-button-with-mount.scad>
|
||||||
use <misc/decorative-plate-24mm-button.scad>
|
use <plates/decorative-plate-24mm-button.scad>
|
||||||
use <misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-nine.scad>
|
use <plates/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-nine.scad>
|
||||||
use <misc/dustwasher-lsx-nobi.scad>
|
use <plates/dustwasher-lsx-nobi.scad>
|
||||||
|
|
||||||
top_panel_color = "#5B6579";
|
top_panel_color = "#5B6579";
|
||||||
bottom_panel_color = "#8E9089";
|
bottom_panel_color = "#8E9089";
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ use <frames/pieces/front-or-back-trapezoid.scad>
|
|||||||
use <frames/pieces/front-or-back-aux-and-neutrik.scad>
|
use <frames/pieces/front-or-back-aux-and-neutrik.scad>
|
||||||
use <panels/inset/lever-and-ergo-wasd-five-panel-with-oled.scad>
|
use <panels/inset/lever-and-ergo-wasd-five-panel-with-oled.scad>
|
||||||
use <panels/inset/ergo-nine-plus-aux-button-with-mount.scad>
|
use <panels/inset/ergo-nine-plus-aux-button-with-mount.scad>
|
||||||
use <misc/decorative-plate-24mm-button.scad>
|
use <plates/decorative-plate-24mm-button.scad>
|
||||||
use <misc/decorative-plate-ergo-wasd-five-30mm-and-ergo-nine-30mm.scad>
|
use <plates/decorative-plate-ergo-wasd-five-30mm-and-ergo-nine-30mm.scad>
|
||||||
use <misc/dustwasher-lsx-nobi.scad>
|
use <plates/dustwasher-lsx-nobi.scad>
|
||||||
|
|
||||||
top_panel_color = "#0086D6";
|
top_panel_color = "#0086D6";
|
||||||
bottom_panel_color = "white";
|
bottom_panel_color = "white";
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ use <frames/pieces/side-trapezoid-extended-to-front-trapezoid.scad>
|
|||||||
use <frames/pieces/front-or-back-aux-and-neutrik.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/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>
|
||||||
use <misc/dustwasher-jlf.scad>
|
use <plates/dustwasher-jlf.scad>
|
||||||
|
|
||||||
top_panel_color = "#5B6579";
|
top_panel_color = "#5B6579";
|
||||||
bottom_panel_color = "#8E9089";
|
bottom_panel_color = "#8E9089";
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ use <frames/pieces/front-or-back.scad>
|
|||||||
use <frames/pieces/front-or-back-aux-and-neutrik.scad>
|
use <frames/pieces/front-or-back-aux-and-neutrik.scad>
|
||||||
use <panels/inset/lever-and-ergo-wasd-five-panel-with-oled.scad>
|
use <panels/inset/lever-and-ergo-wasd-five-panel-with-oled.scad>
|
||||||
use <panels/inset/ergo-nine-plus-aux-button-with-mount.scad>
|
use <panels/inset/ergo-nine-plus-aux-button-with-mount.scad>
|
||||||
use <misc/decorative-plate-24mm-button.scad>
|
use <plates/decorative-plate-24mm-button.scad>
|
||||||
use <misc/decorative-plate-ergo-wasd-five-30mm-and-ergo-nine-30mm.scad>
|
use <plates/decorative-plate-ergo-wasd-five-30mm-and-ergo-nine-30mm.scad>
|
||||||
use <misc/dustwasher-lsx-nobi.scad>
|
use <plates/dustwasher-lsx-nobi.scad>
|
||||||
|
|
||||||
panel_color = "red";
|
panel_color = "red";
|
||||||
base_color = "gray";
|
base_color = "gray";
|
||||||
@@ -23,8 +23,8 @@ color(panel_color) translate([-panel_x/2, 0, frame_z/2-panel_z/2+0.001]) lever_a
|
|||||||
color(panel_color) translate([panel_x/2, 0, frame_z/2-panel_z/2+0.001]) ergo_nine_plus_aux_button_panel_with_mount();
|
color(panel_color) translate([panel_x/2, 0, frame_z/2-panel_z/2+0.001]) ergo_nine_plus_aux_button_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]) 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]) side_frame_piece();
|
||||||
color(base_color) translate([panel_x/2, 0, 0]) front_or_back_frame_piece();
|
color(base_color) translate([panel_x/2, 0, 0]) clean_edge_front_or_back_frame_piece();
|
||||||
color(base_color) translate([-panel_x/2, 0, 0]) front_or_back_frame_piece();
|
color(base_color) translate([-panel_x/2, 0, 0]) clean_edge_front_or_back_frame_piece();
|
||||||
color(base_color) translate([panel_x/2, 0, 0]) rotate([180, 180, 0]) front_or_back_aux_and_neutrik_frame_piece();
|
color(base_color) translate([panel_x/2, 0, 0]) rotate([180, 180, 0]) front_or_back_aux_and_neutrik_frame_piece();
|
||||||
color(base_color) translate([-panel_x/2, 0, 0]) rotate([180, 0, 0]) front_or_back_aux_and_neutrik_frame_piece();
|
color(base_color) translate([-panel_x/2, 0, 0]) rotate([180, 0, 0]) front_or_back_aux_and_neutrik_frame_piece();
|
||||||
/* 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(); */
|
||||||
|
|||||||
@@ -12,14 +12,14 @@ 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/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-aux-button-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 <plates/decorative-plate-24mm-button.scad>
|
||||||
use <misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-nine.scad>
|
use <plates/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-nine.scad>
|
||||||
use <misc/dustwasher-lsx-nobi.scad>
|
use <plates/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_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_aux_button_right_overhang_panel_with_mount();
|
||||||
color("black") translate([-frame_x/2+5-25, -55, -2.5]) front_or_back_frame_piece();
|
color("black") translate([-frame_x/2+5-25, -55, -2.5]) clean_edge_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") rotate([0, 180, 0]) translate([-frame_x/2+5-25, -55, -2.5]) clean_edge_front_or_back_frame_piece();
|
||||||
color("black") translate([-frame_x/2+5-50, 0, -2.5]) side_frame_piece();
|
color("black") translate([-frame_x/2+5-50, 0, -2.5]) side_frame_piece();
|
||||||
color("black") rotate([0, 180, 0]) translate([-frame_x/2+5-50, 0, -2.5]) side_frame_piece();
|
color("black") rotate([0, 180, 0]) translate([-frame_x/2+5-50, 0, -2.5]) side_frame_piece();
|
||||||
color("black") rotate([180, 0, 0]) translate([-frame_x/2+5-25, -55, -2.5]) front_or_back_aux_and_neutrik_frame_piece();
|
color("black") rotate([180, 0, 0]) translate([-frame_x/2+5-25, -55, -2.5]) front_or_back_aux_and_neutrik_frame_piece();
|
||||||
|
|||||||
@@ -27,17 +27,17 @@ The pieces you need to print (all colors to your taste):
|
|||||||
The above gets you the basics. Some common things you may also want:
|
The above gets you the basics. Some common things you may also want:
|
||||||
|
|
||||||
* **Mounting Neutrik connectors:** Neutrik D connectors can mount flush to the inside of the frame, but you can choose
|
* **Mounting Neutrik connectors:** Neutrik D connectors can mount flush to the inside of the frame, but you can choose
|
||||||
to have a little decorative plate (`misc/neutrik-d-plate.stl` for added depth or color choices on the outside of the
|
to have a little decorative plate (`plates/neutrik-d-plate.stl` for added depth or color choices on the outside of the
|
||||||
frame, if you'd like.
|
frame, if you'd like.
|
||||||
* **Mounting a 24mm switch:** a rocker switch can also be mounted in the Neutrik D connector, but it needs to be placed
|
* **Mounting a 24mm switch:** a rocker switch can also be mounted in the Neutrik D connector, but it needs to be placed
|
||||||
into a `misc/neutrik-d-plate-24mm-hole.stl` plate, and the plate mounted to the frame.
|
into a `plates/neutrik-d-plate-24mm-hole.stl` plate, and the plate mounted to the frame.
|
||||||
* **Flair for the auxillary buttons:** the three buttons in a row on the back of the frame can also get some style, just
|
* **Flair for the auxillary buttons:** the three buttons in a row on the back of the frame can also get some style, just
|
||||||
place a `misc/decorative-plate-aux-control-three-button-cluster.stl` between the buttons and the frame. This only
|
place a `plates/decorative-plate-aux-control-three-button-cluster.stl` between the buttons and the frame. This only
|
||||||
works for screw-in buttons.
|
works for screw-in buttons.
|
||||||
* **Flair for the top buttons:** same as above, a decorative plate for top panel layouts --- e.g.
|
* **Flair for the top buttons:** same as above, a decorative plate for top panel layouts --- e.g.
|
||||||
`misc/decorative-plate-sega-2p.stl` --- can be sandwiched between the buttons and panel to add some style. This also
|
`plates/decorative-plate-sega-2p.stl` --- can be sandwiched between the buttons and panel to add some style. This also
|
||||||
only tends to work on screw-in buttons.
|
only tends to work on screw-in buttons.
|
||||||
* **Dustwashers/flair:** same deal, if you want to print one, use e.g. `misc/dustwasher-jlf.stl`.
|
* **Dustwashers/flair:** same deal, if you want to print one, use e.g. `plates/dustwasher-jlf.stl`.
|
||||||
|
|
||||||
## Putting a BSS Stick Together
|
## Putting a BSS Stick Together
|
||||||
|
|
||||||
@@ -53,9 +53,9 @@ following is the most consistent way I've found to put one together.
|
|||||||
overall assembly works with your components, so again get your buttons, lever, etc., in place. You can secure them at
|
overall assembly works with your components, so again get your buttons, lever, etc., in place. You can secure them at
|
||||||
this point.
|
this point.
|
||||||
1. If you are using a button decorative plate that spans two panels --- e.g.
|
1. If you are using a button decorative plate that spans two panels --- e.g.
|
||||||
`misc/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-plus-one` --- take care to align the two panels as tightly
|
`plates/decorative-plate-dir_arc-plus-w-30mm-and-sega-2p-plus-one` --- take care to align the two panels as tightly
|
||||||
as possible, and accurately, as they will be hard to adjust once everything is secured and in the frame.
|
as possible, and accurately, as they will be hard to adjust once everything is secured and in the frame.
|
||||||
2. If using a lever, don't forget the lever mount spacer --- `misc/lever-mount-sanwa-seimitsu` --- if you want it,
|
2. If using a lever, don't forget the lever mount spacer --- `plates/lever-mount-sanwa-seimitsu` --- if you want it,
|
||||||
and tighten those mounting bolts now as well.
|
and tighten those mounting bolts now as well.
|
||||||
3. Create the frame box by combining your frame piece parts, box or extended, together. This will be relatively stable
|
3. Create the frame box by combining your frame piece parts, box or extended, together. This will be relatively stable
|
||||||
just via friction fit.
|
just via friction fit.
|
||||||
|
|||||||
@@ -512,73 +512,79 @@ module sega_2p_eleven() {
|
|||||||
|
|
||||||
// BSS ERGO - 30mm
|
// BSS ERGO - 30mm
|
||||||
|
|
||||||
module ergo_wasd_30mm() {
|
module wasd_30mm() {
|
||||||
button_30mm_hole(); // W
|
button_30mm_hole(); // W
|
||||||
translate([0, -36, 0]) button_30mm_hole(); // S
|
translate([0, -36, 0]) button_30mm_hole(); // S
|
||||||
translate([-34.5, -36-9, 0]) button_30mm_hole(); // A
|
translate([-34.5, -36-9, 0]) button_30mm_hole(); // A
|
||||||
translate([34.5, -36-9, 0]) button_30mm_hole(); // D
|
translate([34.5, -36-9, 0]) button_30mm_hole(); // D
|
||||||
}
|
}
|
||||||
|
|
||||||
module ergo_six_30mm() {
|
module wasd_six_30mm() {
|
||||||
ergo_wasd_30mm();
|
wasd_30mm();
|
||||||
translate([-34.5, -9, 0]) button_30mm_hole(); // left of W
|
translate([-34.5, -9, 0]) button_30mm_hole(); // left of W
|
||||||
translate([34.5, -9, 0]) button_30mm_hole(); // right of W
|
translate([34.5, -9, 0]) button_30mm_hole(); // right of W
|
||||||
}
|
}
|
||||||
|
|
||||||
module ergo_eight_30mm() {
|
module wasd_eight_30mm() {
|
||||||
ergo_six_30mm();
|
wasd_six_30mm();
|
||||||
translate([34.5*1.9, -9*3, 0]) button_30mm_hole(); // top right of right of W
|
translate([34.5*1.9, -9*3, 0]) button_30mm_hole(); // top right of right of W
|
||||||
translate([34.5*1.9, -36-9*3, 0]) button_30mm_hole(); // right of D
|
translate([34.5*1.9, -36-9*3, 0]) button_30mm_hole(); // right of D
|
||||||
}
|
}
|
||||||
|
|
||||||
module ergo_wasd_five_30mm() {
|
module ergo_wasd_five_30mm() {
|
||||||
translate([-51.75, 65.5, 0]) rotate([0, 0, 10]) {
|
translate([-51.75, 65.5, 0]) rotate([0, 0, 10]) {
|
||||||
ergo_wasd_30mm();
|
wasd_30mm();
|
||||||
|
}
|
||||||
|
translate([0, 0, 0]) sega_2p_nine_thumb_button();
|
||||||
|
}
|
||||||
|
|
||||||
|
module ergo_wasd_seven_30mm() {
|
||||||
|
translate([-51.75, 65.5, 0]) rotate([0, 0, 10]) {
|
||||||
|
wasd_six_30mm();
|
||||||
}
|
}
|
||||||
translate([0, 0, 0]) sega_2p_nine_thumb_button();
|
translate([0, 0, 0]) sega_2p_nine_thumb_button();
|
||||||
}
|
}
|
||||||
|
|
||||||
module ergo_nine_30mm() {
|
module ergo_nine_30mm() {
|
||||||
translate([-51.75, 65.5, 0]) rotate([0, 0, 10]) {
|
translate([-51.75, 65.5, 0]) rotate([0, 0, 10]) {
|
||||||
ergo_eight_30mm();
|
wasd_eight_30mm();
|
||||||
}
|
}
|
||||||
translate([0, 0, 0]) sega_2p_nine_thumb_button();
|
translate([0, 0, 0]) sega_2p_nine_thumb_button();
|
||||||
}
|
}
|
||||||
|
|
||||||
// untested
|
|
||||||
// BSS ERGO - 24mm
|
// BSS ERGO - 24mm
|
||||||
/* module ergo_wasd() { */
|
module wasd_24mm() {
|
||||||
/* button_24mm_hole(); // W */
|
button_24mm_hole(); // W
|
||||||
/* translate([0, -27, 0]) button_24mm_hole(); // S */
|
translate([0, -27, 0]) button_24mm_hole(); // S
|
||||||
/* translate([-26, -27-7, 0]) button_24mm_hole(); // A */
|
translate([-26, -27-7, 0]) button_24mm_hole(); // A
|
||||||
/* translate([26, -27-7, 0]) button_24mm_hole(); // D */
|
translate([26, -27-7, 0]) button_24mm_hole(); // D
|
||||||
/* } */
|
}
|
||||||
|
|
||||||
/* module ergo_six() { */
|
module wasd_six_24mm() {
|
||||||
/* ergo_wasd(); */
|
wasd_24mm();
|
||||||
/* translate([-26, -7, 0]) button_24mm_hole(); // left of W */
|
translate([-26, -7, 0]) button_24mm_hole(); // left of W
|
||||||
/* translate([26, -7, 0]) button_24mm_hole(); // right of W */
|
translate([26, -7, 0]) button_24mm_hole(); // right of W
|
||||||
/* } */
|
}
|
||||||
|
|
||||||
/* module ergo_eight() { */
|
module wasd_eight_24mm() {
|
||||||
/* ergo_six(); */
|
wasd_six_24mm();
|
||||||
/* translate([26*2-2, -7*3, 0]) button_24mm_hole(); // top right of right of W */
|
translate([26*2-2, -7*3, 0]) button_24mm_hole(); // top right of right of W
|
||||||
/* translate([26*2-2, -27-7*3, 0]) button_24mm_hole(); // top right of right of W */
|
translate([26*2-2, -27-7*3, 0]) button_24mm_hole(); // top right of right of W
|
||||||
/* } */
|
}
|
||||||
|
|
||||||
/* module ergo_wasd_five() { */
|
module ergo_wasd_five_24mm() {
|
||||||
/* translate([-63.25, 65.5, 0]) rotate([0, 0, 10]) { */
|
translate([-63.25, 65.5, 0]) rotate([0, 0, 10]) {
|
||||||
/* ergo_wasd(); */
|
wasd_24mm();
|
||||||
/* } */
|
}
|
||||||
/* translate([0, 0, 0]) sega_2p_nine_thumb_button(); */
|
translate([0, 0, 0]) sega_2p_nine_thumb_button();
|
||||||
/* } */
|
}
|
||||||
|
|
||||||
/* module ergo_nine() { */
|
module ergo_nine_24mm() {
|
||||||
/* translate([-63.25, 65.5, 0]) rotate([0, 0, 10]) { */
|
translate([-63.25, 65.5, 0]) rotate([0, 0, 10]) {
|
||||||
/* ergo_eight(); */
|
wasd_eight_24mm();
|
||||||
/* } */
|
}
|
||||||
/* translate([0, 0, 0]) sega_2p_nine_thumb_button(); */
|
translate([0, 0, 0]) sega_2p_nine_thumb_button();
|
||||||
/* } */
|
}
|
||||||
|
|
||||||
module shiokenstar() {
|
module shiokenstar() {
|
||||||
translate([-172, 32, 0]) dir_arc_24mm_directionals();
|
translate([-172, 32, 0]) dir_arc_24mm_directionals();
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ use <frames/pieces/front-or-back.scad>
|
|||||||
|
|
||||||
module interconnect_frame_half_piece() {
|
module interconnect_frame_half_piece() {
|
||||||
translate([0, frame_y/2-frame_wall, 0]) difference() {
|
translate([0, frame_y/2-frame_wall, 0]) difference() {
|
||||||
front_or_back_frame_piece();
|
clean_edge_front_or_back_frame_piece();
|
||||||
translate([0, (-frame_y+frame_wall)/2-panel_overhang_amount, 0])
|
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);
|
cube([overhang_panel_x, frame_wall+panel_overhang_amount*2, frame_z], center=true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ use <front-or-back.scad>
|
|||||||
|
|
||||||
module front_or_back_aux_and_neutrik_frame_piece() {
|
module front_or_back_aux_and_neutrik_frame_piece() {
|
||||||
difference() {
|
difference() {
|
||||||
front_or_back_frame_piece();
|
clean_edge_front_or_back_frame_piece();
|
||||||
|
|
||||||
// aux button holes
|
// aux button holes
|
||||||
translate([-35.25, -101.5, 0]) rotate([90, 0, 0]) aux_control_three_button_cluster();
|
translate([-35.25, -101.5, 0]) rotate([90, 0, 0]) aux_control_three_button_cluster();
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ module mount_column_cutout() {
|
|||||||
module front_or_back_inner_wall_frame_base_piece() {
|
module front_or_back_inner_wall_frame_base_piece() {
|
||||||
difference() {
|
difference() {
|
||||||
// Z is scaled so that some part of the original part inner wall is retained
|
// Z is scaled so that some part of the original part inner wall is retained
|
||||||
scale([1, 1, inner_frame_z_decorative_scale]) front_or_back_frame_piece();
|
scale([1, 1, inner_frame_z_decorative_scale]) clean_edge_front_or_back_frame_piece();
|
||||||
// minus the outer wall
|
// minus the outer wall
|
||||||
translate([0, -(frame_y-frame_wall)/2, 0]) cube([frame_x, frame_wall, frame_z], center=true);
|
translate([0, -(frame_y-frame_wall)/2, 0]) cube([frame_x, frame_wall, frame_z], center=true);
|
||||||
// minus half of the mounting posts (the other half provided by the outer wall)
|
// minus half of the mounting posts (the other half provided by the outer wall)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ module clean_front_or_back() {
|
|||||||
|
|
||||||
module bottom_piece_wall() {
|
module bottom_piece_wall() {
|
||||||
// get a slice of the piece (before the bevel), to use it in extruding
|
// 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])
|
projection(cut=true) rotate([-90, 0, 0]) translate([0, frame_y/2-frame_wall+0.01, 0])
|
||||||
clean_front_or_back();
|
clean_front_or_back();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,12 +25,12 @@ module bottom_piece_extension() {
|
|||||||
// combine the original with a shrunken piece to "pull" the wall out
|
// combine the original with a shrunken piece to "pull" the wall out
|
||||||
hull() {
|
hull() {
|
||||||
linear_extrude(height=frame_extension_y) scale([1, 0.5, 1]) bottom_piece_wall();
|
linear_extrude(height=frame_extension_y) scale([1, 0.5, 1]) bottom_piece_wall();
|
||||||
linear_extrude(height=(frame_wall-frame_bevel_height)) bottom_piece_wall();
|
linear_extrude(height=frame_wall) bottom_piece_wall();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module front_or_back_trapezoid_frame_piece() {
|
module front_or_back_trapezoid_frame_piece() {
|
||||||
clean_front_or_back();
|
clean_edge_front_or_back_frame_piece();
|
||||||
translate([0, -frame_y/2+frame_wall, 0]) rotate([90, 0, 0]) bottom_piece_extension();
|
translate([0, -frame_y/2+frame_wall, 0]) rotate([90, 0, 0]) bottom_piece_extension();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ module backslashes() {
|
|||||||
|
|
||||||
module backslashes_windowed_front_or_back_frame_piece() {
|
module backslashes_windowed_front_or_back_frame_piece() {
|
||||||
difference() {
|
difference() {
|
||||||
front_or_back_frame_piece();
|
clean_edge_front_or_back_frame_piece();
|
||||||
// subtract slashes from the frame wall
|
// subtract slashes from the frame wall
|
||||||
backslashes();
|
backslashes();
|
||||||
// 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
|
||||||
@@ -29,12 +29,4 @@ module backslashes_windowed_front_or_back_frame_piece() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module backslashes_windowed_front_or_back_frame_piece_for_extended_side() {
|
backslashes_windowed_front_or_back_frame_piece();
|
||||||
difference() {
|
|
||||||
backslashes_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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
backslashes_windowed_front_or_back_frame_piece_for_extended_side();
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ use <front-or-back-windowed-backslashes.scad>
|
|||||||
|
|
||||||
module forwardslashes_windowed_front_or_back_frame_piece() {
|
module forwardslashes_windowed_front_or_back_frame_piece() {
|
||||||
difference() {
|
difference() {
|
||||||
front_or_back_frame_piece();
|
clean_edge_front_or_back_frame_piece();
|
||||||
// subtract slashes from the frame wall
|
// subtract slashes from the frame wall
|
||||||
mirror([0, 0, 1]) backslashes();
|
mirror([0, 0, 1]) backslashes();
|
||||||
// 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
|
||||||
@@ -19,12 +19,4 @@ module forwardslashes_windowed_front_or_back_frame_piece() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module forwardslashes_windowed_front_or_back_frame_piece_for_extended_side() {
|
forwardslashes_windowed_front_or_back_frame_piece();
|
||||||
difference() {
|
|
||||||
forwardslashes_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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
forwardslashes_windowed_front_or_back_frame_piece_for_extended_side();
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ module front_horiz_stripes() {
|
|||||||
|
|
||||||
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();
|
clean_edge_front_or_back_frame_piece();
|
||||||
// subtract frame wall windows
|
// subtract frame wall windows
|
||||||
front_horiz_stripes();
|
front_horiz_stripes();
|
||||||
// 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
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ module front_or_back_window() {
|
|||||||
|
|
||||||
module windowed_front_or_back_frame_piece() {
|
module windowed_front_or_back_frame_piece() {
|
||||||
difference() {
|
difference() {
|
||||||
front_or_back_frame_piece();
|
clean_edge_front_or_back_frame_piece();
|
||||||
// subtract frame wall window
|
// subtract frame wall window
|
||||||
front_or_back_window();
|
front_or_back_window();
|
||||||
// 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
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ include <components.scad>
|
|||||||
use <frames/complete/left-frame.scad>
|
use <frames/complete/left-frame.scad>
|
||||||
use <side.scad>
|
use <side.scad>
|
||||||
|
|
||||||
|
piece_width = panel_support_width+frame_wall+frame_mount_column_width;
|
||||||
module front_or_back_frame_piece() {
|
module front_or_back_frame_piece() {
|
||||||
piece_width = panel_support_width+frame_wall+frame_mount_column_width;
|
|
||||||
intersection() {
|
intersection() {
|
||||||
left_frame();
|
left_frame();
|
||||||
difference() {
|
difference() {
|
||||||
@@ -22,4 +22,21 @@ module front_or_back_frame_piece() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
front_or_back_frame_piece();
|
// there's something with the print quality/slicing where a couple layers
|
||||||
|
// around the hex hole get fat in the walls, making this not flush with a
|
||||||
|
// sibling piece. this removal makes it so the pieces don't touch
|
||||||
|
// HOWEVER, the side piece uses front_or_back_frame_piece() as a difference,
|
||||||
|
// so if we removed the little chop from that piece, it'd make the
|
||||||
|
// side_frame_piece() bigger, defeating the purpose, so what we'll actually
|
||||||
|
// print is this one and there'll be a little gap in between as desired
|
||||||
|
//
|
||||||
|
// front/back pieces that build on this shape should inherit from clean_edge_
|
||||||
|
module clean_edge_front_or_back_frame_piece() {
|
||||||
|
difference() {
|
||||||
|
front_or_back_frame_piece();
|
||||||
|
translate([panel_x/2, -(panel_y/2-15), 0]) cube([5, 30, inner_frame_z*2], center=true);
|
||||||
|
translate([-panel_x/2, -(panel_y/2-15), 0]) cube([5, 30, inner_frame_z*2], center=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
clean_edge_front_or_back_frame_piece();
|
||||||
|
|||||||
@@ -11,18 +11,15 @@ use <front-or-back-trapezoid.scad>
|
|||||||
|
|
||||||
module side_and_bottom_frame_piece_wall() {
|
module side_and_bottom_frame_piece_wall() {
|
||||||
// get a slice of the pieces, to use it in extruding
|
// 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
|
projection(cut=true) rotate([0, 90, 0]) translate([frame_x/2-frame_wall+0.01, 0, 0]) side_frame_piece();
|
||||||
// not creating a clean thing to cut, so we just take the whole wall and use that
|
projection(cut=true) translate([0, -frame_y/2+frame_wall+0.01, 0]) rotate([90, 90, 0]) bottom_piece_extension();
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module side_and_bottom_frame_piece_extension() {
|
module side_and_bottom_frame_piece_extension() {
|
||||||
// combine the original with a shrunken piece to "pull" the wall out
|
// combine the original with a shrunken piece to "pull" the wall out
|
||||||
hull() {
|
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, 0.90, 1]) side_and_bottom_frame_piece_wall();
|
||||||
linear_extrude(height=frame_bevel_height) side_and_bottom_frame_piece_wall();
|
linear_extrude(height=frame_wall) side_and_bottom_frame_piece_wall();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,7 +29,7 @@ module side_trapezoid_extended_to_front_frame_piece() {
|
|||||||
// chop off the old edge which is getting replaced with the extension
|
// 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]) 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();
|
translate([-frame_x/2+frame_wall, 0, 0]) rotate([0, -90, 0]) side_and_bottom_frame_piece_extension();
|
||||||
}
|
}
|
||||||
|
|
||||||
side_trapezoid_extended_to_front_frame_piece();
|
side_trapezoid_extended_to_front_frame_piece();
|
||||||
|
|||||||
@@ -10,17 +10,14 @@ 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 piece, to use it in extruding
|
||||||
// this doesn't use the side_frame_piece because of the 45 degree angle geometry
|
projection(cut=true) rotate([0, 90, 0]) translate([frame_x/2-frame_wall+0.01, 0, 0]) side_frame_piece();
|
||||||
// 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() {
|
module side_frame_piece_extension() {
|
||||||
// combine the original with a shrunken piece to "pull" the wall out
|
// combine the original with a shrunken piece to "pull" the wall out
|
||||||
hull() {
|
hull() {
|
||||||
linear_extrude(height=frame_extension_y) scale([0.5, 0.85, 1]) side_frame_piece_wall();
|
linear_extrude(height=frame_extension_y) scale([0.5, 0.85, 1]) side_frame_piece_wall();
|
||||||
linear_extrude(height=frame_bevel_height) side_frame_piece_wall();
|
linear_extrude(height=frame_wall) side_frame_piece_wall();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,7 +27,7 @@ module side_trapezoid_frame_piece() {
|
|||||||
// chop off the old edge which is getting replaced with the extension
|
// 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]) 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();
|
translate([-frame_x/2+frame_wall, 0, 0]) rotate([0, -90, 0]) side_frame_piece_extension();
|
||||||
}
|
}
|
||||||
|
|
||||||
side_trapezoid_frame_piece();
|
side_trapezoid_frame_piece();
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ frame_extension_y = 25;
|
|||||||
|
|
||||||
// this sinks the bottom and top of the frame inward a bit, and is used to math out two shapes
|
// this sinks the bottom and top of the frame inward a bit, and is used to math out two shapes
|
||||||
// when creating the frame box / overhang panel
|
// when creating the frame box / overhang panel
|
||||||
frame_bevel_height = 2;
|
frame_bevel_height = 1.25;
|
||||||
overhang_panel_bevel_height = 1;
|
overhang_panel_bevel_height = 1;
|
||||||
|
|
||||||
frame_center_to_neutrik = 70;
|
frame_center_to_neutrik = 70;
|
||||||
|
|||||||
24
src/plates/decorative-plate-ergo-nine-30mm-plate.scad
Normal file
24
src/plates/decorative-plate-ergo-nine-30mm-plate.scad
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
/* Decorative plate for ergo action buttons.
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2025 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
decorative_radius_scale = 1.5;
|
||||||
|
include <components.scad>
|
||||||
|
|
||||||
|
module ergo_nine_30mm_plate_decorative_plate() {
|
||||||
|
difference() {
|
||||||
|
hull() difference() {
|
||||||
|
// get a 2mm slice of the decorative button cylinders
|
||||||
|
translate([0, 0, -50]) ergo_nine_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([0, 0, -1]) ergo_nine_30mm();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ergo_nine_30mm_plate_decorative_plate();
|
||||||
24
src/plates/decorative-plate-ergo-wasd-five-30mm-plate.scad
Normal file
24
src/plates/decorative-plate-ergo-wasd-five-30mm-plate.scad
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
/* Decorative plate for ergo WASD directional buttons.
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: © 2025 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
include <parameters.scad>
|
||||||
|
decorative_radius_scale = 1.5;
|
||||||
|
include <components.scad>
|
||||||
|
|
||||||
|
module ergo_wasd_five_30mm_plate_decorative_plate() {
|
||||||
|
difference() {
|
||||||
|
hull() difference() {
|
||||||
|
// get a 2mm slice of the decorative button cylinders
|
||||||
|
translate([0, 0, -50]) ergo_wasd_seven_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([0, 0, -1]) ergo_wasd_five_30mm();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ergo_wasd_five_30mm_plate_decorative_plate();
|
||||||
Reference in New Issue
Block a user