31 Commits

Author SHA1 Message Date
b911a1b7c1 three section v2 render 2023-09-06 16:24:58 -05:00
ff19699d61 update TODO and README notes
no known issues!
2023-09-06 14:47:14 -05:00
8140d5e3a8 neutrik D base plate, also good as a cover 2023-09-06 14:44:54 -05:00
708122e510 dustwasher that fits the LSX-NOBI, maybe more 2023-09-06 11:30:52 -05:00
b704f158db start v3 TODO 2023-09-05 11:47:50 -05:00
5177090625 rename some misc files for consistency/sorting 2023-09-05 10:41:59 -05:00
679d3025fe decorative plate for a neutrik D mount
this is used for the outside of an ethercon, for instance
2023-09-03 09:56:53 -05:00
e68ffbfc7b decorative button surround plates for the top 2023-09-03 09:53:49 -05:00
ed3c5a1210 rename non-overhang panels accordingly 2023-09-01 15:54:55 -05:00
fbf919b764 bottom panels with overhang for left/right/middle 2023-09-01 15:50:31 -05:00
9881f6391e more top panel with overhang options
left/middle/right/solo is the overhang stuff, will need to rename the
inset ones at a later point
2023-09-01 13:39:48 -05:00
bfae2b093b create a top left (overhang) lever panel
this replaces the left-adjusted inset panel, which I didn't use anyway,
and starts normalizing the overhang panels more
2023-09-01 13:38:29 -05:00
43a036e17c consolidate button hole and wider cylinder into one object
nothing was materially using the non-snap-in cutout anymore (except for
the frame which wasn't updated since removing the bigger cutout
rectangle, so I fixed that), and I want to use it for a template thing
I'm working on, so remove some cruft
2023-08-30 10:02:12 -05:00
3b964ee6d8 scoot the buttons in panels a bit closer to each other 2023-08-30 00:24:19 -05:00
fe0e3b6017 center the button panels and their layouts
I can refactor the double translation away at soem later point
2023-08-30 00:22:31 -05:00
16d3feadc1 use the larger concaveness from the overhang panel 2023-08-29 23:33:54 -05:00
1db6577f75 remove unused, unnecessary panel with no concave
rename bottom panels now that concave is normal
2023-08-29 23:33:51 -05:00
cd5cd422e5 rename side chopper, going to be used for more than just frames 2023-08-29 10:13:40 -05:00
652653180e go back to three neutrik D mounts on the solo frame
this (barely) works
2023-08-29 10:07:08 -05:00
73e93d4536 make a bottom overhang plate
slightly different than the top since there's no inset, so no need for
that frame or the posts
2023-08-29 10:06:21 -05:00
e51b79a193 squeeze dir. arc + W w/8 buttons on one panel
it's a tight squeeze; fits in the frame, but frame buttons/quick
connects maybe a problem
2023-08-28 10:51:07 -05:00
694e2c6173 bring 5 mm back to the frame
to accommodate quick connects, levers, etc.
2023-08-28 10:47:53 -05:00
a8ca6bafa9 fix the frame support box again
math is even harder when you're not using the right variables
2023-08-28 00:08:48 -05:00
cd71ed013b fix the frame box width, which was too thin bc math is hard 2023-08-27 15:17:24 -05:00
12273649f5 better name for the 24mm dir + 6 button panel 2023-08-27 14:36:34 -05:00
57be13d9cb more accurate name for the neutrik D plate 2023-08-26 22:12:07 -05:00
344de2c84f standalone frame, with tweaks to the frame as a consequence
* frame width has been reduced in order to leave more space and have
  sunken buttons somewhat accessible
* the cutout for neutrik mounts has been reduced and moved into the
  holes themselves, to do this more modularly and restore some support
2023-08-26 21:57:12 -05:00
a8d02f9229 squish a decent all buttons layout onto one panel
this uses the new raised panel look, I'm trying it out but haven't
updated the other top panels yet until I'm sure I like it --- it'll mean
a lot of chopping
2023-08-26 14:48:01 -05:00
af38f0a580 move top plate holes into reusable module 2023-08-26 14:42:58 -05:00
19fa31b425 a one-panel 24mm dir arc + action buttons layout
(you can fit 6! not bad!)
2023-08-25 15:36:41 -05:00
6ca57615e4 solve for 24mm/30mm snap-ins 2023-08-25 15:36:38 -05:00
32 changed files with 609 additions and 86 deletions

View File

@@ -2,7 +2,7 @@
Files for 3D printing an arcade stick.
![An example of stick components displayed in OpenSCAD](docs/three-panel-example.png)
![An example of stick components displayed in OpenSCAD](docs/three-panel-example-v2.png)
Originally an attempt to make a couple customized STL files for the [OpenStickCommunity Fightstick
Case](https://github.com/OpenStickCommunity/Hardware/tree/main/Fightstick%20Case), the changes ballooned to fit my
@@ -43,16 +43,7 @@ What you'll need beyond these objects:
### Issues and Limitations
This is a living repository, and as such, there are likely issues with the objects, known or otherwise. Be aware:
* The top panel is 5mm tall and doesn't have an inset; snap-in buttons likely do not fit.
* A composition error made the frame 5mm shorter than intended and wasn't noticed until I printed everything:
* Some levers don't have enough clearance in the case.
* Buttons with traditional quick connects are a *very* tight fit, you will probably need to bend pins.
* The PCB mount position was very tight on the buttons panel; it will probably have to be moved.
* Support for the top plate was removed from the frame due to overhang issues, and now the top plate can bow slightly
with pressure; a new solution needs to be found.
This is a living repository, and as such, there are likely issues with the objects, known or otherwise.
These issues may be fixed in the future; see `TODO.md` for details.
## Development and Contributing

14
TODO.md
View File

@@ -2,17 +2,7 @@
Notes for "next time".
## v2
## v3
* I need at least 5mm, maybe 10mm, more height, to fit some of my levers like the Nobi Bullet
* I couldn't even fit a JLF without the compensations in v1 on the bottom panel
* I had to bend the pins a bit on Crown SDB-202s, too
* Top plates are 1-2mm too thick for snap-ins, maybe have a variant with a couple shaved off like with the bottom plate
workaround
* The plates bow a bit on the top when pressure is applied, because there's no support from the frame up there ---
adding 5mm to the frame should leave a couple mm for support to get added back
* PCB mount on `top-panel-dir_arc-plus-w-30mm-plus-one-with-mount.scad` doesn't leave room for a USB cable on the right
hand side
* The panels' connection points could probably be a bit thinner to accommodate more bolts. A 20mm bolt barely clears the
two panels and I don't like that kind of bolt connection.
* Check that the 24mm cutouts in the frame are good enough, somehow I didn't have them when I printed v2
* Engraving some cosmetic stuff? Or maybe a place to mount other plates?

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -0,0 +1,30 @@
/* 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

@@ -0,0 +1,30 @@
/* 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,28 @@
/* 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() {
difference() {
mirror([0, 0, 1]) topplate();
translate([0, 0, top_plate_z/2]) cube([top_plate_x*5/6, top_plate_y*5/6, top_plate_z], center=true);
}
}
bottom_panel();

View File

@@ -17,9 +17,10 @@
*/
include <components.scad>
use <bottom-panel-left.scad>
module bottom_panel() {
mirror([0, 0, 1]) topplate();
module bottom_panel_right() {
rotate([0, 0, 180]) bottom_panel_left();
}
bottom_panel();
bottom_panel_right();

View File

@@ -17,13 +17,12 @@
*/
include <components.scad>
use <bottom-panel.scad>
module bottom_panel_concave() {
module bottom_panel_solo() {
difference() {
bottom_panel();
translate([0, 0, top_plate_z/2]) cube([top_plate_x*2/3, top_plate_y*2/3, top_plate_z], center=true);
bottom_plate_with_overhang();
translate([0, 0, top_plate_z/2]) cube([top_plate_x*5/6, top_plate_y*5/6, top_plate_z], center=true);
}
}
bottom_panel_concave();
bottom_panel_solo();

View File

@@ -45,15 +45,22 @@ lever_mount_z = 2;
// case dimensions
frame_x = 183;
frame_y = 208;
frame_z = 45; // reminder: inside (including mounts) is chopped by top_plate_z for plates
frame_z = 50; // reminder: inside (including mounts) is chopped by top_plate_z for plates
top_plate_x = 175;
top_plate_y = 200;
top_plate_z = 5;
// 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 = 12;
jumbo_decorative_radius = 15;
/* PARTS */
module m4_hole() {
@@ -64,12 +71,43 @@ module m4_hole_countersink() {
cylinder(r1=m4_bolt_radius, r2=m4_bolt_countersink_radius, h=3.2, $fn=50, center=true);
}
module button_24mm_hole() {
cylinder(r=small_button_radius, h=100, $fn=50, center=true);
module top_plate_holes() {
// holes for mount bolts
translate([77.5, 90, 0]) m4_hole();
translate([77.5, -90, 0]) m4_hole();
translate([-77.5, 90, 0]) m4_hole();
translate([-77.5, -90, 0]) m4_hole();
// holes for mount bolt countersinks
translate([77.5, 90, 2]) m4_hole_countersink();
translate([77.5, -90, 2]) m4_hole_countersink();
translate([-77.5, 90, 2]) m4_hole_countersink();
translate([-77.5, -90, 2]) m4_hole_countersink();
}
// button hole, with extra wide bits for various uses (cutting out space
// for snap-ins, etc.
module button_24mm_hole() {
cylinder(r=small_button_radius, h=100, $fn=50, center=true);
// carve out space for snap-ins, leave 3mm
// slagcoin has screw-in nut diameter at 29.5mm, so radius+6 to leave some space
// translation is to leave 3mm thickness in the plate without recentering anything
translate([0, 0, -25]) cylinder(r=small_button_radius+6, h=49, $fn=50, center=true);
// space for decorative button surround stuff
translate([0, 0, 50]) cylinder(r=small_button_radius+decorative_radius, h=20, $fn=50, center=true);
translate([0, 0, 70]) cylinder(r=small_button_radius+jumbo_decorative_radius, h=20, $fn=50, center=true);
}
// button hole, with extra wide bits for various uses (cutting out space
// for snap-ins, etc.
module button_30mm_hole() {
cylinder(r=big_button_radius, h=100, $fn=50, center=true);
// carve out space for snap-ins, leave 3mm
// slagcoin has screw-in nut diameter at 36mm, so radius+6 to leave some space
// translation is to leave 3mm thickness in the plate without recentering anything
translate([0, 0, -25]) cylinder(r=big_button_radius+6, h=49, $fn=50, center=true);
// space for decorative button surround stuff
translate([0, 0, 50]) cylinder(r=big_button_radius+decorative_radius, h=20, $fn=50, center=true);
translate([0, 0, 70]) cylinder(r=big_button_radius+jumbo_decorative_radius, h=20, $fn=50, center=true);
}
module frame_hex_bolt_hole() {
@@ -92,6 +130,7 @@ module neutrik_d_mount() {
neutrik_d_hole();
translate([9.5, 12, 0]) neutrik_d_screw_hole();
translate([-9.5, -12, 0]) neutrik_d_screw_hole();
translate([0, 0, 25]) cube([32, 37, 50], center=true);
}
module m3_mount_post() {
@@ -148,34 +187,49 @@ module base_topplate() {
cube([top_plate_x, top_plate_y, top_plate_z], center=true);
}
module overhang_plate() {
roundedcube([top_plate_x+25, top_plate_y+25, top_plate_z], center=true, radius=1);
}
// this takes the base_topplate and makes it a small frame, putting a larger top plate
module base_topplate_with_raised_overhang() {
// make a frame out of the top plate (and keep the main plate on the center plane)
translate([0, 0, -5]) difference() {
base_topplate();
cube([top_plate_x-(panel_support_width*2), top_plate_y-(panel_support_width*2), top_plate_z*2], center=true);
}
translate([(top_plate_x/2)-10, (top_plate_y/2)-10, -2.5]) resize([0, 0, 10]) frame_mount_column();
translate([-((top_plate_x/2)-10), (top_plate_y/2)-10, -2.5]) resize([0, 0, 10]) frame_mount_column();
translate([(top_plate_x/2)-10, -((top_plate_y/2)-10), -2.5]) resize([0, 0, 10]) frame_mount_column();
translate([-((top_plate_x/2)-10), -((top_plate_y/2)-10), -2.5]) resize([0, 0, 10]) frame_mount_column();
overhang_plate();
}
module topplate() {
difference() {
base_topplate();
// holes for mount bolts
translate([77.5, 90, 0])
m4_hole();
translate([77.5, -90, 0])
m4_hole();
translate([-77.5, 90, 0])
m4_hole();
translate([-77.5, -90, 0])
m4_hole();
// holes for mount bolt countersinks
translate([77.5, 90, 2])
m4_hole_countersink();
translate([77.5, -90, 2])
m4_hole_countersink();
translate([-77.5, 90, 2])
m4_hole_countersink();
translate([-77.5, -90, 2])
m4_hole_countersink();
top_plate_holes();
}
}
module bottom_plate_with_overhang() {
difference() {
overhang_plate();
rotate([180, 0, 0]) top_plate_holes();
}
}
module topplate_with_raised_overhang() {
difference() {
base_topplate_with_raised_overhang();
top_plate_holes();
}
}
module frame_box() {
difference() {
roundedcube([frame_x, frame_y, frame_z], center=true, radius=3);
cube([frame_x-26, frame_y-26, frame_z+5], center=true);
cube([top_plate_x-(panel_support_width*2), top_plate_y-(panel_support_width*2), frame_z+5], center=true);
}
}
@@ -183,8 +237,8 @@ module frame_mount_column() {
cube([20, 20, frame_z], center=true);
}
module frame_side_chopper() {
translate([frame_x/2, 0, 0]) cube([8, 2*(frame_y+top_plate_y), 2*(frame_z+top_plate_z)], center=true);
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);
}
module frame_connection_holes() {
@@ -227,16 +281,39 @@ module frame() {
frame_hex_bolt_hole();
translate([-((top_plate_x/2)-10), -((top_plate_y/2)-10), 0])
frame_hex_bolt_hole();
// thin up the mount point to accommodate snap-ins, ethercon adapter
translate([0, 10, 10]) cube([120, 180, 60], center=true);
}
}
/* LAYOUTS */
// Directional Arc (both hands)
module dir_arc_24mm_6_button() {
button_24mm_hole();
translate([29.5, 0, 0]) button_24mm_hole();
translate([29.5+26.3, -12.9, 0]) button_24mm_hole();
translate([29.5+26.3+15.5+9.7+2.6, 0, 0]) button_24mm_hole();
translate([29.5+26.3+15.5+9.7+2.6+26.9, 10.9, 0]) button_24mm_hole();
translate([29.5+26.3+15.5+9.7+2.6+26.9+29.6, 10.9, 0]) button_24mm_hole();
translate([29.5+26.3+15.5+9.7, -29.4, 0]) button_24mm_hole();
translate([29.5+26.3+15.5+9.7+2.6+26.9-1.7, 10.9-30.1, 0]) button_24mm_hole();
translate([29.5+26.3+15.5+9.7+2.6+26.9+29.6, 10.9-30.1, 0]) button_24mm_hole();
translate([29.5+26.3+15.5, -65.2, 0]) button_30mm_hole();
}
// 6 button plus the normal fourth column for 8 button actually on a third row
module dir_arc_24mm_8_button_compressed() {
dir_arc_24mm_6_button();
translate([29.5+26.3+15.5+9.7+2.6+2.6, 29.4, 0]) button_24mm_hole();
translate([29.5+26.3+15.5+9.7+2.6+26.9+2.6, 40.3, 0]) button_24mm_hole();
}
// Directional Arc (left hand)
module dir_arc_30mm_button_l() {
translate([68, 132, 0]) button_30mm_hole();
translate([-top_plate_x/2, -top_plate_y/2, 0]) translate([73, 132, 0]) button_30mm_hole();
}
module dir_arc_w_30mm() {
@@ -245,7 +322,7 @@ module dir_arc_w_30mm() {
translate([35+33.5, -12.9, 0]) dir_arc_30mm_button_l();
translate([35+7, 34.5, 0]) dir_arc_30mm_button_l();
// just my guesstimate on this one, but note that this is the same position as sega 2p (just mirrored)
translate([top_plate_x-33.06, 145-19-9-11-19-9-11, 0]) button_30mm_hole();
translate([-top_plate_x/2, -top_plate_y/2, 0]) translate([top_plate_x-28.06, 145-19-9-11-19-9-11, 0]) button_30mm_hole();
}
module dir_arc_w_30mm_plus_one() {
@@ -253,8 +330,10 @@ module dir_arc_w_30mm_plus_one() {
translate([-33.5, -12.9, 0]) dir_arc_30mm_button_l();
}
// Namco Noir (right hand)
module noir_button_p1() {
translate([40, 145, 0]) button_30mm_hole();
translate([-top_plate_x/2, -top_plate_y/2, 0]) translate([35, 145, 0]) button_30mm_hole();
}
module noir_plus_one() {
@@ -272,8 +351,10 @@ module noir_plus_one() {
translate([-3.47-3.47, -78, 0]) noir_button_p1();
}
// Sega Astro City 2P (right hand)
module sega_2p_p1() {
translate([33.06, 145, 0]) button_30mm_hole();
translate([-top_plate_x/2, -top_plate_y/2, 0]) translate([28.06, 145, 0]) button_30mm_hole();
}
module sega_2p_plus_one() {

View File

@@ -22,7 +22,7 @@ module base_left_frame() {
difference() {
frame();
// chop the right edge off
frame_side_chopper();
side_chopper();
}
}
@@ -36,9 +36,9 @@ module left_frame() {
translate([0, 0, -top_plate_z/2]) frame_cable_routing_hole();
// aux button holes
translate([0, 100, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([-40, 100, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([40, 100, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([0, 101.5, 0]) rotate([270, 0, 0]) button_24mm_hole();
translate([-40, 101.5, 0]) rotate([270, 0, 0]) button_24mm_hole();
translate([40, 101.5, 0]) rotate([270, 0, 0]) button_24mm_hole();
}
}

View File

@@ -22,8 +22,8 @@ module base_middle_frame() {
difference() {
frame();
// chop the left and right edge off
frame_side_chopper();
mirror([1, 0, 0]) frame_side_chopper();
side_chopper();
mirror([1, 0, 0]) side_chopper();
}
}

46
src/frame-solo.scad Normal file
View File

@@ -0,0 +1,46 @@
/* 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 solo_frame() {
difference() {
rotate([0, 0, 90]) frame();
// neutrik mounts for connector, switches
translate([0, (frame_x/2)-2.5, 0]) rotate([90, 0, 0]) neutrik_d_mount();
translate([-40, (frame_x/2)-2.5, 0]) rotate([90, 0, 0]) neutrik_d_mount();
translate([40, (frame_x/2)-2.5, 0]) rotate([90, 0, 0]) neutrik_d_mount();
// aux button holes
translate([-frame_y/2+2.5, 0, 0]) rotate([0, 0, 270])
translate([0, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([-frame_y/2+2.5, 0, 0]) rotate([0, 0, 270])
translate([-40, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([-frame_y/2+2.5, 0, 0]) rotate([0, 0, 270])
translate([40, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([frame_y/2-2.5, 0, 0]) rotate([0, 0, 90])
translate([0, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([frame_y/2-2.5, 0, 0]) rotate([0, 0, 90])
translate([-40, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([frame_y/2-2.5, 0, 0]) rotate([0, 0, 90])
translate([40, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
}
}
solo_frame();

View File

@@ -0,0 +1,38 @@
/* 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_30mm_and_sega_2p_plus_one_decorative_plate() {
difference() {
// get a 1mm slice of the bigger button cylinders
union() {
translate([-top_plate_x/2, 0, -65]) dir_arc_w_30mm();
translate([top_plate_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);
// cut out the normal holes
translate([-top_plate_x/2, 0, -1]) dir_arc_w_30mm();
translate([top_plate_x/2, 0, -1]) sega_2p_plus_one();
}
/* // fill in some space */
/* translate([-6, -6, 0]) cube([23, 23, 1], center=true); */
}
dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate();

View File

@@ -0,0 +1,32 @@
/* 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_30mm_decorative_plate() {
difference() {
// get a 1mm slice of the bigger button cylinders
translate([0, 0, -45]) dir_arc_w_30mm();
translate([0, 0, -50]) cube([500, 500, 98], center=true);
translate([0, 0, 50]) cube([500, 500, 98], center=true);
// cut out the normal holes
translate([0, 0, -1]) dir_arc_w_30mm();
}
}
dir_arc_plus_w_30mm_decorative_plate();

View File

@@ -0,0 +1,33 @@
/* 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 sega_2p_plus_one_decorative_plate() {
difference() {
decorative_add=10;
// get a 1mm slice of the bigger button cylinders
translate([0, 0, -45]) sega_2p_plus_one();
translate([0, 0, -50]) cube([500, 500, 98], center=true);
translate([0, 0, 50]) cube([500, 500, 98], center=true);
// cut out the normal holes
translate([0, 0, -1]) sega_2p_plus_one();
}
}
sega_2p_plus_one_decorative_plate();

View File

@@ -0,0 +1,28 @@
/* 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 lsx_nobi_dustwasher() {
difference() {
cylinder(r=jumbo_decorative_radius+5+hole_tolerance, h=2, $fn=50, center=true);
cylinder(r=5+hole_tolerance, h=2.1, $fn=50, center=true);
}
}
lsx_nobi_dustwasher();

View File

@@ -0,0 +1,30 @@
/* 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

@@ -0,0 +1,29 @@
/* 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_24mm() {
difference() {
neutrik_d_plate();
cylinder(r=12+hole_tolerance, h=5, $fn=50, center=true);
}
}
neutrik_d_plate_24mm();

View File

@@ -18,14 +18,12 @@
include <components.scad>
module spdt_neutrik_d_plate() {
module neutrik_d_plate() {
difference() {
cube([30, 35, 2], center=true);
translate([9.5, 12, 0]) neutrik_d_screw_hole();
translate([-9.5, -12, 0]) neutrik_d_screw_hole();
cylinder(r=10+hole_tolerance, h=5, $fn=50, center=true);
cube([2.2, 22, 5], center=true);
}
}
spdt_neutrik_d_plate();
neutrik_d_plate();

View File

@@ -21,7 +21,7 @@ use <top-panel-dir_arc-plus-w-30mm-plus-one.scad>
module dir_arc_w_30mm_plus_one_panel_with_mount() {
dir_arc_w_30mm_plus_one_panel();
translate([65, 55, -(top_plate_z/2) - 3]) pcb_mount();
translate([-15, -40, -(top_plate_z/2) - 3]) rotate([0, 0, -15]) pcb_mount();
}
dir_arc_w_30mm_plus_one_panel_with_mount();

View File

@@ -20,7 +20,7 @@ include <components.scad>
module dir_arc_w_30mm_plus_one_panel() {
difference() {
translate([top_plate_x/2, top_plate_y/2, 0]) topplate();
topplate();
dir_arc_w_30mm_plus_one();
}
}

View File

@@ -20,7 +20,7 @@ include <components.scad>
module namco_noir_plus_one_panel() {
difference() {
translate([top_plate_x/2, top_plate_y/2, 0]) topplate();
topplate();
noir_plus_one();
}
}

View File

@@ -20,7 +20,7 @@ include <components.scad>
module namco_noir_plus_two_panel() {
difference() {
translate([top_plate_x/2, top_plate_y/2, 0]) topplate();
topplate();
noir_plus_one();
translate([32.94-3.47-3.47, -78+7.37+4.49, 0]) noir_button_p1();
}

View File

@@ -20,7 +20,7 @@ include <components.scad>
module sega_2p_plus_one_panel() {
difference() {
translate([top_plate_x/2, top_plate_y/2, 0]) topplate();
topplate();
sega_2p_plus_one();
}
}

View File

@@ -19,22 +19,17 @@
include <components.scad>
// combine the lever mount and generic plate, with mounting holes
module left_lever_panel() {
module top_panel_left_lever() {
difference() {
// base plate
union() {
translate([20,-20,0])
topplate();
translate([0,-20,0]) topplate_with_raised_overhang();
translate([0, 0, -((top_plate_z/2)+(lever_mount_z/2))]) levermountbase();
}
// holes to mount the lever
levermountholes();
side_chopper();
}
}
module left_lever_panel_with_mount() {
left_lever_panel();
translate([0, -top_plate_y/2+25, -(top_plate_z/2) - 3]) pcb_mount();
}
left_lever_panel_with_mount();
top_panel_left_lever();

View File

@@ -0,0 +1,27 @@
/* 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

@@ -0,0 +1,30 @@
/* 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() {
topplate_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,29 @@
/* 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() {
topplate_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,28 @@
/* 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() {
rotate([0, 0, -90]) topplate_with_raised_overhang();
translate([-top_plate_x+105, -top_plate_y/2+135, 0]) dir_arc_24mm_6_button();
}
}
dir_arc_24mm_6_button_panel();

View File

@@ -0,0 +1,30 @@
/* 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-solo-dir_arc-24mm-6-button.scad>
module dir_arc_plus_w_24mm_8_button_panel() {
difference() {
rotate([0, 0, -90]) topplate_with_raised_overhang();
translate([-top_plate_x+105, -top_plate_y/2+123, 0]) dir_arc_24mm_8_button_compressed();
translate([-34.5, 51, 0]) button_24mm_hole();
}
}
dir_arc_plus_w_24mm_8_button_panel();