Units / topology
topology.face_p1 partial
- Layer
- 44
- Upstream lines
- 2,171
- Functions
- 14
- Rust module
topology::face::p1
Source: crates/solidcore/src/topology/face/p1.rs
Upstream: source/SMLib/src/SmFace.cpp
Notes
PARTIAL (PR #148): difftest 2312 cases (2260 built-in on the 15 pt_TestFiles B-reps (every op, UV trim curves as read and rebuilt; seam ops with 7 face-property variants on the periodic files) + 36 review crash reproducers + 16 generated), 519 pass bit-identical (max_rel_err 0), 0 failed, 0 both-errored (real passes 519), 1793 deferred (topology.face_p3 1100: SmFace::Notify of every edit, CreateUVTrimCurves; topology.face_p4 307: GetUpwardLoopuses/GetBrep/HasSeamProblem; topology.edgeuse_p3 288: NormalizedEvaluate/GetOrCreateUVTrimCurve; cpp-crash-guard:UB-137 98: seam calls the shim keeps from upstream's SplitAtSeam crash, never comparable; the guard skips ~99.5% valid MoveSeam+split calls and must be replaced when face_p4 lands); --perturb SENSITIVE 519/519. No passing case for UvDomain (with surface), Flip, SetSurface, LoopRoundTrip, RemoveUv, SwapUv, Shrink (all behind face_p3/face_p4); passes are early returns, error paths and guards. The shim normalises analytic geometry to B-splines, so MoveSeam's CopyAndAddAnalytics branch and SwapUV's conic mirrors are not compared. Seam ops take HasSeamProblem's classifications from the C++ shim (Probe op); MergeIntervals wired to intersect.curve_class_p5 (#150); IsCrossedByEdge/HasNearMisses wired to intersect.curve_class_p7 (#65). Back-edges wired: trimming_tools (FlipFaceOrientation, SplitAtSeam), edge, face_p2 points_in_face, mass.integrator (CreateOrientedTrimBoundary); not wirable yet: surface.surface_p3 RemoveUVTrimCurves of owner face (no B-rep there), proto_topology_p2 (ProtoBrep handle). Was: 14 fns; largest: SmFace::MoveSeam, SmFace::SplitAtSeam, SmFace::CreateOrientedTrimBoundary, SmFace::CalculateUVDomainFromUVTrimCurves; cycle back-edges (call into later units; stub or co-port): heal.gap(1), topology.brep_p2(1); unit-SCC #22 (220 units); 317 upstream test entry points reach this unit CalculateUVDomainFromUVTrimCurves wired into boolean.topology_intersector_p1 (PR #146).
Difftest
- Cases
- 2,312
- Passed
- 519
- Deferred
- 1,793
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
topology.face_p3 claimed | 1100 |
topology.face_p4 claimed | 307 |
topology.edgeuse_p3 claimed | 288 |
cpp-crash-guard:UB-137 ? | 98 |
Report JSON (per-case results)
Dependencies
Depends on: curve.curve_p2 green geom.extent1d green geom.extent2d green geom.extent3d green geom.object partial geom.periodic_extent1d green geom.tol green geom.vector2d green geom.vector3d green intersect.curve_class_p1 partial nurbs.b_spline_curve_p1 green surface.surface_p1 partial surface.surface_p2 partial topology.edgeuse_p1 partial topology.face_p2 partial topology.face_p3 claimed topology.face_p4 claimed topology.loopuse partial topology.vertexuse partial
Soft dependencies: curve.line green geom.axis2_placement green geom.context green geom.geom_utility_p1 green intersect.curve_class_p5 partial intersect.curve_class_p7 partial intersect.point_class partial nurbs.b_spline_curve_p2 green nurbs.b_spline_surface_n_lib_p1 green nurbs.b_spline_surface_p2 partial surface.surface_p5 green surface.surface_p7 partial topology.edge partial topology.edgeuse_p3 claimed topology.proto_topology_p1 partial topology.trimming_tools partial topology.vertex partial
Dependents: mass.integrator partial topology.brep_p3 claimed topology.brep_p4 claimed topology.brep_p9 claimed
Soft dependents: blend.fillet_executive_p1 todo blend.fillet_executive_p3 todo blend.fillet_geom_p1 claimed blend.hcr claimed boolean.topology_intersector_p1 partial boolean.topology_intersector_p2 claimed heal.heal_data_p3 partial heal.stitch_p1 claimed offset.offset_executive_p2 claimed topology.brep_p1 claimed topology.brep_p2 claimed topology.brep_p6 claimed topology.proto_topology_p2 partial
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmFace::SmFace | SmFace.cpp:69 | 12 | [crate::topology::Face::new] |
SmFace::~SmFace | SmFace.cpp:87 | 16 | [destroy] |
SmFace::CalculateUVDomainFromUVTrimCurves | SmFace.cpp:1275 | 143 | [calculate_uv_domain_from_uv_trim_curves], [UvDomainFromTrim] |
SmFace::CreateOrientedTrimBoundary | SmFace.cpp:7192 | 232 | [create_oriented_trim_boundary], [OrientedTrimBoundary] |
SmFace::FindIfRectangularTrim | SmFace.cpp:9267 | 121 | [find_if_rectangular_trim], [RectangularTrim] |
SmFace::FlipFaceOrientation | SmFace.cpp:10030 | 28 | [flip_face_orientation] |
SmFace::SetSurface | SmFace.cpp:10065 | 34 | [set_surface] |
SmFace::InsertLoop | SmFace.cpp:11270 | 13 | [insert_loop] |
SmFace::RemoveLoop | SmFace.cpp:11935 | 21 | [remove_loop] |
SmFace::RemoveUVTrimCurves | SmFace.cpp:12912 | 44 | [remove_uv_trim_curves] |
SmFace::SwapUV | SmFace.cpp:13842 | 109 | [swap_uv] |
SmFace::MoveSeam | SmFace.cpp:16791 | 896 | [move_seam], [MoveSeamOptions], [MoveSeamResult], [SeamProblem] |
SmFace::SplitAtSeam | SmFace.cpp:17816 | 384 | [split_at_seam], [SeamSplit] |
SmFace::ShrinkGeometry | SmFace.cpp:18217 | 118 | [shrink_geometry] |
Module file-header table (15 rows)
| Rust | Upstream |
|---|---|
[crate::topology::Face::new] | SmFace::SmFace |
[destroy] | SmFace::~SmFace |
[calculate_uv_domain_from_uv_trim_curves], [UvDomainFromTrim] | SmFace::CalculateUVDomainFromUVTrimCurves |
[create_oriented_trim_boundary], [OrientedTrimBoundary] | SmFace::CreateOrientedTrimBoundary |
[find_if_rectangular_trim], [RectangularTrim] | SmFace::FindIfRectangularTrim |
[flip_face_orientation] | SmFace::FlipFaceOrientation |
[set_surface] | SmFace::SetSurface |
[insert_loop] | SmFace::InsertLoop |
[remove_loop] | SmFace::RemoveLoop |
[remove_uv_trim_curves] | SmFace::RemoveUVTrimCurves |
[swap_uv] | SmFace::SwapUV |
[move_seam], [MoveSeamOptions], [MoveSeamResult], [SeamProblem] | SmFace::MoveSeam |
[split_at_seam], [SeamSplit] | SmFace::SplitAtSeam |
[shrink_geometry] | SmFace::ShrinkGeometry |
[FixSeamPlanType] | SmFixSeamPlanType (SmTypes.h) |
Upstream tests reaching this unit
prog_test:my_test_surface_closest_point, prog_test:my_test_drop_point, prog_test:my_test_matrix, prog_test:my_test_reversed_line_join, SM_API_test:TestSmCreateRectangle, SM_API_test:TestSmCreateRegularPolygon