22 Commits

Author SHA1 Message Date
861a73708f better component/parameter names to match panel naming
sed -i 's/top_plate/panel/g' *.scad
sed -i 's/plate_to_frame/panel_to_frame/g' *.scad

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-02-09 14:31:18 -06:00
3c8aa4e090 rename overhang panel files for clarity and sorting
Signed-off-by: Brian S. Stephan <bss@incorporeal.org
2024-02-06 19:19:37 -06:00
dac1073aa0 move the bottom plate with overhang into the only part that uses it
also that component *is* the part so it's easier to just reuse the part

Signed-off-by: Brian S. Stephan <bss@incorporeal.org
2024-02-06 19:19:35 -06:00
d3940c4109 s/topplate/panel/ --- just better naming
Signed-off-by: Brian S. Stephan <bss@incorporeal.org
2024-02-06 19:19:33 -06:00
53834363a6 add overhang amount to the chopper, to chop those properly too
Signed-off-by: Brian S. Stephan <bss@incorporeal.org
2024-02-06 19:19:31 -06:00
02993ab6a6 the overhang plates don't need the sunken tray
Signed-off-by: Brian S. Stephan <bss@incorporeal.org
2024-02-06 19:19:22 -06:00
543e31aec7 add an alternative top plate for buttons
this is a crazy one since I tried to fill the corners by hand.
interesting, but I don't know if I'm actually going to use it... but it
works so committing it

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-01-16 22:14:26 -06:00
438220466d modularize "directional arc" buttons a bit more
just for DRY purposes that I may or may not use

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-01-07 17:00:05 -06:00
97f69b9332 update SPDX headers in source files
license is still the same, this just saves duplicating the terms and
standardizes with what I've been doing elsewhere, style-wise

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-01-02 15:08:01 -06:00
b653815ef5 leave a TODO note for myself
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2023-12-28 13:55:32 -06:00
14150a3f04 add DCO and contributing information
this also serves as my signoff for future DCO contributions under
MAINTAINERS.md

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2023-12-18 12:54:53 -06:00
a0db9d9c3f add SPDX-License-Identifier: GPL-3.0-or-later to SCAD files
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2023-12-18 12:51:38 -06:00
abc35affea add a decorative plate for the neutrik + rocker mounts 2023-12-14 12:30:09 -06:00
feebf5a38d put the rocker mount holes in components, give the plate a better name 2023-12-13 13:50:24 -06:00
3ee8745d09 DRY: use neutrik_d_mount in the 24mm mount plate 2023-12-13 13:40:17 -06:00
99b03a3b48 parameterize the distance the neutrik holes are from center 2023-12-13 13:33:14 -06:00
20373cf856 make the side chopper based on the frame wall parameter 2023-12-13 09:24:09 -06:00
36231248b9 new decorative plate for the 3-button aux controls 2023-11-26 12:59:54 -06:00
62c804ed35 group the three 24mm buttons used in frames in one component
this is a bit cleaner/DRY, and also lets me experiment with a decorative
plate easily
2023-11-25 23:52:20 -06:00
769f184d1d update material notes a bit with Hatchbox white 2023-11-23 20:50:09 -06:00
f14c80d8a8 bring the frame Z back to 55mm, for taller levers
50mm - 10mm of panels was fine for some levers but not enough for the
LSX-NOBI, which I personally have a number of. I can't vet every lever
in existence, but I know at least that this was a problem that is solved
by adding 5mm, which seems like a fair trade and not a huge difference
in the final product.

this also helps the fact that at 40mm internal, some buttons + wiring
harnesses were getting pretty tight, mostly relevant at the frame
connection point where the inner bottom panel isn't a basin. this should
help that too.

additionally this has us go back to the 45mm M4 standoff recommendation,
which kinda sucks because it seems like 40mm are easier to find, but as
stated in the notes, the difference is somewhat negligible if you just
use 40mm with longer bolts.
2023-11-23 09:32:03 -06:00
ae40fd7289 break out tweakable parameters into a separate file
this allows for:

include <parameters.scad>
// override a variable such as
frame_z = 60;
include <components.scad>

which will let individual components tweak settings, e.g. the height of
a frame
2023-11-20 14:25:27 -06:00
71 changed files with 757 additions and 1112 deletions

35
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,35 @@
# Contributing Guidelines
The Buildable Stick System is made available under the GPLv3 (or later) license. Contributions are welcome via pull
requests. This document outlines the process to get your contribution accepted.
## Sign Offs/Custody of Contributions
I do not request the copyright of contributions be assigned to me or to the project, and I require no provision that I
be allowed to relicense your contributions. My personal oath is to maintain inbound=outbound in my open source projects,
and the expectation is authors are responsible for their contributions.
I am following the the [Developer Certificate of Origin (DCO)](https://developercertificate.org/), also available at
`DCO.txt`. The DCO is a way for contributors to certify that they wrote or otherwise have the right to license their
code contributions to the project. Contributors must sign-off that they adhere to these requirements by adding a
`Signed-off-by` line to their commit message, and/or, for frequent contributors, by signing off on their entry in
`MAINTAINERS.md`.
This process is followed by a number of open source projects, most notably the Linux kernel. Here's the gist of it:
```
[Your normal Git commit message here.]
Signed-off-by: Random J Developer <random@developer.example.org>
```
`git help commit` has more info on adding this:
```
-s, --signoff
Add Signed-off-by line by the committer at the end of the commit log
message. The meaning of a signoff depends on the project, but it typically
certifies that committer has the rights to submit this work under the same
license and agrees to a Developer Certificate of Origin (see
http://developercertificate.org/ for more information).
```

34
DCO.txt Normal file
View File

@@ -0,0 +1,34 @@
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.

10
MAINTAINERS.md Normal file
View File

@@ -0,0 +1,10 @@
# Maintainers
This file contains information about people permitted to make major decisions and direction on the project.
## Contributing Under the DCO
By adding your name and email address to this section, you certify that all of your subsequent contributions to the
Buildable Stick System are made under the terms of the Developer's Certificate of Origin 1.1, available at `DCO.txt`.
* Brian S. Stephan (<bss@incorporeal.org>)

View File

@@ -36,12 +36,12 @@ What you'll need beyond these objects:
Board](https://github.com/OpenStickCommunity/Hardware/tree/main/RP2040%20Advanced%20Breakout%20Board)) Board](https://github.com/OpenStickCommunity/Hardware/tree/main/RP2040%20Advanced%20Breakout%20Board))
* 4 M3 8mm hex bolts to secure the PCB to a panel * 4 M3 8mm hex bolts to secure the PCB to a panel
* Per frame and plate combo: * Per frame and plate combo:
* 4 40mm M4 hex brass standoffs (or equivalent) * 4 45mm M4 hex brass standoffs (or equivalent)
* 8 M4 countersunk hex bolts * 8 M4 countersunk hex bolts
* Overhang plates should use 12-16mm length bolts since they are taller * Overhang plates should use 12-16mm length bolts since they are taller
* Inset plates should probably use 8-12mm bolts --- some standoffs aren't threaded the whole way, making 16mm * Inset plates should probably use 8-12mm bolts --- some standoffs aren't threaded the whole way, making 16mm
too long to go flush too long to go flush
* If making the 40mm standoffs from multiple smaller ones, make sure they have enough length to take your bolts! * If making the 45mm standoffs from multiple smaller ones, make sure they have enough length to take your bolts!
* Per frame connection point: * Per frame connection point:
* 8 16mm M4 bolts * 8 16mm M4 bolts
* 8 M4 flange nuts * 8 M4 flange nuts
@@ -69,7 +69,7 @@ Filament masses from Bambu Studio estimates, using Bambu PLA Basic.
of 2023-09-12) of 2023-09-12)
* 4 M3 flange nuts to connect Neutrik D plates to frames: **$0.34 USD** (you can get a pack of 100 on Amazon for $8.50, * 4 M3 flange nuts to connect Neutrik D plates to frames: **$0.34 USD** (you can get a pack of 100 on Amazon for $8.50,
as of 2023-09-12) as of 2023-09-12)
* 8 40mm M4 spacers to connect panels to frames: **$2.40 USD** (you can get a pack of 10 on AliExpress for $3, as of * 8 45mm M4 spacers to connect panels to frames: **$2.40 USD** (you can get a pack of 10 on AliExpress for $3, as of
2023-09-12) 2023-09-12)
* You could 3D print these too, but you're probably better off with brass ones as they give some weight to the * You could 3D print these too, but you're probably better off with brass ones as they give some weight to the
stick anyway stick anyway

View File

@@ -2,6 +2,10 @@
Notes for "next time". Notes for "next time".
## v3.3
* Try not using roundedcube and instead bezel the top, to get cleaner seams everywhere else
## v4 ## v4
* Engraving some cosmetic stuff? Or maybe a place to mount other plates? * Engraving some cosmetic stuff? Or maybe a place to mount other plates?

View File

@@ -21,4 +21,5 @@ bss's random thoughts and notes on 3D printing materials.
## Hatchbox PLA ## Hatchbox PLA
* Haven't done a lot of this yet, but my wife really likes the blue. * **Blue:** very blue. Wife likes it.
* **White:** more opaque than the Bambu PLA mentioned above, makes a pretty decent (still slightly translucent) frame.

View File

@@ -1,21 +1,9 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <frame-left.scad> use <frame-left.scad>
use <frame-right.scad> use <frame-right.scad>
@@ -27,13 +15,13 @@ 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-plus-one.scad>
use <misc-dustwasher-lsx-nobi.scad> use <misc-dustwasher-lsx-nobi.scad>
color("#C12E1F") translate([-top_plate_x/2-25, 0, frame_z/2+75]) top_panel_left_lever_and_dir_arc_w_30mm(); color("#C12E1F") translate([-panel_x/2-25, 0, frame_z/2+75]) top_panel_left_lever_and_dir_arc_w_30mm();
color("#C12E1F") translate([top_plate_x/2+25, 0, frame_z/2+75]) top_panel_right_sega_2p_plus_one_plus_control_with_mount(); color("#C12E1F") translate([panel_x/2+25, 0, frame_z/2+75]) top_panel_right_sega_2p_plus_one_plus_control_with_mount();
color("black") translate([-frame_x/2+5-25, 0, -2.5]) left_frame(); color("black") translate([-frame_x/2+5-25, 0, -2.5]) left_frame();
color("black") translate([frame_x/2+25, 0, -2.5]) right_frame(); color("black") translate([frame_x/2+25, 0, -2.5]) right_frame();
color("#C12E1F") translate([-top_plate_x/2-25, 0, -5-frame_z/2-75]) bottom_panel_left(); color("#C12E1F") translate([-panel_x/2-25, 0, -5-frame_z/2-75]) bottom_panel_left();
color("#C12E1F") translate([top_plate_x/2+25, 0, -5-frame_z/2-75]) bottom_panel_right(); color("#C12E1F") translate([panel_x/2+25, 0, -5-frame_z/2-75]) bottom_panel_right();
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_plus_one_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([top_plate_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();

View File

@@ -1,27 +1,15 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module bottom_panel() { module bottom_panel() {
difference() { difference() {
mirror([0, 0, 1]) topplate(); mirror([0, 0, 1]) panel();
translate([0, 0, top_plate_z/2]) cube([top_plate_x-40, top_plate_y-40, top_plate_z], center=true); translate([0, 0, panel_z/2]) cube([panel_x-40, panel_y-40, panel_z], center=true);
} }
} }

View File

@@ -1,30 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
use <bottom-panel-solo.scad>
module bottom_panel_left() {
difference() {
bottom_panel_solo();
// chop the right edge off
side_chopper();
}
}
bottom_panel_left();

View File

@@ -1,30 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
use <bottom-panel-left.scad>
use <bottom-panel-right.scad>
module bottom_panel_middle() {
intersection() {
bottom_panel_left();
bottom_panel_right();
}
}
bottom_panel_middle();

View File

@@ -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 <bottom-panel-solo.scad>
module bottom_panel_left() {
difference() {
bottom_panel_solo();
// chop the right edge off
side_chopper();
}
}
bottom_panel_left();

View File

@@ -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 <bottom-panel-left.scad>
use <bottom-panel-right.scad>
module bottom_panel_middle() {
intersection() {
bottom_panel_left();
bottom_panel_right();
}
}
bottom_panel_middle();

View File

@@ -0,0 +1,14 @@
/*
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
use <bottom-panel-left.scad>
module bottom_panel_right() {
rotate([0, 0, 180]) bottom_panel_left();
}
bottom_panel_right();

View File

@@ -0,0 +1,16 @@
/*
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
module bottom_panel_solo() {
difference() {
rotate([180, 0, 0]) base_panel_with_raised_overhang();
rotate([180, 0, 0]) panel_holes();
}
}
bottom_panel_solo();

View File

@@ -1,26 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
use <bottom-panel-left.scad>
module bottom_panel_right() {
rotate([0, 0, 180]) bottom_panel_left();
}
bottom_panel_right();

View File

@@ -1,28 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
module bottom_panel_solo() {
difference() {
bottom_plate_with_overhang();
translate([0, 0, top_plate_z/2]) cube([top_plate_x-40, top_plate_y-40, top_plate_z], center=true);
}
}
bottom_panel_solo();

View File

@@ -1,92 +1,10 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <roundedcube.scad> include <roundedcube.scad>
/* QUASI-CONSTANTS */
// adjustments
hole_tolerance = 0.15;
// M2
m2_screw_selftap_radius = 0.95;
// M3
m3_screw_selftap_radius = 1.3;
// M4
m4_bolt_radius = 2 + hole_tolerance;
m4_bolt_countersink_radius = 6.1 + hole_tolerance;
m4_bolt_hex_exterior_radius = 3.6 + hole_tolerance;
// 24mm button
small_button_radius = 12 + hole_tolerance;
// 30mm button
big_button_radius = 15 + hole_tolerance;
// JLF mount dimensions
lever_mount_x = 53;
lever_mount_y = 95;
lever_mount_z = 2;
// standard lever hole
lever_plate_hole = 12;
// case dimensions
// base frame box. reminder: top of inside (including mounts) is chopped by top_plate_z for plates
frame_x = 233;
frame_y = 208;
frame_z = 50;
// depth of the "lip" of the frame that the top plate sets into/supports the overhang
frame_wall = 4;
// per neutrik (mm)
neutrik_panel_thickness = 3;
// top plate, which can either be the whole plate ("inset") or the mounting frame for a plate that overhangs
top_plate_x = frame_x - (frame_wall * 2);
top_plate_y = frame_y - (frame_wall * 2);
top_plate_z = 5;
// how much the top plate x/y is expanded to overhang the frame
// note that this is relative to the top plate (so the wall is added back)
top_plate_overhang_amount = 8.5;
overhang_top_plate_x = top_plate_x + (frame_wall * 2) + (top_plate_overhang_amount * 2);
overhang_top_plate_y = top_plate_y + (frame_wall * 2) + (top_plate_overhang_amount * 2);
plate_to_frame_point_x = (top_plate_x/2)-10;
plate_to_frame_point_y = (top_plate_y/2)-10;
// frame interior that supports the top plates
panel_support_width = 5;
// neutrik D screw holes
neutrik_d_screw_radius = 1.6 + hole_tolerance;
neutrik_d_radius = 12 + hole_tolerance;
// additional button radius for decorative panels, etc.
decorative_radius_scale = 1.75;
jumbo_decorative_radius_scale = 2;
/* PARTS */
module m4_hole() { module m4_hole() {
cylinder(r=m4_bolt_radius, h=100, $fn=50, center=true); cylinder(r=m4_bolt_radius, h=100, $fn=50, center=true);
} }
@@ -95,17 +13,17 @@ 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 top_plate_holes() { module panel_holes() {
// holes for mount bolts // holes for mount bolts
translate([plate_to_frame_point_x, plate_to_frame_point_y, 0]) m4_hole(); translate([panel_to_frame_point_x, panel_to_frame_point_y, 0]) m4_hole();
translate([plate_to_frame_point_x, -plate_to_frame_point_y, 0]) m4_hole(); translate([panel_to_frame_point_x, -panel_to_frame_point_y, 0]) m4_hole();
translate([-plate_to_frame_point_x, plate_to_frame_point_y, 0]) m4_hole(); translate([-panel_to_frame_point_x, panel_to_frame_point_y, 0]) m4_hole();
translate([-plate_to_frame_point_x, -plate_to_frame_point_y, 0]) m4_hole(); translate([-panel_to_frame_point_x, -panel_to_frame_point_y, 0]) m4_hole();
// holes for mount bolt countersinks // holes for mount bolt countersinks
translate([plate_to_frame_point_x, plate_to_frame_point_y, 2]) m4_hole_countersink(); translate([panel_to_frame_point_x, panel_to_frame_point_y, 2]) m4_hole_countersink();
translate([plate_to_frame_point_x, -plate_to_frame_point_y, 2]) m4_hole_countersink(); translate([panel_to_frame_point_x, -panel_to_frame_point_y, 2]) m4_hole_countersink();
translate([-plate_to_frame_point_x, plate_to_frame_point_y, 2]) m4_hole_countersink(); translate([-panel_to_frame_point_x, panel_to_frame_point_y, 2]) m4_hole_countersink();
translate([-plate_to_frame_point_x, -plate_to_frame_point_y, 2]) m4_hole_countersink(); translate([-panel_to_frame_point_x, -panel_to_frame_point_y, 2]) m4_hole_countersink();
} }
// button hole, with extra wide bits for various uses (cutting out space // button hole, with extra wide bits for various uses (cutting out space
@@ -156,9 +74,23 @@ module neutrik_d_mount() {
translate([-9.5, -12, 0]) neutrik_d_screw_hole(); translate([-9.5, -12, 0]) neutrik_d_screw_hole();
} }
// space for a neutrik D mount or 24mm button module rocker_20mm_mount() {
cylinder(r=10+hole_tolerance, h=5, $fn=50, center=true);
cube([2.2, 22, 5], center=true);
translate([9.5, 12, 0]) neutrik_d_screw_hole();
translate([-9.5, -12, 0]) neutrik_d_screw_hole();
}
// space for a neutrik D mount or 24mm button - Z is to cut the whole inside without affecting panel lip
module frame_cutout() { module frame_cutout() {
cube([36.5, 8, 40], center=true); cube([36.5, 8, frame_z-(panel_z*2)], center=true);
}
// bank of three 24mm buttons, commonly on a frame face
module aux_control_three_button_cluster() {
translate([-40, 0, 0]) button_24mm_hole();
translate([0, 0, 0]) button_24mm_hole();
translate([40, 0, 0]) button_24mm_hole();
} }
module m2_mount_post() { module m2_mount_post() {
@@ -230,46 +162,39 @@ module levermountholes() {
m4_hole_countersink(); m4_hole_countersink();
} }
module base_topplate() { module base_panel() {
cube([top_plate_x, top_plate_y, top_plate_z], center=true); cube([panel_x, panel_y, panel_z], center=true);
}
module panel() {
difference() {
base_panel();
panel_holes();
}
} }
module overhang_plate() { module overhang_plate() {
roundedcube([overhang_top_plate_x, overhang_top_plate_y, top_plate_z], center=true, radius=1); roundedcube([overhang_panel_x, overhang_panel_y, panel_z], center=true, radius=1);
} }
// this takes the base_topplate and makes it a small frame, putting a larger top plate // this takes the base_panel and makes it a small frame, putting a larger top plate
module base_top_plate_with_raised_overhang() { module base_panel_with_raised_overhang() {
// make a frame out of the top plate (and keep the main plate on the center plane) // make a frame out of the top plate (and keep the main plate on the center plane)
translate([0, 0, -5]) difference() { translate([0, 0, -5]) difference() {
base_topplate(); base_panel();
cube([top_plate_x-(panel_support_width*2), top_plate_y-(panel_support_width*2), top_plate_z*2], center=true); cube([panel_x-(panel_support_width*2), panel_y-(panel_support_width*2), panel_z*2], center=true);
} }
translate([plate_to_frame_point_x, plate_to_frame_point_y, -2.5]) resize([0, 0, 10]) frame_mount_column(); translate([panel_to_frame_point_x, panel_to_frame_point_y, -2.5]) resize([0, 0, 10]) frame_mount_column();
translate([-(plate_to_frame_point_x), plate_to_frame_point_y, -2.5]) resize([0, 0, 10]) frame_mount_column(); translate([-(panel_to_frame_point_x), panel_to_frame_point_y, -2.5]) resize([0, 0, 10]) frame_mount_column();
translate([plate_to_frame_point_x, -(plate_to_frame_point_y), -2.5]) resize([0, 0, 10]) frame_mount_column(); translate([panel_to_frame_point_x, -(panel_to_frame_point_y), -2.5]) resize([0, 0, 10]) frame_mount_column();
translate([-(plate_to_frame_point_x), -(plate_to_frame_point_y), -2.5]) resize([0, 0, 10]) frame_mount_column(); translate([-(panel_to_frame_point_x), -(panel_to_frame_point_y), -2.5]) resize([0, 0, 10]) frame_mount_column();
overhang_plate(); overhang_plate();
} }
module topplate() { module panel_with_raised_overhang() {
difference() { difference() {
base_topplate(); base_panel_with_raised_overhang();
top_plate_holes(); panel_holes();
}
}
module bottom_plate_with_overhang() {
difference() {
rotate([180, 0, 0]) base_top_plate_with_raised_overhang();
rotate([180, 0, 0]) top_plate_holes();
}
}
module top_plate_with_raised_overhang() {
difference() {
base_top_plate_with_raised_overhang();
top_plate_holes();
} }
} }
@@ -277,7 +202,7 @@ module frame_box() {
difference() { difference() {
roundedcube([frame_x, frame_y, frame_z], center=true, radius=3); roundedcube([frame_x, frame_y, frame_z], center=true, radius=3);
// cut out the middle to make it a box // cut out the middle to make it a box
cube([top_plate_x-(panel_support_width*2), top_plate_y-(panel_support_width*2), frame_z+5], center=true); cube([panel_x-(panel_support_width*2), panel_y-(panel_support_width*2), frame_z+5], center=true);
} }
} }
@@ -286,7 +211,8 @@ module frame_mount_column() {
} }
module side_chopper() { module side_chopper() {
translate([frame_x/2+4, 0, 0]) cube([16, 2*(frame_y+top_plate_y), 2*(frame_z+top_plate_z)], center=true); translate([(frame_x-frame_wall)/2+panel_overhang_amount, 0, 0])
cube([frame_wall+panel_overhang_amount*2, overhang_panel_y, frame_z], center=true);
} }
module frame_connection_holes() { module frame_connection_holes() {
@@ -307,21 +233,21 @@ module frame_cable_routing_hole() {
module base_frame() { module base_frame() {
frame_box(); frame_box();
translate([plate_to_frame_point_x, plate_to_frame_point_y, 0]) frame_mount_column(); translate([panel_to_frame_point_x, panel_to_frame_point_y, 0]) frame_mount_column();
translate([-plate_to_frame_point_x, plate_to_frame_point_y, 0]) frame_mount_column(); translate([-panel_to_frame_point_x, panel_to_frame_point_y, 0]) frame_mount_column();
translate([plate_to_frame_point_x, -(plate_to_frame_point_y), 0]) frame_mount_column(); translate([panel_to_frame_point_x, -(panel_to_frame_point_y), 0]) frame_mount_column();
translate([-plate_to_frame_point_x, -(plate_to_frame_point_y), 0]) frame_mount_column(); translate([-panel_to_frame_point_x, -(panel_to_frame_point_y), 0]) frame_mount_column();
} }
module frame() { module frame() {
difference() { difference() {
base_frame(); base_frame();
translate([0, 0, frame_z/2]) scale([1, 1, 2]) base_topplate(); translate([0, 0, frame_z/2]) scale([1, 1, 2]) base_panel();
translate([0, 0, -frame_z/2]) scale([1, 1, 2]) base_topplate(); translate([0, 0, -frame_z/2]) scale([1, 1, 2]) base_panel();
translate([plate_to_frame_point_x, plate_to_frame_point_y, 0]) frame_hex_bolt_hole(); translate([panel_to_frame_point_x, panel_to_frame_point_y, 0]) frame_hex_bolt_hole();
translate([-plate_to_frame_point_x, plate_to_frame_point_y, 0]) frame_hex_bolt_hole(); translate([-panel_to_frame_point_x, panel_to_frame_point_y, 0]) frame_hex_bolt_hole();
translate([plate_to_frame_point_x, -plate_to_frame_point_y, 0]) frame_hex_bolt_hole(); translate([panel_to_frame_point_x, -panel_to_frame_point_y, 0]) frame_hex_bolt_hole();
translate([-plate_to_frame_point_x, -plate_to_frame_point_y, 0]) frame_hex_bolt_hole(); translate([-panel_to_frame_point_x, -panel_to_frame_point_y, 0]) frame_hex_bolt_hole();
} }
} }
@@ -368,18 +294,18 @@ module dir_arc_plus_w_24mm_8_button() {
module dir_arc_30mm_thumb_button() { module dir_arc_30mm_thumb_button() {
// just my guesstimate on this one, but note that this is the same position as sega 2p (just mirrored) // just my guesstimate on this one, but note that this is the same position as sega 2p (just mirrored)
translate([(top_plate_x/2)-28.06, (-top_plate_y/2)+62, 0]) button_30mm_hole(); translate([(panel_x/2)-28.06, (-panel_y/2)+62, 0]) button_30mm_hole();
} }
module dir_arc_30mm() { module dir_arc_30mm_finger_buttons() {
dir_arc_30mm_thumb_button();
translate([0, 57.2, 0]) dir_arc_30mm_thumb_button(); translate([0, 57.2, 0]) dir_arc_30mm_thumb_button();
translate([-33.8, 57.2+12.9, 0]) dir_arc_30mm_thumb_button(); translate([-33.8, 57.2+12.9, 0]) dir_arc_30mm_thumb_button();
translate([-33.8-34.8, 57.2+12.9, 0]) dir_arc_30mm_thumb_button(); translate([-33.8-34.8, 57.2+12.9, 0]) dir_arc_30mm_thumb_button();
} }
module dir_arc_w_30mm() { module dir_arc_w_30mm() {
dir_arc_30mm(); dir_arc_30mm_thumb_button();
dir_arc_30mm_finger_buttons();
translate([-26.8, 57.2+12.9+34.5, 0]) dir_arc_30mm_thumb_button(); translate([-26.8, 57.2+12.9+34.5, 0]) dir_arc_30mm_thumb_button();
} }
@@ -391,7 +317,7 @@ module dir_arc_w_30mm_plus_one() {
// Namco Noir (right hand) // Namco Noir (right hand)
module noir_button_p1() { module noir_button_p1() {
translate([-top_plate_x/2, -top_plate_y/2, 0]) translate([35, 140, 0]) button_30mm_hole(); translate([-panel_x/2, -panel_y/2, 0]) translate([35, 140, 0]) button_30mm_hole();
} }
module noir_plus_one() { module noir_plus_one() {
@@ -412,7 +338,7 @@ module noir_plus_one() {
// Sega Astro City 2P (right hand) // Sega Astro City 2P (right hand)
module sega_2p_p1() { module sega_2p_p1() {
translate([-top_plate_x/2, -top_plate_y/2, 0]) translate([28.06, 140, 0]) button_30mm_hole(); translate([-panel_x/2, -panel_y/2, 0]) translate([28.06, 140, 0]) button_30mm_hole();
} }
module sega_2p_6_button() { module sega_2p_6_button() {

View File

@@ -1,21 +1,9 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module base_left_frame() { module base_left_frame() {
@@ -36,16 +24,16 @@ module left_frame() {
frame_cable_routing_hole(); frame_cable_routing_hole();
// aux button holes // aux button holes
translate([-30, 101.5, 0]) rotate([270, 0, 0]) button_24mm_hole(); translate([-30, 101.5, 0]) rotate([270, 0, 0]) aux_control_three_button_cluster();
translate([-30, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); translate([-30, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout();
translate([-70, 101.5, 0]) rotate([270, 0, 0]) button_24mm_hole();
translate([-70, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); translate([-70, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout();
translate([10, 101.5, 0]) rotate([270, 0, 0]) button_24mm_hole();
translate([10, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); translate([10, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout();
// neutrix button hole // neutrix button hole
translate([70, (frame_y/2)-neutrik_panel_thickness, 0]) rotate([90, 0, 0]) neutrik_d_mount(); translate([frame_center_to_neutrik, (frame_y/2)-neutrik_panel_thickness, 0])
translate([70, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); rotate([90, 0, 0]) neutrik_d_mount();
translate([frame_center_to_neutrik, (frame_y/2)-neutrik_panel_thickness-4, 0])
frame_cutout();
} }
} }

View File

@@ -1,21 +1,9 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module base_middle_frame() { module base_middle_frame() {

View File

@@ -1,21 +1,9 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module base_right_frame() { module base_right_frame() {
@@ -36,16 +24,16 @@ module right_frame() {
mirror([1, 0, 0]) frame_cable_routing_hole(); mirror([1, 0, 0]) frame_cable_routing_hole();
// aux button holes // aux button holes
translate([30, 101.5, 0]) rotate([270, 0, 0]) button_24mm_hole(); translate([30, 101.5, 0]) rotate([270, 0, 0]) aux_control_three_button_cluster();
translate([30, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); translate([30, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout();
translate([70, 101.5, 0]) rotate([270, 0, 0]) button_24mm_hole();
translate([70, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); translate([70, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout();
translate([-10, 101.5, 0]) rotate([270, 0, 0]) button_24mm_hole();
translate([-10, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); translate([-10, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout();
// neutrix button hole // neutrix button hole
translate([-70, (frame_y/2)-neutrik_panel_thickness, 0]) rotate([90, 0, 0]) neutrik_d_mount(); translate([-frame_center_to_neutrik, (frame_y/2)-neutrik_panel_thickness, 0])
translate([-70, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); rotate([90, 0, 0]) neutrik_d_mount();
translate([-frame_center_to_neutrik, (frame_y/2)-neutrik_panel_thickness-4, 0])
frame_cutout();
} }
} }

View File

@@ -1,21 +1,9 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module solo_frame() { module solo_frame() {
@@ -31,23 +19,14 @@ module solo_frame() {
translate([40, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); translate([40, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout();
// aux button holes // aux button holes
translate([-frame_x/2+2.5, 0, 0]) rotate([0, 0, 270]) translate([-frame_x/2+2.5, 0, 0]) rotate([90, 0, 270]) aux_control_three_button_cluster();
translate([0, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([(frame_x/2)-neutrik_panel_thickness-4, 0, 0]) rotate([0, 0, 90]) frame_cutout(); translate([(frame_x/2)-neutrik_panel_thickness-4, 0, 0]) rotate([0, 0, 90]) frame_cutout();
translate([-frame_x/2+2.5, 0, 0]) rotate([0, 0, 270])
translate([-40, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([(frame_x/2)-neutrik_panel_thickness-4, -40, 0]) rotate([0, 0, 90]) frame_cutout(); translate([(frame_x/2)-neutrik_panel_thickness-4, -40, 0]) rotate([0, 0, 90]) frame_cutout();
translate([-frame_x/2+2.5, 0, 0]) rotate([0, 0, 270])
translate([40, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([(frame_x/2)-neutrik_panel_thickness-4, 40, 0]) rotate([0, 0, 90]) frame_cutout(); translate([(frame_x/2)-neutrik_panel_thickness-4, 40, 0]) rotate([0, 0, 90]) frame_cutout();
translate([frame_x/2-2.5, 0, 0]) rotate([0, 0, 90])
translate([0, 0, 0]) rotate([90, 0, 0]) button_24mm_hole(); translate([frame_x/2+2.5, 0, 0]) rotate([90, 0, 270]) aux_control_three_button_cluster();
translate([-(frame_x/2)+neutrik_panel_thickness+4, 0, 0]) rotate([0, 0, 90]) frame_cutout(); translate([-(frame_x/2)+neutrik_panel_thickness+4, 0, 0]) rotate([0, 0, 90]) frame_cutout();
translate([frame_x/2-2.5, 0, 0]) rotate([0, 0, 90])
translate([-40, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([-(frame_x/2)+neutrik_panel_thickness+4, -40, 0]) rotate([0, 0, 90]) frame_cutout(); translate([-(frame_x/2)+neutrik_panel_thickness+4, -40, 0]) rotate([0, 0, 90]) frame_cutout();
translate([frame_x/2-2.5, 0, 0]) rotate([0, 0, 90])
translate([40, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([-(frame_x/2)+neutrik_panel_thickness+4, 40, 0]) rotate([0, 0, 90]) frame_cutout(); translate([-(frame_x/2)+neutrik_panel_thickness+4, 40, 0]) rotate([0, 0, 90]) frame_cutout();
} }
} }

View File

@@ -1,21 +1,9 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module button_24mm_decorative_plate() { module button_24mm_decorative_plate() {

View File

@@ -0,0 +1,21 @@
/*
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
use <misc-neutrik-d-plate.scad>
module aux_connectors_two_neutrik_cluster_decorative_plate() {
difference() {
hull() {
translate([-50, 0, 0]) neutrik_d_plate();
translate([50, 0, 0]) neutrik_d_plate();
}
translate([(frame_x/2)-frame_center_to_neutrik-frame_wall, 0, 0]) rocker_20mm_mount();
translate([-((frame_x/2)-frame_center_to_neutrik-frame_wall), 0, 0]) neutrik_d_mount();
}
}
aux_connectors_two_neutrik_cluster_decorative_plate();

View File

@@ -0,0 +1,20 @@
/*
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
use <misc-neutrik-d-plate.scad>
module aux_control_three_button_cluster_decorative_plate() {
difference() {
hull() {
translate([-50, 0, 0]) neutrik_d_plate();
translate([50, 0, 0]) neutrik_d_plate();
}
translate([0, 0, -10]) aux_control_three_button_cluster();
}
}
aux_control_three_button_cluster_decorative_plate();

View File

@@ -1,21 +1,9 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module dir_arc_plus_w_24mm_8_button_decorative_plate() { module dir_arc_plus_w_24mm_8_button_decorative_plate() {

View File

@@ -0,0 +1,50 @@
/*
* 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 dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate_of_plates() {
difference() {
// get a 2mm slice of the bigger button cylinders
union() {
translate([-panel_x/2, 0, -25]) {
hull() union() {
dir_arc_30mm_finger_buttons();
translate([-26.8, 57.2+12.9+34.5, 0]) dir_arc_30mm_thumb_button();
}
}
translate([panel_x/2, 0, -25]) {
hull() sega_2p();
}
hull() {
translate([-panel_x/2, 0, -25]) dir_arc_30mm_thumb_button();
translate([panel_x/2, -19-9-11-19-9-11, -25]) sega_2p_p1();
}
difference() {
translate([-60, -8, 0]) cube(60, center=true);
translate([-98.35, -39.25, 0]) cylinder(h=50, r=48, $fn=50, center=true);
}
difference() {
translate([43.35, -10.30, 0]) cube(50, center=true);
translate([68.35, -35.30, 0]) cylinder(h=50, r=18, $fn=50, center=true);
}
difference() {
translate([-10, 55, 0]) cube(43, center=true);
translate([-5.15, 76.25, 0]) cylinder(h=50, r=27, $fn=50, center=true);
}
translate([-7, 0, 0]) cube(80, 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
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();

View File

@@ -1,35 +1,23 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
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_plus_one_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([-top_plate_x/2, 0, -65]) dir_arc_w_30mm(); translate([-panel_x/2, 0, -65]) dir_arc_w_30mm();
translate([top_plate_x/2, 0, -65]) sega_2p_plus_one(); translate([panel_x/2, 0, -65]) 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([-top_plate_x/2, 0, -1]) dir_arc_w_30mm(); translate([-panel_x/2, 0, -1]) dir_arc_w_30mm();
translate([top_plate_x/2, 0, -1]) sega_2p_plus_one(); translate([panel_x/2, 0, -1]) sega_2p_plus_one();
} }
} }

View File

@@ -1,21 +1,9 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module dir_arc_plus_w_30mm_decorative_plate() { module dir_arc_plus_w_30mm_decorative_plate() {

View File

@@ -1,21 +1,9 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module sega_2p_6_button_decorative_plate() { module sega_2p_6_button_decorative_plate() {

View File

@@ -1,21 +1,9 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module sega_2p_plus_one_decorative_plate() { module sega_2p_plus_one_decorative_plate() {

View File

@@ -1,21 +1,9 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module jlf_dustwasher() { module jlf_dustwasher() {

View File

@@ -1,21 +1,9 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module lsx_nobi_dustwasher() { module lsx_nobi_dustwasher() {

View File

@@ -1,30 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
use <misc-neutrik-d-plate.scad>
module neutrik_d_plate_20mm() {
difference() {
neutrik_d_plate();
cylinder(r=10+hole_tolerance, h=5, $fn=50, center=true);
cube([2.2, 22, 5], center=true);
}
}
neutrik_d_plate_20mm();

View File

@@ -1,28 +1,16 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <misc-neutrik-d-plate.scad> use <misc-neutrik-d-plate.scad>
module neutrik_d_plate_24mm() { module neutrik_d_plate_24mm() {
difference() { difference() {
neutrik_d_plate(); neutrik_d_plate();
cylinder(r=12+hole_tolerance, h=5, $fn=50, center=true); neutrik_d_mount();
} }
} }

View File

@@ -1,21 +1,9 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module neutrik_d_plate() { module neutrik_d_plate() {

View File

@@ -0,0 +1,17 @@
/*
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
use <misc-neutrik-d-plate.scad>
module rocker_plate_20mm() {
difference() {
neutrik_d_plate();
rocker_20mm_mount();
}
}
rocker_plate_20mm();

71
src/parameters.scad Normal file
View File

@@ -0,0 +1,71 @@
/*
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
// adjustments
hole_tolerance = 0.15;
// M2
m2_screw_selftap_radius = 0.95;
// M3
m3_screw_selftap_radius = 1.3;
// M4
m4_bolt_radius = 2 + hole_tolerance;
m4_bolt_countersink_radius = 6.1 + hole_tolerance;
m4_bolt_hex_exterior_radius = 3.6 + hole_tolerance;
// 24mm button
small_button_radius = 12 + hole_tolerance;
// 30mm button
big_button_radius = 15 + hole_tolerance;
// JLF mount dimensions
lever_mount_x = 53;
lever_mount_y = 95;
lever_mount_z = 2;
// standard lever hole
lever_plate_hole = 12;
// case dimensions
// base frame box. reminder: top of inside (including mounts) is chopped by panel_z for plates
frame_x = 233;
frame_y = 208;
frame_z = 55;
frame_center_to_neutrik = 70;
// depth of the "lip" of the frame that the top plate sets into/supports the overhang
frame_wall = 4;
// per neutrik (mm)
neutrik_panel_thickness = 3;
// top plate, which can either be the whole plate ("inset") or the mounting frame for a plate that overhangs
panel_x = frame_x - (frame_wall * 2);
panel_y = frame_y - (frame_wall * 2);
panel_z = 5;
// how much the top plate x/y is expanded to overhang the frame
// note that this is relative to the top plate (so the wall is added back)
panel_overhang_amount = 8.5;
overhang_panel_x = panel_x + (frame_wall * 2) + (panel_overhang_amount * 2);
overhang_panel_y = panel_y + (frame_wall * 2) + (panel_overhang_amount * 2);
panel_to_frame_point_x = (panel_x/2)-10;
panel_to_frame_point_y = (panel_y/2)-10;
// frame interior that supports the top plates
panel_support_width = 5;
// neutrik D screw holes
neutrik_d_screw_radius = 1.6 + hole_tolerance;
neutrik_d_radius = 12 + hole_tolerance;
// additional button radius for decorative panels, etc.
decorative_radius_scale = 1.75;
jumbo_decorative_radius_scale = 2;

View File

@@ -1,27 +1,15 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <top-panel-inset-dir_arc-plus-w-30mm-plus-one.scad> use <top-panel-inset-dir_arc-plus-w-30mm-plus-one.scad>
module dir_arc_w_30mm_plus_one_panel_with_mount() { module dir_arc_w_30mm_plus_one_panel_with_mount() {
dir_arc_w_30mm_plus_one_panel(); dir_arc_w_30mm_plus_one_panel();
translate([-15, -40, -(top_plate_z/2) - 3]) rotate([0, 0, -15]) pcb_mount(); translate([-15, -40, -(panel_z/2) - 3]) rotate([0, 0, -15]) pcb_mount();
} }
dir_arc_w_30mm_plus_one_panel_with_mount(); dir_arc_w_30mm_plus_one_panel_with_mount();

View File

@@ -1,26 +1,14 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module dir_arc_w_30mm_plus_one_panel() { module dir_arc_w_30mm_plus_one_panel() {
difference() { difference() {
topplate(); panel();
dir_arc_w_30mm_plus_one(); dir_arc_w_30mm_plus_one();
} }
} }

View File

@@ -1,31 +1,20 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module top_panel_inset_lever_and_dir_arc_w_30mm() { module top_panel_inset_lever_and_dir_arc_w_30mm() {
difference() { difference() {
union() { union() {
topplate(); panel();
translate([(-top_plate_x/2)+55, (top_plate_y/2)-75, -((top_plate_z/2)+(lever_mount_z/2))]) levermountbase(); translate([(-panel_x/2)+55, (panel_y/2)-75, -((panel_z/2)+(lever_mount_z/2))])
levermountbase();
} }
dir_arc_w_30mm(); dir_arc_w_30mm();
translate([(-top_plate_x/2)+55, (top_plate_y/2)-75, 0]) levermountholes(); translate([(-panel_x/2)+55, (panel_y/2)-75, 0]) levermountholes();
} }
} }

View File

@@ -1,27 +1,15 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <top-panel-inset-lever.scad> use <top-panel-inset-lever.scad>
module lever_panel_with_mount() { module lever_panel_with_mount() {
lever_panel(); lever_panel();
translate([0, -top_plate_y/2+25, -(top_plate_z/2) - 3]) pcb_mount(); translate([0, -panel_y/2+25, -(panel_z/2) - 3]) pcb_mount();
} }
lever_panel_with_mount(); lever_panel_with_mount();

View File

@@ -1,21 +1,9 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
// combine the lever mount and generic plate, with mounting holes // combine the lever mount and generic plate, with mounting holes
@@ -23,10 +11,8 @@ module lever_panel() {
difference() { difference() {
// base plate // base plate
union() { union() {
translate([0,-20,0]) translate([0,-20,0]) panel();
topplate(); translate([0, 0, -((panel_z/2)+(lever_mount_z/2))]) levermountbase();
translate([0, 0, -((top_plate_z/2)+(lever_mount_z/2))])
levermountbase();
} }
// holes to mount the lever // holes to mount the lever
levermountholes(); levermountholes();

View File

@@ -1,26 +1,14 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module namco_noir_plus_one_panel() { module namco_noir_plus_one_panel() {
difference() { difference() {
topplate(); panel();
noir_plus_one(); noir_plus_one();
} }
} }

View File

@@ -1,26 +1,14 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module namco_noir_plus_two_panel() { module namco_noir_plus_two_panel() {
difference() { difference() {
topplate(); panel();
noir_plus_one(); noir_plus_one();
translate([32.94-3.47-3.47, -78+7.37+4.49, 0]) noir_button_p1(); translate([32.94-3.47-3.47, -78+7.37+4.49, 0]) noir_button_p1();
} }

View File

@@ -1,27 +1,15 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <top-panel-inset-sega-2p-plus-one-plus-control.scad> use <top-panel-inset-sega-2p-plus-one-plus-control.scad>
module top_panel_inset_sega_2p_plus_one_plus_control_with_mount() { module top_panel_inset_sega_2p_plus_one_plus_control_with_mount() {
top_panel_inset_sega_2p_plus_one_plus_control(); top_panel_inset_sega_2p_plus_one_plus_control();
translate([30, -50, -(top_plate_z/2) - 3]) pcb_mount(); translate([30, -50, -(panel_z/2) - 3]) pcb_mount();
} }
top_panel_inset_sega_2p_plus_one_plus_control_with_mount(); top_panel_inset_sega_2p_plus_one_plus_control_with_mount();

View File

@@ -1,26 +1,14 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module top_panel_inset_sega_2p_plus_one_plus_control() { module top_panel_inset_sega_2p_plus_one_plus_control() {
difference() { difference() {
topplate(); panel();
sega_2p_plus_one(); sega_2p_plus_one();
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();

View File

@@ -1,26 +1,14 @@
/* Copyright Brian Stephan 2023 /*
* * SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* This file is part of the Buildable Stick System. * SPDX-License-Identifier: GPL-3.0-or-later
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module sega_2p_plus_one_panel() { module sega_2p_plus_one_panel() {
difference() { difference() {
topplate(); panel();
sega_2p_plus_one(); sega_2p_plus_one();
} }
} }

View File

@@ -1,33 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
module top_panel_left_lever_and_dir_arc_w_30mm() {
difference() {
union() {
top_plate_with_raised_overhang();
translate([(-top_plate_x/2)+55, (top_plate_y/2)-75, -((top_plate_z/2)+(lever_mount_z/2))]) levermountbase();
}
dir_arc_w_30mm();
side_chopper();
translate([(-top_plate_x/2)+55, (top_plate_y/2)-75, 0]) levermountholes();
}
}
top_panel_left_lever_and_dir_arc_w_30mm();

View File

@@ -1,35 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
// combine the lever mount and generic plate, with mounting holes
module top_panel_left_lever() {
difference() {
// base plate
union() {
translate([0,-20,0]) top_plate_with_raised_overhang();
translate([0, 0, -((top_plate_z/2)+(lever_mount_z/2))]) levermountbase();
}
// holes to mount the lever
levermountholes();
side_chopper();
}
}
top_panel_left_lever();

View File

@@ -1,27 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
use <top-panel-middle-dir_arc-plus-w-30mm.scad>
module top_panel_middle_dir_arc_w_30mm_with_mount() {
top_panel_middle_dir_arc_w_30mm();
translate([-15, -40, -(top_plate_z/2) - 3]) rotate([0, 0, -45]) pcb_mount();
}
top_panel_middle_dir_arc_w_30mm_with_mount();

View File

@@ -1,30 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
module top_panel_middle_dir_arc_w_30mm() {
difference() {
top_plate_with_raised_overhang();
dir_arc_w_30mm();
rotate([0, 0, 180]) side_chopper();
side_chopper();
}
}
top_panel_middle_dir_arc_w_30mm();

View File

@@ -0,0 +1,21 @@
/*
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
module top_panel_left_lever_and_dir_arc_w_30mm() {
difference() {
union() {
panel_with_raised_overhang();
translate([(-panel_x/2)+55, (panel_y/2)-75, -((panel_z/2)+(lever_mount_z/2))]) levermountbase();
}
dir_arc_w_30mm();
side_chopper();
translate([(-panel_x/2)+55, (panel_y/2)-75, 0]) levermountholes();
}
}
top_panel_left_lever_and_dir_arc_w_30mm();

View File

@@ -0,0 +1,23 @@
/*
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
// combine the lever mount and generic plate, with mounting holes
module top_panel_left_lever() {
difference() {
// base plate
union() {
translate([0,-20,0]) panel_with_raised_overhang();
translate([0, 0, -((panel_z/2)+(lever_mount_z/2))]) levermountbase();
}
// holes to mount the lever
levermountholes();
side_chopper();
}
}
top_panel_left_lever();

View File

@@ -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 <top-panel-middle-dir_arc-plus-w-30mm.scad>
module top_panel_middle_dir_arc_w_30mm_with_mount() {
top_panel_middle_dir_arc_w_30mm();
translate([-15, -40, -(panel_z/2) - 3]) rotate([0, 0, -45]) pcb_mount();
}
top_panel_middle_dir_arc_w_30mm_with_mount();

View File

@@ -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>
module top_panel_middle_dir_arc_w_30mm() {
difference() {
panel_with_raised_overhang();
dir_arc_w_30mm();
rotate([0, 0, 180]) side_chopper();
side_chopper();
}
}
top_panel_middle_dir_arc_w_30mm();

View File

@@ -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 <top-panel-right-sega-2p-plus-one-plus-control-with-mount.scad>
module top_panel_right_sega_2p_plus_one_plus_control_with_mount_with_oled() {
difference() {
top_panel_right_sega_2p_plus_one_plus_control_with_mount();
translate([75, 77.5, 0]) oled_ssd1306_mount_cutout();
}
translate([75, 77.5, 0.5]) oled_ssd1306_mount();
}
top_panel_right_sega_2p_plus_one_plus_control_with_mount_with_oled();

View File

@@ -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 <top-panel-right-sega-2p-plus-one-plus-control.scad>
module top_panel_right_sega_2p_plus_one_plus_control_with_mount() {
top_panel_right_sega_2p_plus_one_plus_control();
translate([30, -50, -(panel_z/2) - 3]) pcb_mount();
}
top_panel_right_sega_2p_plus_one_plus_control_with_mount();

View File

@@ -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>
module top_panel_right_sega_2p_plus_one_plus_control() {
difference() {
panel_with_raised_overhang();
sega_2p_plus_one();
rotate([0, 0, 180]) side_chopper();
translate([89, 30, 0]) button_24mm_hole();
}
}
top_panel_right_sega_2p_plus_one_plus_control();

View File

@@ -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 <top-panel-right-sega-2p-plus-one.scad>
module top_panel_right_sega_2p_plus_one_with_mount() {
top_panel_right_sega_2p_plus_one();
translate([30, -50, -(panel_z/2) - 3]) pcb_mount();
}
top_panel_right_sega_2p_plus_one_with_mount();

View File

@@ -0,0 +1,17 @@
/*
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
module top_panel_right_sega_2p_plus_one() {
difference() {
panel_with_raised_overhang();
sega_2p_plus_one();
rotate([0, 0, 180]) side_chopper();
}
}
top_panel_right_sega_2p_plus_one();

View File

@@ -0,0 +1,16 @@
/*
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
module dir_arc_24mm_6_button_panel() {
difference() {
panel_with_raised_overhang();
translate([-71.5, -panel_y/2+122.5, 0]) dir_arc_24mm_6_button();
}
}
dir_arc_24mm_6_button_panel();

View File

@@ -0,0 +1,16 @@
/*
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
module dir_arc_plus_w_24mm_8_button_panel() {
difference() {
panel_with_raised_overhang();
translate([-80.5, panel_y/6, 0]) dir_arc_plus_w_24mm_8_button();
}
}
dir_arc_plus_w_24mm_8_button_panel();

View File

@@ -0,0 +1,21 @@
/*
* SPDX-FileCopyrightText: © 2023 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
module top_panel_solo_lever_and_sega_2p_6_button() {
difference() {
// base plate
union() {
panel_with_raised_overhang();
translate([-60, 18, -((panel_z/2)+(lever_mount_z/2))]) levermountbase();
}
translate([95, -20, 0]) sega_2p_6_button();
translate([-60, 18, 0]) levermountholes();
}
}
top_panel_solo_lever_and_sega_2p_6_button();

View File

@@ -1,30 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
use <top-panel-right-sega-2p-plus-one-plus-control-with-mount.scad>
module top_panel_right_sega_2p_plus_one_plus_control_with_mount_with_oled() {
difference() {
top_panel_right_sega_2p_plus_one_plus_control_with_mount();
translate([75, 77.5, 0]) oled_ssd1306_mount_cutout();
}
translate([75, 77.5, 0.5]) oled_ssd1306_mount();
}
top_panel_right_sega_2p_plus_one_plus_control_with_mount_with_oled();

View File

@@ -1,27 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
use <top-panel-right-sega-2p-plus-one-plus-control.scad>
module top_panel_right_sega_2p_plus_one_plus_control_with_mount() {
top_panel_right_sega_2p_plus_one_plus_control();
translate([30, -50, -(top_plate_z/2) - 3]) pcb_mount();
}
top_panel_right_sega_2p_plus_one_plus_control_with_mount();

View File

@@ -1,30 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
module top_panel_right_sega_2p_plus_one_plus_control() {
difference() {
top_plate_with_raised_overhang();
sega_2p_plus_one();
rotate([0, 0, 180]) side_chopper();
translate([89, 30, 0]) button_24mm_hole();
}
}
top_panel_right_sega_2p_plus_one_plus_control();

View File

@@ -1,27 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
use <top-panel-right-sega-2p-plus-one.scad>
module top_panel_right_sega_2p_plus_one_with_mount() {
top_panel_right_sega_2p_plus_one();
translate([30, -50, -(top_plate_z/2) - 3]) pcb_mount();
}
top_panel_right_sega_2p_plus_one_with_mount();

View File

@@ -1,29 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
module top_panel_right_sega_2p_plus_one() {
difference() {
top_plate_with_raised_overhang();
sega_2p_plus_one();
rotate([0, 0, 180]) side_chopper();
}
}
top_panel_right_sega_2p_plus_one();

View File

@@ -1,28 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
module dir_arc_24mm_6_button_panel() {
difference() {
top_plate_with_raised_overhang();
translate([-71.5, -top_plate_y/2+122.5, 0]) dir_arc_24mm_6_button();
}
}
dir_arc_24mm_6_button_panel();

View File

@@ -1,28 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
module dir_arc_plus_w_24mm_8_button_panel() {
difference() {
top_plate_with_raised_overhang();
translate([-80.5, top_plate_y/6, 0]) dir_arc_plus_w_24mm_8_button();
}
}
dir_arc_plus_w_24mm_8_button_panel();

View File

@@ -1,33 +0,0 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <components.scad>
module top_panel_solo_lever_and_sega_2p_6_button() {
difference() {
// base plate
union() {
top_plate_with_raised_overhang();
translate([-60, 18, -((top_plate_z/2)+(lever_mount_z/2))]) levermountbase();
}
translate([95, -20, 0]) sega_2p_6_button();
translate([-60, 18, 0]) levermountholes();
}
}
top_panel_solo_lever_and_sega_2p_6_button();