solidcore

Units / surface

surface.surface_p6 green

Layer
29
Upstream lines
2,150
Functions
8
Rust module
surface::surface::p6

Source: crates/solidcore/src/surface/surface/p6.rs

Upstream: source/SMLib/src/SmSurface.cpp

Notes

PARTIAL: difftest 2099 cases (99 fixture: CalculateContinuities and CreateNaturalUVTrimCurves on Surface.sms / DropCurveSurface.sms / offset_nurb.sms, planes and cones/cylinders of revolution (also true cones with their apex on the axis), curve-bounded surfaces; IdenticalSolutions on plane pairs; sm_SCLocalSolve boundary curve solves; GetSampleValues input checks; disjoint coincidence boxes; point range solutions + 2000 generated over B-spline (poles, creases, herringbone kinks, rational, tiny/huge scales), plane, revolution and curve-bounded surfaces, B-spline and SmLine curves), 1834 pass bit-identical (max_rel_err 0), 265 deferred after merging surface_p4 and surface_p5 (surface.surface_p3 124, surface.surface_point_solve_p3 141; formerly surface_p4/surface_p5 stubs: DropPoint, LocalPointSolve, GlobalPointSolve, IsSingularity, SmCSIntersectENFO::Evaluate, sm_SpLocalSolve, LocalCurveSolve's SmCSNormalizeENFO); --perturb SENSITIVE; back-edges wired: LocalCurveIntersect (surface.surface_p9), SmSSGlobalSolver::IdenticalSolutions (surface.surface_p7), CreateNaturalUVTrimCurves (nurbs.b_spline_surface_p2, surface.plane_p1), CalculateContinuities (surface.surface_cache_p3, curve.iso_curve: now green); intersect.surface_tracer's DoTrace now runs on the built cache; upstream UB-100 (GetSampleValues NULL tangent reference) refused by the shim. 8 fns; largest: SmSurface::SimpleCoincidenceChecker, SmDerivSurfDefinition::GetSampleValues, sm_SCLocalSolve, SmSurface::ClassifyIntersectingRangeSolution; cycle back-edges (call into later units; stub or co-port): surface.surface_p1(5); unit-SCC #22 (220 units); 317 upstream test entry points reach this unit Re-run (PR #52, after merging surface_p4/#49 and surface_p5/#50): 2099 cases, 1939 pass, 160 deferred (surface.surface_point_solve_p3 141, curve.iso_curve 19); the shim now runs a verbatim sm_SpLocalSolve inside sm_SCLocalSolve (was a -2 stop); --perturb SENSITIVE 1939/1939. Re-run after merging PR #106 (surface.surface_point_solve_p3 wired, 2026-10-15): 2099 cases, 2098 pass, 1 deferred (surface.surface_p8 1), 0 failed, max_rel_err 0. Re-run after wiring PR #118 (surface.surface_p8 and its back-edges, GlobalPointSolve_0 included): 2099 cases, 2099 pass, 0 deferred, 0 failed, max_rel_err 0; green.

Difftest

Cases
2,099
Passed
2,099
Deferred
0
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Nothing: no deferred cases.

Report JSON (per-case results)

Dependencies

Depends on: curve.curve_p2 green geom.axis2_placement green geom.extent1d green geom.extent2d green geom.extent3d green geom.global_solver partial geom.local_solve_nd green geom.object partial geom.solution_array partial geom.tol green geom.vector2d green geom.vector3d green nurbs.b_spline_curve_p1 green surface.surface_p2 partial surface.surface_p4 green surface.surface_p5 green surface.surface_p7 partial

Soft dependencies: curve.curve_p3 green curve.curve_p4 partial curve.curve_p6 green curve.iso_curve green curve.line green nurbs.b_spline_curve_p2 green

Dependents: surface.surface_p11 partial surface.surface_p8 partial

Soft dependents: blend.fillet_corner_p1 todo blend.fillet_solver_p1 claimed blend.fillet_solver_p3 todo boolean.topology_intersector_p2 claimed intersect.curve_class_p2 claimed intersect.curve_class_p8 partial surface.surface_p10 partial sweep.rotational_sweep_geometry partial topology.brep_p8 claimed topology.trimming_tools partial

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmDerivSurfDefinition::GetSampleValuesSmSurface.cpp:2941346[DerivSurfDefinition::sample_values], [SampleOptions], [DerivSampleValues]
sm_SCLocalSolveSmSurface.cpp:4812318[sc_local_solve], [ScLocalSolveNodes]
SmSurface::CalculateContinuitiesSmSurface.cpp:6168250[Surface::calculate_continuities]
SmSurface::CreateNaturalUVTrimCurvesSmSurface.cpp:9048232[Surface::create_natural_uv_trim_curves], [NaturalUvTrimCurves]
SmSSGlobalSolver::IdenticalSolutionsSmSurface.cpp:21522137[SsGlobalSolver::solutions_identical]
SmSurface::LocalCurveIntersectSmSurface.cpp:24745246[Surface::local_curve_intersect], [CurveIntersection]
SmSurface::SimpleCoincidenceCheckerSmSurface.cpp:29226360[Surface::simple_coincidence_checker]
SmSurface::ClassifyIntersectingRangeSolutionSmSurface.cpp:30666261[Surface::classify_intersecting_range_solution], [RangeTangentPoint]
Module file-header table (8 rows)
RustUpstream
[Surface::calculate_continuities]SmSurface::CalculateContinuities (virtual; no surface kind overrides it)
[Surface::create_natural_uv_trim_curves], [NaturalUvTrimCurves]SmSurface::CreateNaturalUVTrimCurves
[DerivSurfDefinition::sample_values], [SampleOptions], [DerivSampleValues]SmDerivSurfDefinition::GetSampleValues (from a surface boundary curve)
[Surface::local_curve_intersect], [CurveIntersection]SmSurface::LocalCurveIntersect (virtual; not overridden)
[Surface::simple_coincidence_checker]SmSurface::SimpleCoincidenceChecker (virtual; not overridden)
[Surface::classify_intersecting_range_solution], [RangeTangentPoint]SmSurface::ClassifyIntersectingRangeSolution
[SsGlobalSolver::solutions_identical]SmSSGlobalSolver::IdenticalSolutions
[sc_local_solve], [ScLocalSolveNodes]sm_SCLocalSolve (static)

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