Commit Graph

10 Commits

Author SHA1 Message Date
bherbruck d3fd7ee13f Merge origin/main into unit/topology.edgeuse_p3 (topology.shell)
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
2026-10-17 22:41:48 -04:00
Andreas 634b291772 query.edge shim: export the whole SmPlane (frame, scale, domain) as sc_edgeuse_graph.h
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 16:36:32 +02:00
Andreas 496e643e1d Merge upstream/main into topology.shell
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>
2026-10-16 15:42:57 +02:00
Andreas 44ca4f473a topology.edgeuse_p3: wire EvaluateBinormalStepOff in query.edge (gen0091/gen0261 were the shim exporting SmPlane faces as B-splines); retag the query.loop stub to its owner topology.edgeuse_p3
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 05:25:21 +02:00
lillith dd33626aa7 Merge official main into shell port and retain fixture state
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>
2026-10-15 13:18:35 +02:00
bherbruck a04e7d53a5 port: topology.loopuse (SmLoop / SmLoopuse)
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
2026-10-15 06:05:09 -04:00
lillith d0aba079fc Merge latest official main into topology.shell
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>
2026-10-15 09:00:12 +02:00
bherbruck 84318c53da query.edge shim: follow main's B-rep export layout
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
2026-10-15 02:57:42 -04:00
lillith 7e58bd7565 wire: reuse query.edge for shell bounds and vertex queries
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>
2026-10-15 07:04:11 +02:00
bherbruck 80b06d376f port: query.edge (SmEdge bounding boxes, closest point, radial sectors)
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
2026-10-14 23:32:02 -04:00