Commit Graph

29 Commits

Author SHA1 Message Date
jyviko 65b02ff7ab Wave 292/509: STEP import: a refused solid comes in as a surface body of its exact faces (and 3 more)
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- fd5319a0e jyviko: docs: the kernel's move from truck to SMLib, as written up on #4012
- 4cb0d6ee9 jyviko: STEP import: a refused solid comes in as a surface body of its exact faces
- e19785620 jyviko: STEP import: a refused solid's surface body faces as the file has it
- 529fb7cf3 jyviko: Release: macOS builds on macos-15 (GitHub retires macos-14 on 2026-11-02)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-28 12:48:43 -04:00
jyviko 53f4d607e2 Wave 291/509: Tessellation: a loop corner on a side collapsed within its vertex's tolerance is a pole; a face no method plans is left out, named (and 3 more)
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 5a596dd95 jyviko: STEP import: a patch side collapsed within its vertex's tolerance is a pole of the loop
- cfee4a720 jyviko: STEP import: a solid no B-rep can be made of is shown as a mesh of the faces that read
- 5bfecd8a0 jyviko: Tessellation: a loop corner on a side collapsed within its vertex's tolerance is a pole; a face no method plans is left out, named
- 0102f95dc jyviko: Tessellation tests: rustfmt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-28 08:06:13 -04:00
jyviko 5a2e050f71 Wave 290/509: STEP and SMLib: no edge or vertex tolerance past the 1 mm SMLib takes (and 3 more)
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 0bee8c2ed jyviko: solidcraft-smlib: Brep::edge_face_distance, SMLib's own edge/face gap
- 5d6810128 jyviko: STEP and SMLib: no edge or vertex tolerance past the 1 mm SMLib takes
- 005b1e6ea jyviko: SMLib pcurves: an edge past its face's patch gets a tolerance that covers it
- f327cdb3d jyviko: solidcraft-smlib test: an edge 2.5 um past its patch keeps its interval

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-27 22:02:31 -04:00
jyviko fceb07b797 Wave 283/509: STEP import: an edge through a face's pole is split there (and 3 more)
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 0694fd4e8 jyviko: STEP import: an edge through a face's pole is split there
- 1d70ac267 jyviko: tess: a face whose boundary still crosses itself after untangling is filled leniently, not the whole body refused
- 77bd85cab jyviko: cli: snapshot --quality coarse|normal|fine|ultra meshes the bodies at that display quality
- 1404bc1f5 jyviko: STEP import: a spline face's edges are measured on their pcurves only, not by nearest point first

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-27 20:45:43 -04:00
jyviko ffb0e6650b Wave 282/509: SMLib pcurves: an end SMLib sets within the edge's tolerance is mapped onto our interval (and 3 more)
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- e2c0c0a20 jyviko: pcurve: the lift check samples its interval's end exactly
- 293d19f65 jyviko: STEP import: a vertex's tolerance covers its edges', and edge samples end exactly
- 19c4a1502 jyviko: SMLib pcurves: an end SMLib sets within the edge's tolerance is mapped onto our interval
- fc08b5f99 jyviko: bspline: a parameter a rounding past the domain's end is that end

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-27 19:08:15 -04:00
jyviko 57921d7fcd Wave 280/509: STEP import: spindle and horn tori, and a negative major radius (and 3 more)
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- dfcdefa92 jyviko: STEP import: a loop jumps at a pole to within the tolerance, as its pcurves closed it
- 7ba82d729 jyviko: STEP import: spindle and horn tori, and a negative major radius
- 3a7b51f72 jyviko: STEP import: an edge's distance from an analytic face is measured before its closed-form pcurve
- fcb162448 jyviko: brep: the geometry check reads a pcurve at its edge's parameter within the interval's rounding

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-27 16:27:16 -04:00
jyviko 40f16c36bb Wave 279/509: STEP import: an edge off its face's surface carries its gap as its tolerance (and 3 more)
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 07cb8c7cc jyviko: STEP import: an edge off its face's surface carries its gap as its tolerance
- 21c64fb24 jyviko: tess: an edge loop of fewer than three segments is split until it encloses an area
- 9da3174bb jyviko: solidcraft-smlib: a revolution goes to SMLib as its NURBS form alone
- 31b9410f5 jyviko: solidcraft-smlib: a horn torus to rounding is no ring torus

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-27 16:45:52 -04:00
jyviko 335278e3c7 Wave 266/509: Profiler: commands, feature evaluation, io; diagnostics.profile; CLI --profile (and 3 more)
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 10ea00e74 jyviko: Profiler: every SMLib C API call is a span, timed by the C API itself
- 319c0bc9f jyviko: Profiler: kernel operations and STEP/IGES import stages are spans
- 9cd655259 jyviko: Profiler: commands, feature evaluation, io; diagnostics.profile; CLI --profile
- fafd977b0 jyviko: Profiler: the Profile operations preference switches recording at run time

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-27 08:22:36 -04:00
jyviko 5a4e482e9c Wave 260/509: Formatting: rustfmt over the rebased branch (and 3 more)
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 562a5bd33 jyviko: Formatting: rustfmt over the rebased branch
- bc15221fa jyviko: The desktop app links SMLib by default
- e476aba94 jyviko: SMLib in the browser: built with wasi-sdk for wasm32-unknown-unknown
- e1ad6ec1a jyviko: SMLib links prebuilt: one build per commit, pinned by SHA-256

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-26 22:57:25 -04:00
jyviko 2425f8b453 Wave 238/509: geom: a face's box reaches its boundary's extremes, not its samples' (and 3 more)
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 903e371fa jyviko: geom: a face's box reaches its boundary's extremes, not its samples'
- cfe1b8b92 jyviko: step: a loop through its surface's pole has its seam
- 0bea4631b jyviko: kernel: IGES trim pieces that miss their meeting point are closed onto it
- 0e6681a2d jyviko: kernel: the largest fitting fillet shrinks only on a refusal as too large

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-25 21:27:27 -04:00
jyviko 06c2c6087b Wave 224/509: STEP and IGES import: SMLib makes the pcurves that have no closed form (and 3 more)
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 306c7b75b jyviko: pcurve: a rim at a steady pace on a spline face, read from the edge itself
- 28e0eea80 jyviko: pcurve: each use's closed form or none, and a kernel's trims for the rest
- 1bf206259 jyviko: STEP and IGES import: SMLib makes the pcurves that have no closed form
- 879958721 jyviko: pcurves: a flat patch's are a plane's; SMLib's sheet loops read either way round

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-23 22:22:32 -04:00
jyviko 9767f95c31 Wave 223/509: brep: meridians, revolutions and whole turns exact on their forms (and 3 more)
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 2883981a0 jyviko: brep: meridians, revolutions and whole turns exact on their forms
- 6c385c843 jyviko: sew, step: face forms from the boundary's extent; trimmed profiles exact
- fd71e6a95 jyviko: kernel: assembled faces and edges on their NURBS forms
- f6f8b28c0 jyviko: Records require NURBS forms on circles, ellipses and curved analytic faces

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-23 20:07:48 -04:00
jyviko 51f0a9df43 Wave 222/509: brep, step: the pcurve fit is gone (and 1 more)
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 819928205 jyviko: step: a swept surface's circle or ellipse profile is its NURBS form
- 6cc0401fa jyviko: brep, step: the pcurve fit is gone

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-23 18:20:36 -04:00
jyviko cf0ff5159d Wave 221/509: sew: an edge folded across a bend gets a Hermite pcurve on the bend's form (and 2 more)
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- fd873bb83 jyviko: sew: an edge folded across a bend gets a Hermite pcurve on the bend's form
- c376e8403 jyviko: step: imported faces and edges on their NURBS forms
- 69702833f jyviko: solidcraft-smlib: ellipse edges on their NURBS form, as circles are (fork 0c5868e)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-23 18:20:36 -04:00
jyviko 9a508571fd Wave 215/509: brep: an edge on a line, circle or ellipse carries the NURBS form SMLib holds it as (and 1 more)
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- b1326e48d jyviko: brep: an edge on a line, circle or ellipse carries the NURBS form SMLib holds it as
- 6adba90e2 jyviko: solidcraft-smlib: circle edges on their NURBS form, SMLib's trims kept on them (fork deec9cb)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-22 17:35:54 -04:00
jyviko bfae336ce1 Wave 207/509: brep: a face on a cylinder, cone, sphere or torus carries the NURBS form SMLib holds it as (and 2 more)
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- b6a3b31ff jyviko: brep: a face on a cylinder, cone, sphere or torus carries the NURBS form SMLib holds it as
- 2e26e0567 jyviko: solidcraft-smlib: the export reads FACE_NURBS_FORM
- 03db54a23 jyviko: solidcraft-smlib: SMLib at the merged fixes: slice, seam check, analytic revolve, draft corners, blend refusal, union of many, NURBS forms (fork 03c14ca)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-22 13:34:10 -04:00
jyviko 3557e3c563 Wave 205/509: kernel: union_all, one SMLib union of many bodies checked once, history over every operand (and 3 more)
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 2ffbbc74d jyviko: step: a cone within the file's uncertainty of its limit plane over the face is read as that plane
- 0185ccc1e jyviko: solidcraft-smlib: Brep::union_all, the union of many bodies in one SMLib call
- 0213c3dfa jyviko: kernel: union_all, one SMLib union of many bodies checked once, history over every operand
- 83d965f30 jyviko: doc: a join into one target and an intersection's tools are one union_all call

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-22 08:46:55 -04:00
jyviko f6dd5c8c2e Wave 188/509: kernel: IGES export from the record (and 2 more)
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 7d9eb68e4 jyviko: solidcraft-step: a record's layout (solids, voids, sheets) and outer loops for every writer
- ed43871f7 jyviko: kernel: IGES export from the record
- 1d4811201 jyviko: kernel: STEP import tests and docs without the deleted face splitting

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-22 07:38:43 -04:00
jyviko 33ffde4d5a Wave 186/509: solidcraft-step: write a schema 4 record as ISO 10303-42 topology (and 1 more)
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 30ddda306 jyviko: solidcraft-step: write a schema 4 record as ISO 10303-42 topology
- d59bb0084 jyviko: solidcraft-step: revolutions under axis-keeping placements; void shells as the record has them; Reader::frame

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-22 07:32:15 -04:00
jyviko 4eff79e57e Wave 112/509: solidcraft-smlib: pcurves on B-spline faces are SMLib's own UV trims (and 2 more)
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 667cd3356 jyviko: solidcraft-smlib: pcurves on B-spline faces are SMLib's own UV trims
- e57f2f2a5 jyviko: brep: a face's points search one grid of its surface, made once
- 1bc0df6d0 jyviko: doc: a join of many tools into one target unions them in a balanced tree

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-21 23:39:37 -04:00
Brennen Herbruck a90020efb4 Wave 97/509: solidcraft-step: faces around a spline closed on itself get a seam
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- a89c67adf Brennen Herbruck: solidcraft-step: faces around a spline closed on itself get a seam

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-21 12:35:19 -04:00
Brennen Herbruck 532027f7a6 Wave 93/509: docs: SMLib vs truck triage of the sweeps, threads and shell cases (and 3 more)
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 96bdbbf3b bherbruck: docs: SMLib vs truck triage of the sweeps, threads and shell cases
- 82fe0e59e Brennen Herbruck: solidcraft-smlib: Brep::imprint
- 7e208529c Brennen Herbruck: solidcraft-step: each record face names its face in the file
- 863afb5e3 Brennen Herbruck: solidcraft-smlib: an arc past a full turn goes to SMLib a turn back

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-21 11:25:39 -04:00
jyviko 7622329499 Wave 92/509: kernel: fillets and chamfers through SMLib when SOLIDCRAFT_KERNEL=smlib (and 2 more)
3 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- baae4ee19 jyviko: kernel: fillets and chamfers through SMLib when SOLIDCRAFT_KERNEL=smlib
- f73d40383 jyviko: kernel: an SMLib blend pick at a seam's end takes the sharp edge there
- 1d8299aed jyviko: kernel: an SMLib body keeps each edge's and vertex's tolerance through its record

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-21 10:45:10 -04:00
Brennen Herbruck 7808c5f286 Wave 26/509: solidcraft-step: surfaces of revolution and extrusion, offset surfaces, hyperbola and parabola edges
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- d41ae8512 Brennen Herbruck: solidcraft-step: surfaces of revolution and extrusion, offset surfaces, hyperbola and parabola edges

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-21 02:10:00 -04:00
Brennen Herbruck 39118d67a9 Wave 25/509: solidcraft-step: refuse loops across a closed spline surface's seam; conformance parts and truck volumes (and 1 more)
2 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 91e482fc8 Brennen Herbruck: solidcraft-step: refuse loops across a closed spline surface's seam; conformance parts and truck volumes
- 8f31c088f jyviko: brep: a budget of 4,000,000 items, pcurves included

Co-authored-by: jyviko <2501648+jyviko@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-21 01:55:38 -04:00
Brennen Herbruck f63a15bc68 Wave 24/509: solidcraft-step: seams for STEP faces that wind around their surface, looser pcurve fits
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 3d7e465b1 Brennen Herbruck: solidcraft-step: seams for STEP faces that wind around their surface, looser pcurve fits

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-21 01:40:05 -04:00
Brennen Herbruck b1315a3de9 Wave 23/509: solidcraft-step: STEP topology into schema 4 B-rep records
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- 54b10b9a3 Brennen Herbruck: solidcraft-step: STEP topology into schema 4 B-rep records

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-21 01:33:08 -04:00
bherbruck 517471d0d3 Wave 22/509: solidcraft-step: representation context units and uncertainty, shared with the kernel's STEP reader (and 3 more)
4 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- e0bad4161 bherbruck: solidcraft-smlib: check test on every primitive
- 7050e9cfc bherbruck: solidcraft-smlib: mass properties of every primitive against closed forms
- 4983b8872 Brennen Herbruck: kernel: the boolean runner builds every SMLib operand
- acff340a0 Brennen Herbruck: solidcraft-step: representation context units and uncertainty, shared with the kernel's STEP reader

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-21 01:23:02 -04:00
Brennen Herbruck 7f7358f918 Wave 13/509: STEP geometry as plain data: read and write ISO 10303-42 curves and surfaces without truck
1 commits, squashed; the originals stay reachable from tag archive/merge-main-develop.

- f06581ca5 Brennen Herbruck: STEP geometry as plain data: read and write ISO 10303-42 curves and surfaces without truck

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtL5M41G8Nua7HvuFPZkmJ
2026-10-20 22:21:19 -04:00