7 Commits

Author SHA1 Message Date
edf5729a85 document a trick for getting panels out in this frictioned world
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-03-14 18:59:27 -05:00
3a1494c021 s/spacer/standoff/
I honestly never remember the difference, but might as well be
consistent

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-03-14 18:52:25 -05:00
9125105b42 correct name of the extra extended side piece
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-03-09 12:49:49 -06:00
cadf2bf210 add pieces vaguely like the TE1 sides as alternative frame sides
still playing with these a bit, but test prints yields some promising
shapes, just need to do a build with them to confirm I like it

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-03-07 19:15:31 -06:00
0993c0f292 sales pitch (tongue in cheek) preamble in the README
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-03-06 14:11:20 -06:00
954ce38f07 clean up the part descriptions slightly in the README
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-03-06 13:31:15 -06:00
832d5ede8b update example images in the README
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2024-03-06 13:30:02 -06:00
8 changed files with 132 additions and 7 deletions

View File

@@ -2,11 +2,16 @@
Files for 3D printing an arcade stick.
Have you ever wanted to conjure your own arcade stick out of the ether (well, plastic), or to prototype a new layout or
design before sending it to a custom builder? Do you just love having your space filled with arcade stick enclosures,
because you keep making different variants, colorways, and so on? Or do you simply want a good stick on the cheap, and
know someone or a library with a 3D printer? The Buildable Stick System may be the project for you!
![An example of stick components displayed in OpenSCAD](docs/blown-up-demo.png)
[OpenSCAD-based illustration of how the components for an overhang panel-based stick fit together.]
![A photo of a completed stick](docs/finished-v3.1.jpg)
![A photo of a completed stick](docs/finished-v4.1.jpg)
[Photo of a completed inset panel-based stick.]
@@ -27,14 +32,14 @@ starting with an existing object and constructing what you'd like with new or ex
There are a lot of parts to pick from, but there are some structural variants to pay attention to; here's some help
about when/how to use specific parts:
* `foo-panel-inset`s --- these fit flush into a frame, creating a closed box enclosure.
* `foo-panel-overhang`s --- these have a tray that fits into a frame with the actual face extending beyond the frame,
* `panel-inset` --- these fit flush into a frame, creating a closed box enclosure.
* `panel-overhang` --- these have a tray that fits into a frame with the actual face extending beyond the frame,
creating an ice cream sandwich enclosure.
* These also yield a bit more space inside the box, for tall levers or whatever.
* `frame`s (non-pieces) --- these create the box of the enclosure, as one part. These can be hard to print well ---
* `frame` (non-pieces) --- these create the box of the enclosure, as one part. These can be hard to print well ---
shrinkage forces tend to curl up the corners no matter what you do, and some points need supports --- but if you don't
care about that because you're printing an ice cream sandwich, they are simpler than...
* `frame-piece`s --- these break up the frame box into four faces, and are held together by friction fit and the hex
* `frame-piece` --- these break up the frame box into four faces, and are held together by friction fit and the hex
bolts. This is more stable than you might expect, but it does introduce some variability in the overall sturdiness of
the enclosure compared with the frame as one box piece.
* The `interconnect` replaces the need to bolt multiple frames together.
@@ -92,11 +97,11 @@ Filament masses from Bambu Studio estimates, using Bambu PLA Basic.
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,
as of 2023-09-12)
* 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
* 8 45mm M4 standoffs to connect panels to frames: **$2.40 USD** (you can get a pack of 10 on AliExpress for $3, as of
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
stick anyway
* You can also use a shorter length with longer bolts, or combine multiple spacers, if either of those yield better
* You can also use a shorter length with longer bolts, or combine multiple standoffs, if either of those yield better
prices
* 8 16mm M4 bolts to connect top plates to frames: **$0.72 USD** (you can get a pack of 100 on Amazon for $9, as of
* 8 12mm M4 bolts to connect bottom plates to frames: **$0.72 USD** (you can get a pack of 100 on Amazon for $9, as of

19
docs/assembly-and-tips.md Normal file
View File

@@ -0,0 +1,19 @@
# Assembly and Tips
Just some miscellaneous notes for any dear reader, or more likely, my own forgetful self.
## Removing Inset Panels
As of v4.1 (or in v3), the top and bottom inset panels both insert into the frame, inside the frame "lip", meaning that
when everything is put together, they create a flush surface (more or less). This can make them hard to get out, as you
can't grab anything to get any leverage, and especially with v4.1, the plastic posts to aid the friction fit make it
even harder to muscle out --- in fact, even if you could get an edge and start yanking, you'd probably just break some
of the plastic.
You can instead use the reverse side and the hex standoffs to push a panel out, as so:
1. Loosen, or completely remove, the hex bolts for the panel you would like to remove.
2. Flip the stick over, and remove the hex bolts on the opposite side.
3. Screw in longer bolts, or anything else that'll fit into the hole without going flush against the panel.
4. Push the long bolts in, thus pushing the standoffs, thus pushing the desired panel out from within.
5. You may have to even get a mallet and tap on a bolt, occasionally, as everything can be *pretty* tight.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 121 KiB

BIN
docs/finished-v4.1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

View File

@@ -0,0 +1,29 @@
/*
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
use <frame-piece-bottom-left-or-right.scad>
module bottom_piece_wall() {
// get a slice of the piece, to use it in extruding
projection(cut=true) rotate([-90, 0, 0]) translate([0, frame_y/2-frame_bevel_height, 0])
bottom_left_or_right_frame_piece();
}
module bottom_piece_extension() {
// combine the original with a shrunken piece to "pull" the wall out
hull() {
linear_extrude(height=frame_extension_y) scale([1, 0.5, 1]) bottom_piece_wall();
linear_extrude(height=frame_bevel_height) bottom_piece_wall();
}
}
module extended_bottom_left_or_right_frame_piece() {
bottom_left_or_right_frame_piece();
translate([0, -frame_y/2+frame_bevel_height*2, 0]) rotate([90, 0, 0]) bottom_piece_extension();
}
extended_bottom_left_or_right_frame_piece();

View File

@@ -0,0 +1,35 @@
/*
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
use <frame-piece-bottom-left-or-right-extended.scad>
use <frame-piece-side.scad>
module side_and_bottom_frame_piece_wall() {
// get a slice of the pieces, to use it in extruding
projection(cut=true) rotate([0, 90, 0]) translate([frame_x/2-frame_bevel_height, 0, 0])
side_frame_piece();
projection(cut=true) translate([0, -frame_y/2+frame_wall, 0]) rotate([90, 90, 0]) bottom_piece_extension();
}
module side_and_bottom_frame_piece_extension() {
// combine the original with a shrunken piece to "pull" the wall out
hull() {
linear_extrude(height=frame_extension_y) scale([0.5, 0.90, 1]) side_and_bottom_frame_piece_wall();
linear_extrude(height=frame_bevel_height) side_and_bottom_frame_piece_wall();
}
}
module extra_extended_left_or_right_frame_piece() {
difference() {
side_frame_piece();
// chop off the old edge which is getting replaced with the extension
translate([-frame_x/2+frame_bevel_height/2, 0, 0]) cube([frame_bevel_height, frame_y, frame_z], center=true);
}
translate([-frame_x/2+frame_bevel_height*2, 0, 0]) rotate([0, -90, 0]) side_and_bottom_frame_piece_extension();
}
extra_extended_left_or_right_frame_piece();

View File

@@ -0,0 +1,33 @@
/*
* SPDX-FileCopyrightText: © 2024 Brian S. Stephan <bss@incorporeal.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*/
include <parameters.scad>
include <components.scad>
use <frame-piece-side.scad>
module side_frame_piece_wall() {
// get a slice of the piece, to use it in extruding
projection(cut=true) rotate([0, 90, 0]) translate([frame_x/2-frame_bevel_height, 0, 0])
side_frame_piece();
}
module side_frame_piece_extension() {
// combine the original with a shrunken piece to "pull" the wall out
hull() {
linear_extrude(height=frame_extension_y) scale([0.5, 0.85, 1]) side_frame_piece_wall();
linear_extrude(height=frame_bevel_height) side_frame_piece_wall();
}
}
module extended_bottom_left_or_right_frame_piece() {
difference() {
side_frame_piece();
// chop off the old edge which is getting replaced with the extension
translate([-frame_x/2+frame_bevel_height/2, 0, 0]) cube([frame_bevel_height, frame_y, frame_z], center=true);
}
translate([-frame_x/2+frame_bevel_height*2, 0, 0]) rotate([0, -90, 0]) side_frame_piece_extension();
}
extended_bottom_left_or_right_frame_piece();

View File

@@ -37,6 +37,10 @@ frame_x = 233;
frame_y = 208;
frame_z = 57;
// degree to which the extended frame pieces stick out from the end of the frame
frame_extension_x = 25;
frame_extension_y = 25;
// this sinks the bottom and top of the frame inward a bit, and is used to math out two shapes
// when creating the frame box / overhang panel
frame_bevel_height = 2;