Both sides added B-rep block kind 4 to the shared edge-use graph builder
(sc_edgeuse_graph.h): main's MakeShellVertex points keep 4, this PR's
SmCrvOnSurf face becomes kind 6 (C++ builder, FFI validator, difftest
encoder; fixtures name the kind, not the number). The FFI validator's
face_block reports whether the base is a B-spline surface for kind 6.
Test and query.loop runner records fill the new Region / Shell /
Faceuse fields with their defaults. boolean.merge_p1: 177 pass, 71
deferred.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sYGPj2viBkxDs75JDycfZ
Conflicts resolved by hand (Vertex::default from topology.vertex, notes from
main, both findings sections). Integration with main:
- record constructors and difftest importers fill the new Region/Shell/Faceuse
fields; the shared topology.vertexuse-style importers now read the exported
region shell lists, shell types and face-use lists, and set wire/vertex
shell heads (set_shell_heads)
- wired UNPORTED(topology.shell) stubs: SmRegion::IsVoid in mass::integrator,
SmShell::TransferChildrenTo / Remove+PostInsert in topology_traverser
(shell::move_faceuse)
- the shell now calls its owners on main: topology::edge::{vertices,
edgeuses, is_wire}, topology::vertex::edges and
topology_traverser::is_inner_shell (Shell::is_inner_shell and
order_region_shells take &mut Kernel)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Preserve both coport notes and the shell snapshot consumed by the importer. Initialize the new vertex-use list in the existing edge-use test fixture.
Co-Authored-By: OpenAI Codex <noreply@openai.com>
Ports the SmLoop and SmLoopuse members owned by the unit into
topology::loopuse (member walks, closure and connectivity predicates,
FlipLoopOrientation, CollectEdgeuses, GetUVCornerBoundaries,
IsMissingSeamAtVertices), adds Loopuse::orientation, wires the co-ports
of topology.edgeuse_p1, topology.face_p2, query.loop and the
GetOrientation stub of topology.vertexuse, and adds the shim, FFI
binding, difftest runner and fixtures. The shared B-rep export carries
each loop use's orientation.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
Move shell fixture closure and snapshots into the maintainer shared edge-use graph header. Preserve face UV domains, tolerances and geometry types alongside shell extension version 3. Keep the operation-specific plane-domain guard and the new edgeuse_p2 validation API.
Co-Authored-By: OpenAI Codex <noreply@openai.com>
Main (topology.edgeuse_p2/vertexuse) extended the topology.edgeuse_p1 export
with each face's UV domain, tolerance and surface type and the B-rep tolerance.
The query.edge shim's copy of that exporter now emits them too, so the shared
importer reads it again (difftest: 1368 cases, 992 pass, 376 deferred, 0 failed,
unchanged).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm
Build on PR89 rather than duplicate its coport. Share version3 native shell snapshots so the dependency runner imports actual state. All 571 shell, 1368 query-edge and 2722 edge-use cases rerun with zero failures; every compared case is sensitive. Unit stays todo pending remaining coverage/backedges/final gates.
Co-Authored-By: OpenAI Codex <noreply@openai.com>
Ports SmEdge::CalculateBoundingBox, CalculateTightBoundingBox, ClosestPoint,
RadialSectorClassify and RadialSectorOfCurveClassify into query::edge, with
SmEdge::GetVertices / GetFaces co-ported from topology.edge. Calls into
SmEdgeuse::EvaluateBinormalStepOff (topology.edgeuse_p2) and
SmCurve::CalculateTightBoundingBox (curve.curve_p9) are UNPORTED stubs.
Adds the shim (real SmBrep from .smb files, B-spline faces and wire edges
over SmBSplineCurve/SmHermiteCurve/SmLine/SmEllipse/SmCircle, with edge
edits), the ffi wrapper, the difftest runner (importing the B-rep with
topology.edgeuse_p1's importer, now pub(crate)) and fixtures from the
upstream rectangle/polygon tests, the upstream .smb files and edge cases.
difftest: PARTIAL query.edge cases=1368 passed=992 failed=0 deferred=376
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY8UpXKuMci15rAWGXsbsm