Outer Wall Bracing Contact Points (Issue #11)#21
Merged
Conversation
Add Helix.BracingContactPoints (default 60, range 4..500). It means "number of times the bracing touches the outer wall" — the count you can verify by eye in the viewport. The generator samples 2x this many points internally so the alternating outer/inner pattern closes cleanly regardless of parity (no even-only constraint on the user-facing value). Bracing density is now independent of toolpath sampling density; you can sample the outer wall at 360 frames/layer for smooth motion while bracing with 30 contact points for chunky teeth (or the inverse). Stepper greys out unless Layer Slice and Outer Wall Bracing are both on. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add ClayBeadGeometry.ComputeWidth(D, H) as the single source of truth
for deposited bead width (W = D²/H, with W=D when H==D). The visualizer
now consumes it; previously inlined the formula at the elliptical-tube
build site.
Add a wallOffset parameter to ZigzagGenerator.BuildSingleContour and
apply it uniformly to both outer-contact and inner-anchor points so
the user-facing inwardDistance stays "tooth depth" (unchanged) and the
whole bracing pattern shifts inboard.
At the slice site pass wallOffset = W/2 so the bracing bead's outer
edge is tangent at the outer-wall *contour centerline* — the bracing
bead overlaps the wall bead by half a bead width ("french kiss"). The
half-overlap gives a solid structural bond instead of an edge-to-edge
tangent kiss that would leave no real contact area.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add Helix.SinusoidalBracing (default false). When checked, the outer- wall bracing follows a smooth cosine wave instead of the sharp triangle- wave zigzag — same contact-point count, gentler on robot accel/decel since the path never reverses direction at a sharp corner. Math: offset(s) = wallOffset + (A/2)·(1 − cos(2π·N·s/L)) where N is the contact-point count, A is the user-prompted inward distance, s is arclength along the contour, L is total contour length. Cosine peaks (cos=+1 → offset=wallOffset) are the wall kisses; troughs (cos=−1 → offset=wallOffset+A) are the inner anchors. One period per contact point, internally sampled at 12 points per period. Reuses the same french-kiss baseline (wallOffset = W/2) and seam + winding handling as BuildSingleContour so wave peaks stack across layers instead of drifting. Hairpin removal is skipped — smooth path has no sharp folds to clean up. Checkbox greyed out unless Layer Slice + Bracing are both on, same gating as Bracing contact points. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- README "Toolpath modes" section: mention sinusoidal pattern toggle, BracingContactPoints decoupling, and the half-bead "french kiss" overlap with the outer-wall bead. - README "Rhino layers" table: Bracing Toolpath row notes both zigzag and sinusoidal output. - README Plugin-structure tree: ZigzagGenerator description updated to list both BuildSingleContour and BuildSinusoidalSingleContour, plus the half-bead kiss offset. - README "Using the plugin" Settings list: add Bracing contact points and Sinusoidal bracing. - ARCHITECTURE Models/ tree: add ClayBeadGeometry.cs entry. - ARCHITECTURE Zigzag/ tree: name the two generators. - ARCHITECTURE HelixParameters class diagram: add BracingContactPoints and SinusoidalBracing fields. CHANGELOG + wiki updates handled separately (CHANGELOG bundled with next alpha-tag prep; wiki has its own repo). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #11