Units / topology
topology.trimming_tools partial
- Layer
- 41
- Upstream lines
- 2,878
- Functions
- 49
- Rust module
topology::trimming_tools
Source: crates/solidcore/src/topology/trimming_tools.rs
Upstream: source/SMLib/inc/SmTrimmingTools.h, source/SMLib/src/SmTrimmingTools.cpp
Notes
PARTIAL: difftest 3263 cases (2063 fixture: upstream.json re-expresses SM_API_test TestSmOrderCurves, TestSmCreatePlanarFaces, TestSmCreatePlanarCircle; edge_cases.json: empty/open/off-plane/degenerate loops, tolerance-limit gaps, 1e-6..1e6 scales, nested and side-by-side loops, zero-area loops (UB-119), iso/mirror tolerance limits, curve-loop scripts; seams.json; rv_ellipse.json: review cases, SmEllipse (inside-out, tiny radii) and SmLine UV curves in MirrorCurve / IsIsoCurve / IsIsoCurveOnSeam; breps.json: AreUVCurvesPresent, GetEdgeUVExtremes, CheckLoop, CheckFace, FixTrimLoopTinyParameterSpaceGaps, EnsureLastEdgeuseUVCorrect, FixBackwardsOuterLoopOnSeam (with a MirrorCurve pre-step making seam jumps), FixTrimLoopOrientation/Order on the 15 topology.vertexuse .smb files; 1200 generated over real SmBSplineCurve/SmLine/SmEllipse/circle arcs and SmBSplineSurface (open, closed in u or v, pinched, C0, rational)/SmPlane/SmCurveBoundedSurface), 2842 pass bit-identical, 421 deferred (topology.face_p3 219: SmFace::ComputeLoopOrientation, CreateUVTrimCurves; topology.edgeuse_p3 193: GetOrCreateUVTrimCurve in FixTrimLoopOrder and ComputeUVPoint; topology.face_p4 9: GetEdges, HasSeamProblem), max_rel_err 0; --perturb SENSITIVE (2842/2842). After merging main (PR #52 surface.surface_p3) the 265 CheckLoop cases that deferred at GetSingularities pass bit-identical. UV trim curves that are SmEllipse/SmHyperbola/SmParabola run the inherited SmBSplineCurve GetCanonical/SetCanonical/EditEndPoint (review fix). B-rep ops normalise analytic geometry to B-spline copies as heal.gap. Back-edges wired: SmSurface::CreatePlaneWith3DCurves (surface.surface_p2) now calls OrderCurvesIntoLoops/FindOuterLoops (takes the Kernel). Upstream issues WR-96, WR-97, WR-98 (ported as is), UB-119, UB-120. Plan notes: 49 fns; largest: SmTrimmingTools::OrderCurvesIntoLoops, SmTrimmingTools::FindOuterLoops, SmTrimmingTools::CheckLoop, SmTrimmingTools::CheckFace; cycle back-edges (call into later units; stub or co-port): topology.face_p3(4), topology.edge(2), topology.face_p1(2), topology.face_p4(2), topology.brep_p2(1), topology.brep_p7(1); unit-SCC #22 (220 units); 168 upstream test entry points reach this unit
Difftest
- Cases
- 3,263
- Passed
- 2,842
- Deferred
- 421
- Failed
- 0
- Both errored
- 9
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
topology.face_p3 claimed | 219 |
topology.edgeuse_p3 claimed | 193 |
topology.face_p4 claimed | 9 |
Report JSON (per-case results)
Dependencies
Depends on: curve.curve_p2 green geom.assert_array green geom.extent1d green geom.extent2d green geom.extent3d green geom.object partial geom.point_set green geom.solution_array partial geom.tol green geom.vector2d green geom.vector3d green nurbs.b_spline_curve_p1 green nurbs.b_spline_curve_p2 green topology.edgeuse_p1 partial topology.face_p2 partial topology.loopuse partial
Soft dependencies: curve.curve_p1 partial curve.curve_p4 partial curve.curve_p6 green curve.curve_p9 green geom.context green geom.tools partial intersect.curve_class_p1 partial nurbs.b_spline_curve_n_lib green nurbs.b_spline_surface_p1 green nurbs.b_spline_surface_p2 partial surface.surface_p2 partial surface.surface_p4 green surface.surface_p5 green surface.surface_p6 green surface.surface_p7 partial topology.brep_p8 claimed topology.proto_topology_p1 partial topology.shell claimed topology.vertexuse partial
Dependents: none
Soft dependents: blend.fillet_geom_p4 todo topology.brep_p3 claimed topology.face_p1 partial
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmCurveIntersections::SmCurveIntersections | SmTrimmingTools.h:46 | 9 | |
SmIsoXSectSegment::SmIsoXSectSegment | SmTrimmingTools.h:79 | 1 | |
SmIsoXSectSegment::~SmIsoXSectSegment | SmTrimmingTools.h:82 | 1 | |
SmIsoXSectSegment::GetMinIndex | SmTrimmingTools.h:85 | 4 | |
SmIsoXSectSegment::GetMaxIndex | SmTrimmingTools.h:90 | 4 | |
SmCurveLoops::SmCurveLoops | SmTrimmingTools.h:125 | 1 | |
SmCurveLoops::~SmCurveLoops | SmTrimmingTools.h:134 | 1 | |
SmCurveLoops::IsValid | SmTrimmingTools.h:140 | 1 | |
SmCurveLoops::GetNumLoops | SmTrimmingTools.h:141 | 1 | |
SmTrimmingTools::GetClassType | SmTrimmingTools.h:531 | 1 | [TYPE], [class_type] |
SmTrimmingTools::TrimSurfaceWithModelSpaceCurves | SmTrimmingTools.cpp:87 | 185 | [trim_surface_with_model_space_curves], [TrimInput] |
SmTrimmingTools::AreUVCurvesPresent | SmTrimmingTools.cpp:535 | 22 | [loop_uv_curves_present], [face_uv_curves_present] |
SmTrimmingTools::AreUVCurvesPresent | SmTrimmingTools.cpp:563 | 14 | [loop_uv_curves_present], [face_uv_curves_present] |
SmTrimmingTools::CreateUVTrimCurves | SmTrimmingTools.cpp:612 | 21 | [create_uv_trim_curves] |
SmTrimmingTools::ClearUVTrimCurves | SmTrimmingTools.cpp:656 | 17 | [clear_uv_trim_curves] |
SmTrimmingTools::SplitAtSeams | SmTrimmingTools.cpp:784 | 42 | [split_at_seams] |
SmTrimmingTools::FixTrimLoopTinyParameterSpaceGaps | SmTrimmingTools.cpp:1215 | 87 | [fix_loop_tiny_parameter_space_gaps], [fix_face_tiny_parameter_space_gaps] |
SmTrimmingTools::FixTrimLoopTinyParameterSpaceGaps | SmTrimmingTools.cpp:1308 | 20 | [fix_loop_tiny_parameter_space_gaps], [fix_face_tiny_parameter_space_gaps] |
SmTrimmingTools::EnsureLastEdgeuseUVCorrect | SmTrimmingTools.cpp:1334 | 49 | [ensure_last_edgeuse_uv_correct] |
SmTrimmingTools::FixBackwardsOuterLoopOnSeam | SmTrimmingTools.cpp:1390 | 103 | [fix_backwards_outer_loop_on_seam] |
SmTrimmingTools::FixTrimLoopOrientation | SmTrimmingTools.cpp:1499 | 29 | [fix_loop_orientation], [fix_face_loop_orientations] |
SmTrimmingTools::FixTrimLoopOrientation | SmTrimmingTools.cpp:1535 | 18 | [fix_loop_orientation], [fix_face_loop_orientations] |
SmTrimmingTools::FixTrimLoopOrder | SmTrimmingTools.cpp:1564 | 125 | [fix_trim_loop_order] |
SmTrimmingTools::OrderCurvesIntoLoops | SmTrimmingTools.cpp:1739 | 353 | [order_curves_into_loops], [OrderedLoops] |
SmTrimmingTools::FindOuterLoops | SmTrimmingTools.cpp:2142 | 312 | [find_outer_loops] |
SmTrimmingTools::CheckFace | SmTrimmingTools.cpp:2702 | 209 | [check_face], [check_faces] |
SmTrimmingTools::CheckFaces | SmTrimmingTools.cpp:2917 | 21 | [check_face], [check_faces] |
sm_IsLoopUVGapWithinTolerance | SmTrimmingTools.cpp:2946 | 92 | [is_loop_uv_gap_within_tolerance] |
SmTrimmingTools::CheckLoop | SmTrimmingTools.cpp:3069 | 234 | [check_loop] |
SmTrimmingTools::GetEdgeUVExtremes | SmTrimmingTools.cpp:3316 | 116 | [edge_uv_extremes], [EdgeUvExtremes], [edge_uv_ends] |
SmTrimmingTools::GetEdgeUVExtremes | SmTrimmingTools.cpp:3438 | 9 | [edge_uv_extremes], [EdgeUvExtremes], [edge_uv_ends] |
SmTrimmingTools::SurfaceContinuityCheck | SmTrimmingTools.cpp:3453 | 30 | [surface_continuity_check] |
SmTrimmingTools::MirrorCurve | SmTrimmingTools.cpp:3489 | 42 | [mirror_curve] |
SmTrimmingTools::IsIsoCurve | SmTrimmingTools.cpp:3618 | 29 | [is_iso_curve_at] |
SmTrimmingTools::IsIsoCurve | SmTrimmingTools.cpp:3653 | 25 | [is_iso_curve_at] |
SmTrimmingTools::IsIsoCurveOnSeam | SmTrimmingTools.cpp:3684 | 19 | [is_iso_curve_on_seam] |
SmTrimmingTools::Min | SmTrimmingTools.cpp:3912 | 8 | [min] |
SmCurveLoops::SmCurveLoops | SmTrimmingTools.cpp:4023 | 32 | |
SmCurveLoops::Reset | SmTrimmingTools.cpp:4061 | 11 | |
SmCurveLoops::GetLoopStartIndex | SmTrimmingTools.cpp:4078 | 20 | |
SmCurveLoops::GetLoopStartEnd | SmTrimmingTools.cpp:4104 | 30 | |
SmCurveLoops::FindAdjacentLoopCurve | SmTrimmingTools.cpp:4140 | 30 | |
SmCurveLoops::FindEnteringAndLeaving | SmTrimmingTools.cpp:4179 | 77 | |
SmCurveLoops::SampleNearbyPoints | SmTrimmingTools.cpp:4262 | 59 | |
SmCurveLoops::IsSameSideIntersection | SmTrimmingTools.cpp:4328 | 66 | |
SmCurveLoops::AppendLoop | SmTrimmingTools.cpp:4400 | 33 | |
SmCurveLoops::InsertIntoLoops | SmTrimmingTools.cpp:4440 | 37 | |
SmCurveLoops::InsertIsoXSectSegment | SmTrimmingTools.cpp:4484 | 178 | |
SmCurveLoops::UpdateSolutionObjects | SmTrimmingTools.cpp:4669 | 50 |
Module file-header table (23 rows)
| Rust | Upstream |
|---|---|
[TYPE], [class_type] | SmTrimmingTools_TYPE, SmTrimmingTools::GetClassType |
[trim_surface_with_model_space_curves], [TrimInput] | SmTrimmingTools::TrimSurfaceWithModelSpaceCurves (region overload) |
[loop_uv_curves_present], [face_uv_curves_present] | SmTrimmingTools::AreUVCurvesPresent (loop, face) |
[create_uv_trim_curves] | SmTrimmingTools::CreateUVTrimCurves (face) |
[clear_uv_trim_curves] | SmTrimmingTools::ClearUVTrimCurves (face) |
[split_at_seams] | SmTrimmingTools::SplitAtSeams (face) |
[fix_loop_tiny_parameter_space_gaps], [fix_face_tiny_parameter_space_gaps] | SmTrimmingTools::FixTrimLoopTinyParameterSpaceGaps (loop, face) |
[ensure_last_edgeuse_uv_correct] | SmTrimmingTools::EnsureLastEdgeuseUVCorrect |
[fix_backwards_outer_loop_on_seam] | SmTrimmingTools::FixBackwardsOuterLoopOnSeam |
[fix_loop_orientation], [fix_face_loop_orientations] | SmTrimmingTools::FixTrimLoopOrientation (loop, face) |
[fix_trim_loop_order] | SmTrimmingTools::FixTrimLoopOrder |
[order_curves_into_loops], [OrderedLoops] | SmTrimmingTools::OrderCurvesIntoLoops |
[find_outer_loops] | SmTrimmingTools::FindOuterLoops |
[check_face], [check_faces] | SmTrimmingTools::CheckFace, CheckFaces |
[is_loop_uv_gap_within_tolerance] | sm_IsLoopUVGapWithinTolerance (static) |
[check_loop] | SmTrimmingTools::CheckLoop |
[edge_uv_extremes], [EdgeUvExtremes], [edge_uv_ends] | SmTrimmingTools::GetEdgeUVExtremes (with and without weights) |
[surface_continuity_check] | SmTrimmingTools::SurfaceContinuityCheck |
[mirror_curve] | SmTrimmingTools::MirrorCurve |
[is_iso_curve_at] | SmTrimmingTools::IsIsoCurve(curve, side, low, tol) |
[is_iso_curve] | SmTrimmingTools::IsIsoCurve(curve, &side, ¶m) |
[is_iso_curve_on_seam] | SmTrimmingTools::IsIsoCurveOnSeam |
[min] | SmTrimmingTools::Min |
Upstream tests reaching this unit
SM_API_test:TestSmOrderCurves, SM_API_test:TestSmCurves, SM_API_test:TestSmCreatePlanarCircle, SM_API_test:TestSmCreatePlanarFaces, prog_test:my_test_single_periodic_vertexuse, SM_API_test:TestSmPlanarFacesFailureCleanup