Units / surface
surface.surf_of_extrusion_p1 green
- Layer
- 24
- Upstream lines
- 1,865
- Functions
- 37
- Rust module
surface::surf_of_extrusion::p1
Source: crates/solidcore/src/surface/surf_of_extrusion/p1.rs
Upstream: source/SMLib/inc/SmSurfOfExtrusion.h, source/SMLib/src/SmSurfOfExtrusion.cpp
Notes
UPDATE after curve.curve_p9 (PR #13): sm_IntersectGenerators now calls Curve::global_curve_solve (ProjectedIntersect); difftest 2055 cases, 1999 pass bit-identical, 0 failed, 56 deferred (surface.surface_p4 30, surface.surface_p5 26; the 41 curve.curve_p9 deferrals are gone), --perturb SENSITIVE 1999/1999. Counts below are from before. PARTIAL: difftest 2055 cases (1255 fixture, incl. 1082 second-review cases in review2_extra_cases.json: TestSmCreateExtrude, the my_ssi_analytic_demo cylinders, seams, orientations, tolerance-limit tilts, tiny/huge scales, SmHyperbola/SmParabola generators; 800 generated over B-spline, SmLine, SmCircle, SmEllipse, SmHyperbola, SmParabola generators), 1958 pass bit-identical (max_rel_err 0), 0 failed, 97 deferred: 56 in STEPInversion of a non-perpendicular generator (SmBSplineSurface::STEPInversion solves; since surface.surface_p1 merged (PR #43) they reach surface.surface_p4 30: SmSurface::GlobalPointSolve, surface.surface_p5 26: SmSurface::LocalPointSolve), curve.curve_p9 41 (sm_IntersectGenerators: SmCurve::GlobalCurveSolve); --perturb SENSITIVE. UNPORTED(surface.surf_of_extrusion_p1) owner stubs in SmLine/SmEllipse/SmHyperbola/SmParabola::MakeNurb not wired (curves hold only an ObjectRef owner; see plan/findings.md); the SmLine, SmHyperbola and SmParabola owner steps are applied by SurfOfExtrusion itself. Review fixes: hyperbola/parabola owner step, InvalidInput->1007 status mapping, conversions/DropPointFast return SM_ERR without NURB; second review: STEPInversion owner step for hyperbola/parabola GlobalPointSolveSTEP (rel. err up to 9e-3 before), FFI circle/ellipse/line size guards relaxed to > 0; 20000 seeds 0 failed, max_rel_err 1.7e-16. 37 fns; largest: sm_IntersectGenerators, SmSurfOfExtrusion::STEPInversion, SmSurfOfExtrusion::DropPointFast, SmSurfOfExtrusion::MakeNurb; unit-SCC #22 (220 units); 319 upstream test entry points reach this unit Re-run with surface.surface_p5's back-edges wired (PR #50): cases=2055 passed=1958 failed=0 deferred=97 max_rel_err=0e0 blocked_by=curve.curve_p9(41),intersect.surface_intersector_p3(26),surface.surface_p4(30). Re-run with surface.surface_point_solve_p3 (PR #106): cases=2055 passed=2002 failed=0 deferred=53 max_rel_err=0.0 blocked_by=surface.surface_p3(51),surface.surface_p8(2). Re-run after merging PR #106 (surface.surface_point_solve_p3 wired, 2026-10-15): 2055 cases, 2053 pass, 2 deferred (surface.surface_p8 2), 0 failed, max_rel_err 0. Re-run after wiring PR #118 (surface.surface_p8 and its back-edges, GlobalPointSolve_0 included): 2055 cases, 2055 pass, 0 deferred, 0 failed, max_rel_err 0; green.
Difftest
- Cases
- 2,055
- Passed
- 2,055
- 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.geom_utility_p1 green geom.object partial 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 nurbs.b_spline_surface_n_lib_p1 green nurbs.b_spline_surface_p1 green nurbs.b_spline_surface_p2 partial surface.surface_p2 partial
Soft dependencies: curve.curve_p1 partial curve.curve_p4 partial curve.curve_p5 partial curve.curve_p6 green curve.curve_p8 green curve.curve_p9 green curve.line green nlib.srf_basic green nurbs.b_spline_curve_n_lib green nurbs.b_spline_curve_p3 partial
Dependents: primitive.primitive_creation_p1 claimed surface.surf_of_extrusion_p2 partial
Soft dependents: blend.fillet_custom_solver partial surface.surface_p1 partial
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmSurfOfExtrusion::SmSurfOfExtrusion | SmSurfOfExtrusion.h:127 | 1 | [SurfOfExtrusion], [CurveOrientType] |
SmSurfOfExtrusion::GetSTEPUVDomain | SmSurfOfExtrusion.h:249 | 1 | [SurfOfExtrusion::step_uv_domain], [SurfOfExtrusion::gen_curve], [SurfOfExtrusion::set_context], [SurfOfExtrusion::toggle_swap_uv_bit] |
SmSurfOfExtrusion::GetGenCurve | SmSurfOfExtrusion.h:259 | 1 | [SurfOfExtrusion::step_uv_domain], [SurfOfExtrusion::gen_curve], [SurfOfExtrusion::set_context], [SurfOfExtrusion::toggle_swap_uv_bit] |
SmSurfOfExtrusion::SetContext | SmSurfOfExtrusion.h:408 | 2 | [SurfOfExtrusion::step_uv_domain], [SurfOfExtrusion::gen_curve], [SurfOfExtrusion::set_context], [SurfOfExtrusion::toggle_swap_uv_bit] |
SmSurfOfExtrusion::ToggleSwapUVBit | SmSurfOfExtrusion.h:440 | 1 | [SurfOfExtrusion::step_uv_domain], [SurfOfExtrusion::gen_curve], [SurfOfExtrusion::set_context], [SurfOfExtrusion::toggle_swap_uv_bit] |
SmSurfOfExtrusion::GetClassString | SmSurfOfExtrusion.h:487 | 1 | [SurfOfExtrusion::is_kind_of], [SurfOfExtrusion::TYPE], [SurfOfExtrusion::type_code], [SurfOfExtrusion::type_string], [SurfOfExtrusion::class_string] |
SmSurfOfExtrusion::GetType | SmSurfOfExtrusion.h:487 | 1 | [SurfOfExtrusion::is_kind_of], [SurfOfExtrusion::TYPE], [SurfOfExtrusion::type_code], [SurfOfExtrusion::type_string], [SurfOfExtrusion::class_string] |
SmSurfOfExtrusion::GetTypeString | SmSurfOfExtrusion.h:487 | 1 | [SurfOfExtrusion::is_kind_of], [SurfOfExtrusion::TYPE], [SurfOfExtrusion::type_code], [SurfOfExtrusion::type_string], [SurfOfExtrusion::class_string] |
SmSurfOfExtrusion::SetCurvePoint | SmSurfOfExtrusion.h:494 | 1 | [SurfOfExtrusion::set_curve_point], [SurfOfExtrusion::set_curve_vec] |
SmSurfOfExtrusion::SetCurveVec | SmSurfOfExtrusion.h:495 | 1 | [SurfOfExtrusion::set_curve_point], [SurfOfExtrusion::set_curve_vec] |
SmSurfOfExtrusion::SmSurfOfExtrusion | SmSurfOfExtrusion.cpp:37 | 90 | [SurfOfExtrusion], [CurveOrientType] |
SmSurfOfExtrusion::SmSurfOfExtrusion | SmSurfOfExtrusion.cpp:138 | 89 | [SurfOfExtrusion], [CurveOrientType] |
SmSurfOfExtrusion::SmSurfOfExtrusion | SmSurfOfExtrusion.cpp:234 | 28 | [SurfOfExtrusion], [CurveOrientType] |
SmSurfOfExtrusion::~SmSurfOfExtrusion | SmSurfOfExtrusion.cpp:268 | 6 | Drop (implicit) |
SmSurfOfExtrusion::operator== | SmSurfOfExtrusion.cpp:281 | 33 | [SurfOfExtrusion::approx_eq] |
SmSurfOfExtrusion::AdjustSTEPUVDomain | SmSurfOfExtrusion.cpp:329 | 78 | [SurfOfExtrusion::adjust_step_uv_domain] |
SmSurfOfExtrusion::UpdateAnalyticalDomain | SmSurfOfExtrusion.cpp:431 | 51 | [SurfOfExtrusion::update_analytical_domain] |
SmSurfOfExtrusion::Copy | SmSurfOfExtrusion.cpp:488 | 11 | [SurfOfExtrusion::copy], Clone |
SmSurfOfExtrusion::Reparameterize | SmSurfOfExtrusion.cpp:505 | 55 | [SurfOfExtrusion::reparameterize] |
SmSurfOfExtrusion::STEPInversion | SmSurfOfExtrusion.cpp:579 | 159 | [SurfOfExtrusion::step_inversion] |
SmSurfOfExtrusion::ConvertUVFromSTEPToNURBS | SmSurfOfExtrusion.cpp:759 | 53 | [SurfOfExtrusion::convert_uv_from_step_to_nurbs], [SurfOfExtrusion::convert_uv_from_nurbs_to_step] |
SmSurfOfExtrusion::ConvertUVFromNURBSToSTEP | SmSurfOfExtrusion.cpp:824 | 33 | [SurfOfExtrusion::convert_uv_from_step_to_nurbs], [SurfOfExtrusion::convert_uv_from_nurbs_to_step] |
SmSurfOfExtrusion::CreateCanonical | SmSurfOfExtrusion.cpp:865 | 22 | [SurfOfExtrusion::create_canonical] |
SmSurfOfExtrusion::EvaluateSTEP | SmSurfOfExtrusion.cpp:897 | 106 | [SurfOfExtrusion::evaluate_step], [SurfOfExtrusion::evaluate_step_point] |
SmSurfOfExtrusion::EvaluateSTEPPoint | SmSurfOfExtrusion.cpp:1009 | 21 | [SurfOfExtrusion::evaluate_step], [SurfOfExtrusion::evaluate_step_point] |
SmSurfOfExtrusion::GetCanonical | SmSurfOfExtrusion.cpp:1036 | 12 | [SurfOfExtrusion::canonical] |
SmSurfOfExtrusion::GetSTEPLinearParamExtent | SmSurfOfExtrusion.cpp:1056 | 12 | [SurfOfExtrusion::step_linear_param_extent] |
SmSurfOfExtrusion::GetGenDirParamExtent | SmSurfOfExtrusion.cpp:1106 | 22 | [SurfOfExtrusion::gen_dir_param_extent] |
SmSurfOfExtrusion::GetMaxAnalyticDomain | SmSurfOfExtrusion.cpp:1141 | 15 | [SurfOfExtrusion::max_analytic_domain] |
SmSurfOfExtrusion::GetExtrusionVector | SmSurfOfExtrusion.cpp:1182 | 4 | [SurfOfExtrusion::extrusion_vector], [SurfOfExtrusion::origin] |
SmSurfOfExtrusion::GetOrigin | SmSurfOfExtrusion.cpp:1191 | 4 | [SurfOfExtrusion::extrusion_vector], [SurfOfExtrusion::origin] |
SmSurfOfExtrusion::CreateDirectrixFromPoint | SmSurfOfExtrusion.cpp:1407 | 109 | [SurfOfExtrusion::create_directrix_from_point] |
SmSurfOfExtrusion::DropPointFast | SmSurfOfExtrusion.cpp:1730 | 134 | [SurfOfExtrusion::drop_point_fast] |
sm_IntersectGenerators | SmSurfOfExtrusion.cpp:2658 | 499 | [intersect_generators], [GeneratorIntersection] |
SmSurfOfExtrusion::MakeNurb | SmSurfOfExtrusion.cpp:3668 | 116 | [SurfOfExtrusion::make_nurb] |
SmSurfOfExtrusion::Transform | SmSurfOfExtrusion.cpp:3808 | 88 | [SurfOfExtrusion::transform] |
SmSurfOfExtrusion::IsKindOf | SmSurfOfExtrusion.cpp:4589 | 4 | [SurfOfExtrusion::is_kind_of], [SurfOfExtrusion::TYPE], [SurfOfExtrusion::type_code], [SurfOfExtrusion::type_string], [SurfOfExtrusion::class_string] |
Module file-header table (27 rows)
| Rust | Upstream |
|---|---|
[SurfOfExtrusion], [CurveOrientType] | SmSurfOfExtrusion, SmCurveOrientType |
[SurfOfExtrusion::new] | SmSurfOfExtrusion(pGenCurve, crOrigin, crExtrusionVec, crAnalUVDomain, bSwapUV) |
[SurfOfExtrusion::new_infinite] | SmSurfOfExtrusion(pGenCurve, crExtrusionVec, bSwapUV) |
[SurfOfExtrusion::empty] | SmSurfOfExtrusion() |
[SurfOfExtrusion::copy], Clone | SmSurfOfExtrusion(const SmSurfOfExtrusion&), Copy |
Drop (implicit) | ~SmSurfOfExtrusion |
[SurfOfExtrusion::approx_eq] | operator== |
[SurfOfExtrusion::adjust_step_uv_domain] | AdjustSTEPUVDomain |
[SurfOfExtrusion::update_analytical_domain] | UpdateAnalyticalDomain |
[SurfOfExtrusion::reparameterize] | Reparameterize |
[SurfOfExtrusion::step_inversion] | STEPInversion |
[SurfOfExtrusion::convert_uv_from_step_to_nurbs], [SurfOfExtrusion::convert_uv_from_nurbs_to_step] | ConvertUVFromSTEPToNURBS, ConvertUVFromNURBSToSTEP |
[SurfOfExtrusion::create_canonical] | CreateCanonical |
[SurfOfExtrusion::evaluate_step], [SurfOfExtrusion::evaluate_step_point] | EvaluateSTEP, EvaluateSTEPPoint |
[SurfOfExtrusion::canonical] | GetCanonical |
[SurfOfExtrusion::step_linear_param_extent] | GetSTEPLinearParamExtent |
[SurfOfExtrusion::gen_dir_param_extent] | GetGenDirParamExtent |
[SurfOfExtrusion::max_analytic_domain] | GetMaxAnalyticDomain |
[SurfOfExtrusion::extrusion_vector], [SurfOfExtrusion::origin] | GetExtrusionVector, GetOrigin |
[SurfOfExtrusion::create_directrix_from_point] | CreateDirectrixFromPoint |
[SurfOfExtrusion::drop_point_fast] | DropPointFast |
[intersect_generators], [GeneratorIntersection] | sm_IntersectGenerators (file static) |
[SurfOfExtrusion::make_nurb] | MakeNurb |
[SurfOfExtrusion::transform] | Transform |
[SurfOfExtrusion::is_kind_of], [SurfOfExtrusion::TYPE], [SurfOfExtrusion::type_code], [SurfOfExtrusion::type_string], [SurfOfExtrusion::class_string] | IsKindOf, GetType, GetTypeString, GetClassString (SM_COMMON) |
[SurfOfExtrusion::step_uv_domain], [SurfOfExtrusion::gen_curve], [SurfOfExtrusion::set_context], [SurfOfExtrusion::toggle_swap_uv_bit] | GetSTEPUVDomain, GetGenCurve, SetContext, ToggleSwapUVBit (inline) |
[SurfOfExtrusion::set_curve_point], [SurfOfExtrusion::set_curve_vec] | SetCurvePoint, SetCurveVec (inline, protected) |
Upstream tests reaching this unit
prog_test:my_test_extent3d, prog_test:my_test_vector2d, 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