Compare commits

...

6 Commits
v4.7.0 ... main

Author SHA1 Message Date
5675921875
changelog for v4.7.1
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-28 08:27:02 -05:00
d70ccf6491
fix an issue with decorative plate sizing
I was taking a hull of the whole button negative shape in many places,
rather than a hull of the sliced shape, which meant the amount of
decorative plate beyond the button holes varied depending on the exact
positioning of how it was sliced. this was brittle in general, but
more importantly made many plates too big when I cleaned up some code to
remove an override that I thought was irrelevant --- it was actually
affecting the overall geometry outside of the slice

Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-28 08:20:07 -05:00
432e6e74d5
put everything in docs/ in the build, in order to include images
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-26 16:32:30 -05:00
1e64f59134
minor README wording tweak
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-26 16:11:57 -05:00
a4f2650f00
include a v4.7 photo and add it to the README
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-26 15:56:46 -05:00
c9a74ebb18
build two zip files for printables uploading
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2025-03-26 14:39:49 -05:00
17 changed files with 66 additions and 41 deletions

View File

@ -2,6 +2,20 @@
Included is a summary of changes to the project, by version. Details can be found in the commit history.
## v4.7.1
### Fixes
* Hull-based decorative plates were accidentally grown in v4.7.0 due to ye olde refactoring. They are back to the
dimensions they should be (give or take) because there was an underlying bug in how they were geometried pre-v4.7.1.
* The docs/ directory in the build now includes the images referred to, especially in the README.
### Miscellaneous
* Some README tweaks, including another demonstrative photo.
* The build creates both a ZIP of everything, including docs, for humans to download, and also a ZIP of *just* the STLs,
to ease uploading to Printables.
## v4.7.0
### Features

View File

@ -3,11 +3,11 @@ all:
mkdir -p ./build/docs
cp ./README.md ./build/README.md
cp ./docs/README-objects.md ./build/README-objects.md
cp ./docs/assembly-and-tips.md ./build/docs/assembly-and-tips.md
cp ./docs/printing-and-materials.md ./build/docs/printing-and-materials.md
cp ./docs/* ./build/docs/
cp ./LICENSE ./build/LICENSE
cp ./CHANGELOG.md ./build/CHANGELOG.md
pushd ./build; zip ./buildable-stick-system-`git describe --dirty`-stls.zip . -r; popd
pushd ./build; zip ./buildable-stick-system-`git describe --dirty`-stls-and-docs.zip . -r; popd
pushd ./build; zip ./buildable-stick-system-`git describe --dirty`-stls.zip extras frames misc panels -r; popd
clean:
rm -rf ./build

View File

@ -1,6 +1,6 @@
# The Buildable Stick System
Files for 3D printing an arcade stick.
Files for 3D printing and building an arcade stick enclosure.
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,
@ -195,3 +195,9 @@ like the below should suffice in either electronic or printed form:
> This arcade stick is part of the Buildable Stick System, version X.Y.Z; the source code to this program is available
> under the terms of the GNU General Public License, at [LINK].
## Gallery
More photos.
![A photo of three completed sticks](docs/finished-v4.7-x3.jpg)

View File

@ -31,7 +31,6 @@ color(frame_top_bottom_color) translate([frame_x/2-4, 0, -2.5]) rotate([180, 180
color(bottom_panel_color) translate([-panel_x/2, 0, -5-frame_z/2+5]) panel();
color(bottom_panel_color) translate([panel_x/2, 0, -5-frame_z/2+5]) panel();
/* color(top_deco_color) translate([0, 0, 3+frame_z/2-4]) dir_arc_plus_w_30mm_and_sega_2p_nine_decorative_plate_of_plates(); */
color(top_deco_color) translate([0, 0, 3+frame_z/2-panel_z]) dir_arc_plus_w_30mm_and_sega_2p_nine_decorative_plate();
color(top_deco_color) translate([-170, 20, 3+frame_z/2-panel_z]) lsx_nobi_dustwasher();
color(top_deco_color) translate([panel_x-24, 30, 3+frame_z/2-panel_z]) button_24mm_decorative_plate();

BIN
docs/finished-v4.7-x3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 KiB

View File

@ -10,11 +10,13 @@ include <components.scad>
module aux_control_three_button_tight_cluster_decorative_plate() {
difference() {
// get a 2mm slice of the bigger button cylinders
translate([0, 0, -25]) hull() aux_control_three_button_tight_cluster();
// keep a thin slice
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);
hull() difference() {
// get a 2mm slice of the decorative button cylinders
translate([0, 0, -50]) aux_control_three_button_tight_cluster();
// keep a thin slice
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);
}
// cut out the normal holes
translate([0, 0, -1]) aux_control_three_button_tight_cluster();
}

View File

@ -9,8 +9,8 @@ include <components.scad>
module button_24mm_decorative_plate() {
difference() {
// get a 2mm slice of the bigger button cylinders
translate([0, 0, -55]) button_24mm_hole();
// get a 2mm slice of the decorative button cylinders
translate([0, 0, -50]) button_24mm_hole();
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);
// cut out the normal holes

View File

@ -8,8 +8,8 @@ include <components.scad>
module dir_arc_plus_w_24mm_8_button_decorative_plate() {
difference() {
// get a 2mm slice of the bigger button cylinders
translate([0, 0, -55]) dir_arc_plus_w_24mm_8_button();
// get a 2mm slice of the decorative button cylinders
translate([0, 0, -50]) dir_arc_plus_w_24mm_8_button();
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);
// cut out the normal holes

View File

@ -12,7 +12,7 @@ module dir_arc_plus_w_30mm_and_sega_2p_nine_decorative_superplate() {
difference() {
union() {
hull() difference() {
// get a 2mm slice of the bigger button cylinders
// get a 2mm slice of the decorative button cylinders
union() {
translate([-panel_x/2, 0, -50]) dir_arc_w_30mm();
translate([panel_x/2, 0, -50]) sega_2p_nine();

View File

@ -8,10 +8,10 @@ include <components.scad>
module dir_arc_plus_w_30mm_and_sega_2p_nine_decorative_plate() {
difference() {
// get a 2mm slice of the bigger button cylinders
// get a 2mm slice of the jumbo decorative button cylinders
union() {
translate([-panel_x/2, 0, -65]) dir_arc_w_30mm();
translate([panel_x/2, 0, -65]) sega_2p_nine();
translate([-panel_x/2, 0, -70]) dir_arc_w_30mm();
translate([panel_x/2, 0, -70]) sega_2p_nine();
}
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);

View File

@ -10,10 +10,12 @@ include <components.scad>
module dir_arc_plus_w_30mm_plate_decorative_plate() {
difference() {
// get a 2mm slice of the bigger button cylinders
translate([-panel_x/2, 0, -25]) hull() dir_arc_w_30mm();
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);
hull() difference() {
// get a 2mm slice of the decorative button cylinders
translate([-panel_x/2, 0, -50]) dir_arc_w_30mm();
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);
}
// cut out the normal holes
translate([-panel_x/2, 0, -1]) dir_arc_w_30mm();
}

View File

@ -8,8 +8,8 @@ include <components.scad>
module dir_arc_plus_w_30mm_decorative_plate() {
difference() {
// get a 2mm slice of the bigger button cylinders
translate([0, 0, -55]) dir_arc_w_30mm();
// get a 2mm slice of the decorative button cylinders
translate([0, 0, -50]) dir_arc_w_30mm();
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);
// cut out the normal holes

View File

@ -8,8 +8,8 @@ include <components.scad>
module sega_2p_6_button_decorative_plate() {
difference() {
// get a 2mm slice of the bigger button cylinders
translate([0, 0, -55]) sega_2p_6_button();
// get a 2mm slice of the decorative button cylinders
translate([0, 0, -50]) sega_2p_6_button();
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);
// cut out the normal holes

View File

@ -10,10 +10,12 @@ include <components.scad>
module sega_2p_eleven_plate_decorative_plate() {
difference() {
// get a 2mm slice of the bigger button cylinders
translate([panel_x/2, 0, -25]) hull() sega_2p_eleven();
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);
hull() difference() {
// get a 2mm slice of the decorative button cylinders
translate([panel_x/2, 0, -50]) sega_2p_eleven();
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);
}
// cut out the normal holes
translate([panel_x/2, 0, -1]) sega_2p_eleven();
}

View File

@ -8,17 +8,17 @@ include <parameters.scad>
decorative_radius_scale = 1.5;
include <components.scad>
module sega_2p_nine_decorative_plate_of_plates() {
module sega_2p_nine_decorative_plate() {
difference() {
// get a 2mm slice of the bigger button cylinders
union() {
translate([panel_x/2, 0, -25]) hull() sega_2p_nine();
hull() difference() {
// get a 2mm slice of the decorative button cylinders
translate([panel_x/2, 0, -50]) sega_2p_nine();
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
translate([panel_x/2, 0, -1]) sega_2p_nine();
}
}
sega_2p_nine_decorative_plate_of_plates();
sega_2p_nine_decorative_plate();

View File

@ -8,8 +8,8 @@ include <components.scad>
module sega_2p_nine_decorative_plate() {
difference() {
// get a 2mm slice of the bigger button cylinders
translate([0, 0, -55]) sega_2p_nine();
// get a 2mm slice of the decorative button cylinders
translate([0, 0, -50]) sega_2p_nine();
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);
// cut out the normal holes

View File

@ -9,8 +9,8 @@ include <components.scad>
module sega_2p_decorative_plate() {
difference() {
// get a 2mm slice of the bigger button cylinders
translate([0, 0, -55]) sega_2p();
// get a 2mm slice of the decorative button cylinders
translate([0, 0, -50]) sega_2p();
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);
// cut out the normal holes