Skip to content

Commit 7b97faf

Browse files
authored
Stacked printing (#37)
* stacked prototype * Progress
1 parent b015a65 commit 7b97faf

9 files changed

Lines changed: 233 additions & 52 deletions

README.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,12 @@ For inserting magnets, check out [the jig](#jig).
8282
- [Shifting the grid](#shifting-the-grid)
8383
- [Adding empty space](#adding-empty-space)
8484
- [Squeezing in extra cells](#squeezing-in-extra-cells)
85+
- [Top Slice](#top-slice)
86+
- [Stacked Print](#stacked-print)
87+
- [Segment Gap](#segment-gap)
88+
- [Duplicates](#duplicates)
89+
- [Flipping](#flipping)
90+
- [Top Slice](#top-slice-1)
8591
- [Cell override](#cell-override)
8692
- [Normal cell](#normal-cell)
8793
- [Solid](#solid)
@@ -709,6 +715,57 @@ If your plate is slightly too large for where you want to put it, but you don't
709715

710716
If you do this, you may of course have trouble fitting bins into the empty space.
711717

718+
## Top Slice
719+
720+
Using the `top_slice` option, you can cut off a bit of the top of the baseplate:
721+
722+
<!-- openscad -o docs/images/top-slice.png --camera=0,0,0,40,0,20,130 -D plate_size='[84, 42]' -D top_slice=0.5 -->
723+
<img src="docs/images/top-slice.png" alt="Top Slice" />
724+
725+
This can be useful when the baseplate is printed upside down, to increase contact area with the print bed.
726+
727+
## Stacked Print
728+
729+
In stacked print mode, segments are placed above each other with a slight gap in between. With the right print settings, this can allow you to print all the segments at once.
730+
731+
> [!WARNING]
732+
> For very basic plates with no padding or filler cells stacked printing works well, but many features will result in overhangs that may be difficult to print.
733+
734+
<!-- openscad -o docs/images/stacked-print.png --camera=42,42,0,40,0,20,200 -D plate_size='[84, 126]' -D bed_size='[100,100]' -D stacked_print=true -->
735+
<img src="docs/images/stacked-print.png" alt="Stacked print" />
736+
737+
### Segment Gap
738+
739+
Segments are placed on top of each other with a slight gap. The base of each segment is placed at a multiple of `stacked_print_layer_height`. The gap is at least `stacked_print_min_gap` high, but may be slightly larger to reach the next print layer.
740+
741+
> [!NOTE]
742+
> The layer height has a big impact on print quality. A gap that is too small may make the segments inseperable, while a gap that is too large easily leads to print failures due to unsupported surfaces. A layer height of 0.2 with the default gap works in my testing.
743+
744+
The default `stacked_print_min_gap` is 0.5. That means that the gap between segments will be 0.5 to 1.5 layers:
745+
746+
<!-- openscad -o docs/images/stacked-print-gap-normal.png --camera=21,21,0,90,0,0,70 -D plate_size='[42, 42]' -D stacked_print=true -D stacked_print_duplicates=2 -->
747+
<img src="docs/images/stacked-print-gap-normal.png" alt="Slight gap between segments" />
748+
749+
Here's an example with an exaggerated `stacked_print_min_gap` of 8 layers:
750+
751+
<!-- openscad -o docs/images/stacked-print-gap-exaggerated.png --camera=21,21,0,90,0,0,70 -D plate_size='[42, 42]' -D stacked_print=true -D stacked_print_duplicates=2 -D stacked_print_min_gap=8 -->
752+
<img src="docs/images/stacked-print-gap-exaggerated.png" alt="Slight gap between segments" />
753+
754+
### Duplicates
755+
756+
If you need multiple of the same baseplate, you can use the `stacked_print_duplicates` option to repeat each segment multiple times:
757+
758+
<!-- openscad -o docs/images/stacked-print-duplicate.png --camera=42,42,0,40,0,20,200 -D plate_size='[84, 126]' -D bed_size='[100,100]' -D stacked_print=true -D stacked_print_duplicates=3 -->
759+
<img src="docs/images/stacked-print-duplicate.png" alt="Duplicate stacked print" />
760+
761+
### Flipping
762+
763+
In order to reduce overhangs, segments are "flipped" and print on their heads. The bottom segment is not flipped by default. You can control this flipping behavior using the `stacked_print_flip` and `stacked_print_flip_first` options. Both options can be set to either not flip, flip east-to-west (rotate 180° around y axis), or flip north-to-south (rotate 180° around x axis).
764+
765+
### Top Slice
766+
767+
Enabling stacked print automatically _adds_ to the [top slice](#top-slice) to increase contact area. The value that is added is configurable through `stacked_print_slice`.
768+
712769
## Cell override
713770

714771
For really weird use cases, you can override the content of individual cells using the `cell_override` option. Due to openscad limitations, this option is a string. Each character corresponds to a particular override style. Cells are counted from west to east and then from south to north: For a 2x2 grid, the first character customizes the lower left (SW) cell, the second character the lower right (SE) cell, the third the upper left (NW) cell, and the last character the upper right (NE) cell.
101 KB
Loading
8.82 KB
Loading
8.83 KB
Loading

docs/images/stacked-print.png

68.4 KB
Loading

docs/images/top-slice.png

62.2 KB
Loading

editor.toml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,31 @@ help-link = "https://github.com/yawkat/GridFlock/blob/main/README.md#horizontal"
232232
[model.param-metadata.x_column_count_first]
233233
help-link = "https://github.com/yawkat/GridFlock/blob/main/README.md#vertical"
234234

235+
[model.tab-metadata."Stacked Print"]
236+
help-link = "https://github.com/yawkat/GridFlock/blob/main/README.md#stacked-print"
237+
control-boolean = "stacked_print"
238+
description-collapsible-html = "Place generated segments on top of each other for stacked printing. WARNING: Incompatible with many plate features, may require support structures. YMMV."
239+
[model.param-metadata.stacked_print]
240+
display-condition = {fixed = false}
241+
[model.param-metadata.stacked_print_layer_height]
242+
display-condition = {js = "stacked_print"}
243+
help-link = "https://github.com/yawkat/GridFlock/blob/main/README.md#segment-gap"
244+
[model.param-metadata.stacked_print_min_gap]
245+
display-condition = {js = "stacked_print"}
246+
help-link = "https://github.com/yawkat/GridFlock/blob/main/README.md#segment-gap"
247+
[model.param-metadata.stacked_print_duplicates]
248+
display-condition = {js = "stacked_print"}
249+
help-link = "https://github.com/yawkat/GridFlock/blob/main/README.md#duplicates"
250+
[model.param-metadata.stacked_print_flip_first]
251+
display-condition = {js = "stacked_print"}
252+
help-link = "https://github.com/yawkat/GridFlock/blob/main/README.md#flipping"
253+
[model.param-metadata.stacked_print_flip]
254+
display-condition = {js = "stacked_print"}
255+
help-link = "https://github.com/yawkat/GridFlock/blob/main/README.md#flipping"
256+
[model.param-metadata.stacked_print_slice]
257+
display-condition = {js = "stacked_print"}
258+
help-link = "https://github.com/yawkat/GridFlock/blob/main/README.md#top-slice-1"
259+
235260
[model.tab-metadata."Advanced"]
236261
collapsed = true
237262
[model.param-metadata.plate_corner_radius]
@@ -240,4 +265,6 @@ help-link = "https://github.com/yawkat/GridFlock/blob/main/README.md#corner-radi
240265
help-link = "https://github.com/yawkat/GridFlock/blob/main/README.md#edge-adjustment"
241266
[model.param-metadata.cell_override]
242267
help-link = "https://github.com/yawkat/GridFlock/blob/main/README.md#cell-override"
268+
[model.param-metadata.top_slice]
269+
help-link = "https://github.com/yawkat/GridFlock/blob/main/README.md#top-slice"
243270
[model.param-metadata.test_pattern]

0 commit comments

Comments
 (0)