Skip to content

Fix #84 inward overhangs, #69 wall/infill overlap, #88 locale abort; generator cleanup + docs rewrite - #92

Open
dennisklappe wants to merge 5 commits into
mainfrom
review-cleanup-issues
Open

Fix #84 inward overhangs, #69 wall/infill overlap, #88 locale abort; generator cleanup + docs rewrite#92
dennisklappe wants to merge 5 commits into
mainfrom
review-cleanup-issues

Conversation

@dennisklappe

Copy link
Copy Markdown
Owner

Fixes

#84: inward-growing overhangs produced no waves

An overhang anchored on all sides with a thin supported band (inward lip on a phone-case rim) generated no wave seeds: inset_anchors came up empty because the seed inset margin (anchors_size) swallowed the whole band, and the region was silently dropped. Seed anchoring now falls back to the un-inset anchors in that case.

Verified on FeNi64a's Pixel10a-case03.3mf: the lip layer went from 0 to 10 wave regions.

#69: walls and solid infill printed through the wave region

The wave's seeds sit up to ~(wall_loops+1) line spacings inside the supported region, but walls/fill were only cleared within 1.5 perimeter spacings of the geometric overhang. Whenever an infill strip exists between the walls (5 walls on a thin part, 0.2 mm nozzle) the surviving inner walls and solid infill ran through the wave rings. The wall clip region and fill carve now also include the area the wave actually painted.

Measured on Bratwurst04's 3MF (plate 3, wave layer z=8.68): inner-wall overlap 292 mm → 0, solid-infill overlap 562 mm → 0; remaining ~10 mm is the intended outer-wall bond. Before/after of the wave layer:

before after
walls + solid infill through the wave band clean band, one preserved outer wall

#88: AppImage exits when the requested locale is not generated

On minimal Debian/Ubuntu (C.UTF-8 only), every named locale failed wxLocale::IsAvailable and first launch died with "Switching language failed". Initial startup now falls back to wxLANGUAGE_DEFAULT (the C runtime locale), keeping the translation dictionary. Also fixes the no-op message + ... (missing +=).

Cleanup

  • Collapsed the single-implementation IGenerator/AndersonsGenerator layer into WaveOverhangs::generate() and removed the always-zero additional_shell_count plus its unreachable shell-perimeter code. No behavior change.
  • Rewrote docs/WAVE_OVERHANG_SETTINGS.md: all 37 keys documented (was ~19), structure follows the GUI page, stale "save-only" labels removed, G-code marker section matches what the code actually emits, flow default corrected to 0.15.
  • Flagged wave_overhang_seam_mode and wave_overhang_spacing_mode as inert (saved + echoed in header, never read by the generator) in doc and tooltips.

Testing

…wer than the inset margin

Overhang regions anchored on all sides with a thin supported band (an
inward lip on a thin-walled ring, e.g. a phone-case rim) generated no
wave seeds: inset_anchors = anchors - expand(overhangs, anchors_size)
came up empty because anchors_size swallowed the entire band, so the
region was silently dropped and the lip printed in mid-air.

Fall back to the un-inset anchors for seed generation when the standard
inset leaves nothing. Verified on the issue reporter's 3MF: the lip
layer now emits 10 wave regions instead of none.

Fixes #84
…hor band

The wave seeds sit up to anchors_size (~(wall_loops+1) line spacings)
inside the supported region and the rings propagate outward from there,
but walls and fill were only cleared within 1.5 perimeter spacings of
the geometric overhang zone. On profiles where an infill strip exists
between the walls (many walls on a thin part, or small nozzles), the
surviving inner walls and solid infill ran straight through the wave
rings, over-extruding badly.

Union the wall clip region and the fill carve with the area the wave
actually painted (filled_area; the fill carve expanded by half a wave
line width so fill stops at the physical extrusion edge). The geometric
zone still handles the sharp convex corners filled_area rounds off.

Measured on the reporter's 0.2 mm nozzle 3MF, wave layer z=8.68:
inner-wall overlap 292 mm -> 0 mm, solid-infill overlap 562 mm -> 0 mm;
the remaining ~10 mm is the intended outer-wall bond overlap.

Fixes #69
…tartup

On distros that ship only C.UTF-8 (minimal Debian/Ubuntu installs),
every named locale in load_language()'s fallback chain fails
wxLocale::IsAvailable(), so first launch showed 'Switching language
failed' and closed - a hard dead end for the AppImage.

When no named locale is usable at initial startup, fall back to
wxLANGUAGE_DEFAULT (setlocale(LC_ALL, "")), which keeps the translation
dictionary and only takes number/date formatting from the C locale.
The error path (message + exit) remains for the case where even the C
runtime locale is unusable, and for explicit language switches.

Also fixes the no-op 'message + ...' statement (missing +=).

Fixes #88
…yer, drop dead shell code

Leftovers from the algorithm-selector removal (#75):

- IGenerator / AndersonsGenerator existed for a polymorphic algorithm
  choice that no longer exists (one implementation, one call site, and
  the virtual name() was never called). The interface, wrapper files,
  and min-length filter are folded into WaveOverhangs::generate(),
  which now takes CommonParams directly.
- additional_shell_count was hardcoded to 0 at the only call site, so
  the six shell branches and append_shell_perimeters() were unreachable.
  Removed.

No behavior change.
docs/WAVE_OVERHANG_SETTINGS.md documented ~19 of the 37 wave config
keys and had drifted from the code:

- Restructured to follow the GUI page (General / Detection / Pattern /
  Corner reinforcement / Motion / Cooling / Floor layers / Debug) and
  documented every key, including the corner taper, aux fan, nozzle
  temp override, dwell times, and the whole Hilbert floor group.
- Removed the stale 'save-only' labels on travel/fan speed that
  contradicted the Known-limitations table in the same file (both are
  fully plumbed).
- Corrected the G-code marker section: WAVE_OVERHANG_BUILD carries only
  the fork and base versions (the old documented fields were dropped
  deliberately in f6a901d), and WAVE_OVERHANG_CONFIG gained 14 fields
  the doc never listed while losing width=.
- Fixed the flow default (0.15, not 0.16) in ALGORITHMS.md and the
  settings doc, and updated the source pointers.
- Flagged wave_overhang_seam_mode and wave_overhang_spacing_mode as
  inert in the doc and their tooltips: both are saved and echoed in the
  header, but the generator never reads them.
- CHANGELOG entries for the #69 / #84 / #88 fixes and the generator
  cleanup.
@github-actions

Copy link
Copy Markdown

Test Results

0 tests  ±0   0 ✅ ±0   0s ⏱️ ±0s
1 suites ±0   0 💤 ±0 
1 files   ±0   0 ❌ ±0 

Results for commit d714264. ± Comparison against base commit f6a901d.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant