Skip to content

Feature/yapcad enhancements#34

Merged
rdevaul merged 6 commits intomainfrom
feature/yapcad-enhancements
Feb 5, 2026
Merged

Feature/yapcad enhancements#34
rdevaul merged 6 commits intomainfrom
feature/yapcad-enhancements

Conversation

@jeremymika
Copy link
Copy Markdown
Collaborator

what's new:

  • Helical Extrusion: New helical_extrude() function in yapcad.geom3d_util
    creates smooth helical/twisted extrusions using high-resolution lofting. Ideal for
    helical gears, twisted columns, and spiral features. Requires pythonocc-core.

  • Pattern Functions: New pattern generation functions for creating arrays of geometry:

    • radial_pattern() in yapcad.geom_util - Creates circular patterns of 2D geometry
    • linear_pattern() in yapcad.geom_util - Creates linear arrays of 2D geometry
    • radial_pattern_solid() in yapcad.geom3d_util - Creates circular patterns of 3D solids
    • linear_pattern_solid() in yapcad.geom3d_util - Creates linear arrays of 3D solids
    • radial_pattern_surface() in yapcad.geom3d_util - Creates circular patterns of surfaces
    • linear_pattern_surface() in yapcad.geom3d_util - Creates linear arrays of surfaces
  • OCC Helix Helper: New make_occ_helix() function creates mathematically exact
    helix curves using OpenCascade's 2D parametric curve on cylindrical surface technique.
    Used internally by helical_extrude() but also available for advanced users.

jeremymika and others added 6 commits February 4, 2026 12:51
New features:
- helical_extrude() for smooth helical gear teeth
- radial_pattern() and linear_pattern() for repeating geometry
- fillet() and chamfer() edge operations (OCC BREP)
- Adaptive cylinder resolution based on radius
- 3D text support with text3d module

Improvements:
- Better BREP shape analysis and edge selection
- Enhanced geometry utilities for pattern operations
- New DSL builtins for all features

Tests and documentation updated.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add freetype-py optional dependency for TrueType/OpenType fonts
- Implement find_system_font() for automatic font discovery on macOS/Linux/Windows
- Add glyph_to_polygons() for converting font outlines to yapCAD polygons
- Update text_solid(), text_width(), engrave_text() with font parameter
- Fall back to block font when freetype unavailable or font not found
- Default to Arial when no font specified (with block font fallback)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Add missing documentation for:
- Edge operations: fillet_all_edges, fillet_edges, chamfer_all_edges, chamfer_edges
- DSL builtins: fillet() and chamfer()
- 3D text module with TrueType font support

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add TYPE_CHECKING import for PackageManifest in packaging.py
- Fix ParseError -> ParserError typo in parser.py

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Lower max_angr from 30° to 10° in adaptive_angr_from_radius to ensure
at least 36 segments for any cylinder. This reduces geometric volume
error from ~2.5% to <1%, fixing test_conditional_with_geometry failure.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
@rdevaul rdevaul merged commit 901e706 into main Feb 5, 2026
3 checks passed
@rdevaul rdevaul deleted the feature/yapcad-enhancements branch February 5, 2026 01:43
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.

2 participants