Skip to content

Cleanup follow-ups from #236 (render unification) #247

Description

@gpeairs

Consolidated follow-ups from the #236 review, most should land before the next version tag.

  • Mismatched CompoundSegment and CompoundStyle in SolidModel #244 (compound seg/sty with mismatched tags in SolidModel rendering)
  • Offset segments with compound styles render in the wrong arclength frame -- no one's supposed to be styling offset segments, but we can at least throw a hard error for offset seg + compound sty and write a comment
  • src/curvilinear.jl:257 warns and calls the removed 3-arg to_polygons(f, pathlength(f), s; ...); replace with a clear "no render method for (segment, style)" error.
  • Arc over-refinement -- use constant-curvature fast path to avoid leaving dt at the 0.01 floor whenever sqrt(8·tol/κ)/t_scale > 0.1, and/or rethink that guard
  • GeneralOffset{BSpline} discretization integrates t_to_arclength from 0 with each step. Re-evaluate after Add B-spline arclength cache #245 (arclength cache, ~15× per call); if still hot, accumulate arclength incrementally across the grid.
  • O(n²) membership scans in round_to_curvilinearpolygon: (src/curvilinear.jl:1031, :1063): i in corner_indices / i in la_indices on plain Vectors per vertex plus findfirst over curve_start_idx per line-arc corner. Pre-Unify SolidModel & GDS path rendering through a shared CurvilinearPolygon pipeline #236 GDS rounding used Set + Dict; restore that at function entry.
  • Items mentioned in Add provenance-based curve recovery #232 as pending refactor (now addressed in that PR)
  • Small duplications: _bspline_signed_curvature vs _bspline_curvature (src/render/discretization.jl:75/137 — one should call the other); pathtopolys(..., ::PeriodicStyle) pair (src/curvilinear.jl:314/325 — share a helper like the offset pair); the "Ignoring attachments" warn-and-strip body (src/curvilinear.jl:289/412/749 — one shared helper behind thin dispatch methods).
  • Dimensionless relative→absolute rounding flip for CurvilinearPolygon + Rounded(::Real) is intended but untested — add a pinning test and a CHANGELOG line stating all dimensionless relative rounding is now absolute-by-default as intended.
  • Incidentally discovered autofill bug described in this comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions