solidcore

Units / boolean

boolean.merge_p5 partial

Layer
55
Upstream lines
475
Functions
1
Rust module
boolean::merge::p5

Source: crates/solidcore/src/boolean/merge/p5.rs

Upstream: source/SMLib/src/SmMerge.cpp

Notes

PARTIAL (PR #161): 140 cases, 108 bit-identical passes, zero failures, 32 deferred on query.brep (SmBrep::Point3DClassify); no absolute floors. ProcessWiresAndShellVertices ported with explicit operands, caller-owned marks and shared mutable mate maps; real SmMerge/Relate oracle on native-order raw graphs, all 11 operations, reversed/shared marks, mapped face edges, closed/sub-domain/tiny/huge wires, isolated vertices, and solid box fixtures. Deletion and edge-copy adapters remain Unported in topology.brep_p4 and boolean.merge_p2; vertex copies delegate to boolean.merge_p1; no attached Brep cache yet. No incoming UNPORTED back-edges. Known UB-1 part-container inputs rejected before C++; guard regression included. Review regressions: unmated marked wires pass for the seven non-keep operations; null keep entries excluded only for Union/Intersection/Merge/PartialMerge; nonidentity mates preserve order; both runners reject duplicate Relate targets; generated operands, marks and mate permutations vary independently. Mutable bidirectional relation state is shared with the copy adapter. 1 fns; largest: SmMerge::ProcessWiresAndShellVertices; unit-SCC #22 (220 units); 105 upstream test entry points reach this unit PR #163 wires MergeVertex to boolean.merge_p1, shares mutable topology_intersector::p1::Relations with both operand directions, and passes the notification store/context. Newly created mates wait on full intersector Relate; classification remains the first deferred dependency in existing cases. TOUCHED by boolean.topology_intersector_p1 (PR #146): process_wires_and_shell_vertices takes other: &mut Brep (merge_vertex -> relate_vertices raises both vertex tolerances; upstream mutates its non-const m_pOther member); runner and tests pass it mutably.

Difftest

Cases
140
Passed
108
Deferred
32
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Unported unitDeferred cases
query.brep claimed32

Report JSON (per-case results)

Dependencies

Depends on: boolean.merge_p1 partial boolean.merge_p2 todo boolean.topology_intersector_p1 partial geom.object partial intersect.point_class partial topology.edge partial

Soft dependencies: curve.curve_p2 green geom.a_object partial geom.extent1d green geom.tol green geom.vector3d green query.brep claimed topology.brep_cache partial topology.brep_p1 claimed topology.brep_p4 claimed topology.edgeuse_p1 partial topology.face_p2 partial topology.shell partial topology.topology green topology.topology_traverser partial topology.vertex partial

Dependents: boolean.merge_p3 todo boolean.merge_p4 todo

Soft dependents: none

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmMerge::ProcessWiresAndShellVerticesSmMerge.cpp:7239475[process_wires_and_shell_vertices]
Module file-header table (2 rows)
RustUpstream
[process_wires_and_shell_vertices]SmMerge::ProcessWiresAndShellVertices
[Relations]shared bidirectional mate lookups from m_vTI

Upstream tests reaching this unit

prog_test:my_test_bbu, SM_API_test:TestSmMaterialCensus, SM_API_test:TestSmPiecewiseMerge, SM_API_test:TestSmBooleanLists, SM_API_test:TestKernelMergeBrepsInvalidInput, SM_API_test:TestApiMergeBrepsInvalidOperation