Commit Graph

6 Commits

Author SHA1 Message Date
Brett Lawson 7d8f280afb Merge remote-tracking branch 'origin/main' into fix/curve-sweep-from-faces-box
# Conflicts:
#	harness/cpp/shim/sweep_api_brep.cpp
2026-10-30 13:06:45 +01:00
Brett Lawson 88d7f03e72 docs(sweep): curve sweep from faces caps only with cap_ends; box-face difftest op
create_curve_sweep_from_faces sweeps only the faces' edge curves, so a box
face swept along a line with default options (bCapEndsArg false upstream)
is the open 4-face tube of volume 0, as the C++ reference gives. Document
that cap_ends is needed for the 6-face prism.

Add sweep.api_brep fixture op from_box_face (shim op 12): one face of an
SmApiCreateBox B-rep through SmApiCreateCurveSweepFromFaces, compared by
counts, face lists and SmApiBrepComputeVolume. 22 fixture cases (every
face, NULL/uncapped/capped options, oblique and curved paths,
translational, tiny offset box) agree with C++ exactly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXj2sJf943y2dDF36Vy
2026-10-30 10:56:06 +01:00
Brett Lawson eeb06212a5 feat: B-rep attributes through the sweeps (#1462 P6)
PrimitiveModel keeps one attribute store for all its B-reps, keyed per
B-rep, and every edit (single and two-B-rep edits, the HCR scene copy,
merge stages, the sweep stitch, RemoveFaces / RemoveAllTopology) renames
the touched B-reps' lists in place to the identities it notifies, so the
non-manifold sweeps carry a B-rep's attributes as upstream's
notifications do, reference sharing included. SM_AI_TAG tags of a
tagging sweep live there too and stay on the result. SweepStore moves
an inserted or adopted body's attributes into its shared store and
hands a taken body its lists back.

Difftest: attributed non-manifold sweeps in boolean.api_brep and
attributed curve sweeps from faces / edges in sweep.api_brep; the shims
count only topology users of an attribute (the port keeps none on
geometry). Regression test: tests/issue_1462_sweep_attributes.rs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXj2sJf943y2dDF36Vy
2026-10-30 05:18:21 +01:00
Alex Lytvynenko d267d7889d difftest: observe linear-sweep geometry and solid properties
Keep legacy outputs and generator draws unchanged. Add default-off
linear observations and targeted geometry/query sensitivity controls.
Retain draft status pending full native build and regression gates.

Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
2026-10-26 18:22:47 +01:00
jijinbei 875291c4d9 shim: share identical C++ helpers through sc_sm.h, sc_nlib.h, sc_gw.h
125 shims carried private copies of the same small helpers (put_vec, st,
nl_status, Rd, dump_crv, read_nurb, ...). Move the most common, byte-identical
form of each into three headers grouped by the upstream API they need, and have
those shims pull them in with `using sc::<name>;`. Shims with a different
variant keep their own copy; files touched by open PRs are left alone.
`the_context()` stays per shim (its function-local SmContext must not be shared).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FBLgPenT24P1dunqnZR1Dj
2026-10-17 06:43:03 +09:00
bherbruck ff78ae1cea sweep.api_brep: port SmApiBrep sweep entry points (validation + copies; kernel deferred)
Ports the 12 SmApiBrep.cpp functions of the unit: input validation and the
consuming-sweep curve copies match upstream; the SmPrimitiveCreation calls
are UNPORTED stubs (primitive.primitive_creation_p2/p3). Co-ports
SmSweepOptions as primitive::primitive_creation::SweepOptions. Adds the C++
shim, FFI wrapper, difftest runner and upstream-test fixtures, and records
UB-107, UB-108 and HANG-13 found by the C++ reference run.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
2026-10-15 09:35:00 -04:00