Units / nurbs
nurbs.b_spline_surface_p1 green
- Layer
- 12
- Upstream lines
- 1,790
- Functions
- 41
- Rust module
nurbs::b_spline_surface::p1
Source: crates/solidcore/src/nurbs/b_spline_surface/p1.rs
Upstream: source/SMLib/inc/SmBSplineSurface.h, source/SMLib/src/SmBSplineSurface.cpp
Notes
GREEN after PR #62 (surface.offset_surface, 2026-10-16): difftest 2120 cases, 2120 pass, 0 failed, 0 deferred, max_rel_err 0 (the last deferral, an offset of a B-spline, now runs the port); history below; 41 fns; largest: SmBSplineSurface::CalculateBoundingBox, SmBSplineSurface::CreateCanonical, SmBSplineSurface::ReadFromDB, SmBSplineSurface::IsDegenerateCurve; cycle back-edges (call into later units; stub or co-port): surface.cone_p1(8), surface.plane_p1(5), surface.surface_p1(5), surface.sphere(4), surface.surf_of_extrusion_p1(4), surface.surf_of_revolution_p1(4), surface.torus(4), surface.surface_p2(3), surface.surface_p7(3), surface.surface_p5(2), surface.surface_p4(1), topology.brep_p1(1), topology.face_p2(1); unit-SCC #22 (220 units); 319 upstream test entry points reach this unit. Review PR #106 recertification: 2120 cases, 2116 pass, 4 deferred, 0 failed, max_rel_err=0.0; deferred: surface.offset_surface 1, surface.surface_p3 3. Re-run after merging PR #106 (surface.surface_point_solve_p3 wired, 2026-10-15): 2120 cases, 2119 pass, 1 deferred (surface.offset_surface 1), 0 failed, max_rel_err 0.
Difftest
- Cases
- 2,120
- Passed
- 2,120
- 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: geom.axis2_placement green geom.extent2d green geom.extent3d green geom.polar_box green geom.pseudo_box green geom.solution_array partial geom.tol green geom.vector3d green nlib.math green nlib.srf_basic green nlib.srf_common green nurbs.nurbs_crv green topology.database_io green
Soft dependencies: geom.extent1d green geom.geom_utility_p1 green nlib.iges green nlib.srf_nurb green nurbs.b_spline_curve_p1 green nurbs.nurbs_srf green
Dependents: blend.fillet_corner_p1 todo blend.fillet_standard_solver_p1 claimed nurbs.b_spline_surface_n_lib_p1 green nurbs.b_spline_surface_n_lib_p2 partial nurbs.b_spline_surface_p2 partial primitive.primitive_creation_p1 claimed query.tess partial surface.cone_p1 green surface.cone_p2 claimed surface.cone_p3 partial surface.offset_surface green surface.plane_p1 partial surface.plane_p2 partial surface.sphere green surface.surf_of_extrusion_p1 green surface.surf_of_extrusion_p2 partial surface.surf_of_revolution_p1 green surface.surf_of_revolution_p2 partial surface.surf_of_revolution_p3 partial surface.surface_cache_p2 partial surface.surface_cache_p3 partial surface.surface_p1 partial surface.surface_p7 partial surface.surface_point_solve_p1 green surface.surface_point_solve_p2 green surface.surface_point_solve_p3 green surface.torus green sweep.rotational_sweep_geometry partial topology.brep_p3 claimed
Soft dependents: blend.fillet_corner_p3 todo blend.fillet_custom_solver partial blend.fillet_geom_p1 claimed blend.fillet_geom_p2 todo blend.fillet_geom_p4 todo blend.fillet_solver_p1 claimed blend.fillet_solver_p2 todo blend.fillet_standard_solver_p2 todo blend.hcr claimed curve.curve_p4 partial curve.ellipse_p1 green heal.gap partial intersect.curve_class_p1 partial intersect.curve_class_p5 partial intersect.curve_class_p8 partial intersect.surface_drop_lib_p3 claimed offset.offset_executive_p1 claimed offset.offset_geometry_creation claimed primitive.primitive_creation_p2 todo primitive.primitive_creation_p3 todo query.face_p2 partial surface.surface_cache_p1 green surface.surface_p2 partial surface.surface_p3 green sweep.api_surfaces partial sweep.trans_sweep_geometry partial topology.brep_data partial topology.brep_p5 claimed topology.trimming_tools partial
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmBSplineSurface::GetOutOfBoundsEnabled | SmBSplineSurface.h:888 | 1 | [BSplineSurface::out_of_bounds_enabled_mut] |
SmBSplineSurface::GetGwNurbPointer | SmBSplineSurface.h:889 | 1 | [BSplineSurface::gw_nurb] |
SmBSplineSurface::GetOrCreateGwNurbPointer | SmBSplineSurface.h:890 | 4 | [BSplineSurface::get_or_create_gw_nurb] |
SmBSplineSurface::IsOutOfBoundsEnabled | SmBSplineSurface.h:1034 | 1 | [BSplineSurface::is_out_of_bounds_enabled] |
SmBSplineSurface::RebuildSTEPFromNURBParameters | SmBSplineSurface.h:1106 | 1 | [BSplineSurface::rebuild_step_from_nurb_parameters] |
SmBSplineSurface::SetBSplineSurfaceForm | SmBSplineSurface.h:1223 | 1 | [BSplineSurface::set_b_spline_surface_form] |
SmBSplineSurface::ToggleSwapUVBit | SmBSplineSurface.h:1263 | 1 | [BSplineSurface::toggle_swap_uv_bit] |
SmBSplineSurface::GetClassString | SmBSplineSurface.h:1433 | 1 | [BSplineSurface::TYPE], [BSplineSurface::type_code], [BSplineSurface::type_string], [BSplineSurface::class_string] |
SmBSplineSurface::GetType | SmBSplineSurface.h:1433 | 1 | [BSplineSurface::TYPE], [BSplineSurface::type_code], [BSplineSurface::type_string], [BSplineSurface::class_string] |
SmBSplineSurface::GetTypeString | SmBSplineSurface.h:1433 | 1 | [BSplineSurface::TYPE], [BSplineSurface::type_code], [BSplineSurface::type_string], [BSplineSurface::class_string] |
SmBSplineSurface::SmBSplineSurface | SmBSplineSurface.cpp:50 | 7 | [BSplineSurface] |
SmBSplineSurface::SmBSplineSurface | SmBSplineSurface.cpp:146 | 63 | [BSplineSurface] |
SmBSplineSurface::SmBSplineSurface | SmBSplineSurface.cpp:219 | 80 | [BSplineSurface] |
SmBSplineSurface::SmBSplineSurface | SmBSplineSurface.cpp:309 | 40 | [BSplineSurface] |
SmBSplineSurface::~SmBSplineSurface | SmBSplineSurface.cpp:355 | 8 | Drop (implicit) |
SmBSplineSurface::operator== | SmBSplineSurface.cpp:370 | 26 | [BSplineSurface::approx_eq] |
SmBSplineSurface::CalculateBoundingBox | SmBSplineSurface.cpp:423 | 389 | [BSplineSurface::calculate_bounding_box], [BoundingBoxRequest], [BoundingBoxes] |
SmBSplineSurface::Copy | SmBSplineSurface.cpp:874 | 10 | [BSplineSurface::copy], Clone |
SmBSplineSurface::CreateBilinearSurface | SmBSplineSurface.cpp:1028 | 33 | [BSplineSurface::create_bilinear_surface] |
SmBSplineSurface::CreateCanonical | SmBSplineSurface.cpp:1071 | 165 | [BSplineSurface::create_canonical], [CanonicalSurfaceData] |
sm_CreateConePatch | SmBSplineSurface.cpp:1242 | 54 | create_cone_patch_dir (private) |
SmBSplineSurface::CreateConePatch | SmBSplineSurface.cpp:1422 | 18 | [BSplineSurface::create_cone_patch] |
SmBSplineSurface::CreateLinearSweep | SmBSplineSurface.cpp:1588 | 44 | [BSplineSurface::create_linear_sweep] |
SmBSplineSurface::CreateOffsetSurface | SmBSplineSurface.cpp:1945 | 21 | [BSplineSurface::create_offset_surface] |
SmBSplineSurface::GetCanonical | SmBSplineSurface.cpp:2716 | 60 | [BSplineSurface::canonical], [SurfaceCanonical] |
SmBSplineSurface::GetControlPointNet | SmBSplineSurface.cpp:2789 | 56 | [BSplineSurface::control_point_net], [ControlPointNet] |
SmBSplineSurface::GetControlPointsPointer | SmBSplineSurface.cpp:2857 | 28 | [BSplineSurface::control_points] |
SmBSplineSurface::GetNumberNaturalKnots | SmBSplineSurface.cpp:2926 | 14 | [BSplineSurface::number_natural_knots] |
SmBSplineSurface::GetNumberControlPoints | SmBSplineSurface.cpp:2948 | 16 | [BSplineSurface::number_control_points] |
SmBSplineSurface::IsDegenerateCurve | SmBSplineSurface.cpp:3014 | 110 | [BSplineSurface::is_degenerate_curve] |
SmBSplineSurface::IsParallelToVector | SmBSplineSurface.cpp:3146 | 95 | [BSplineSurface::is_parallel_to_vector] |
SmBSplineSurface::IsRational | SmBSplineSurface.cpp:3247 | 14 | [BSplineSurface::is_rational] |
SmBSplineSurface::GetGrevilleAbscissa | SmBSplineSurface.cpp:3307 | 46 | [BSplineSurface::greville_abscissa] |
SmBSplineSurface::GetDegree | SmBSplineSurface.cpp:3584 | 12 | [BSplineSurface::degree] |
SmBSplineSurface::GetKnots | SmBSplineSurface.cpp:3604 | 22 | [BSplineSurface::knots] |
SmBSplineSurface::GetNaturalUVDomain | SmBSplineSurface.cpp:4335 | 25 | [BSplineSurface::natural_uv_domain] |
SmBSplineSurface::MakeNurb | SmBSplineSurface.cpp:4467 | 7 | [BSplineSurface::make_nurb] |
SmBSplineSurface::STEPInversion | SmBSplineSurface.cpp:5097 | 87 | [BSplineSurface::step_inversion] |
SmBSplineSurface::Transform | SmBSplineSurface.cpp:5246 | 60 | [BSplineSurface::transform] |
SmBSplineSurface::IsKindOf | SmBSplineSurface.cpp:5673 | 4 | [BSplineSurface::is_kind_of] |
SmBSplineSurface::ReadFromDB | SmBSplineSurface.cpp:6367 | 163 | [BSplineSurface::read_from_db] |
Module file-header table (42 rows)
| Rust | Upstream |
|---|---|
[BSplineSurface] | SmBSplineSurface |
[BSplineSurface::new], Default | SmBSplineSurface() |
[BSplineSurface::from_data] | SmBSplineSurface(n, m, p, q, r, s, Pw, U, V) |
[BSplineSurface::from_nurb] | SmBSplineSurface(gw_SURFACE*, SmBoolean, const SmContext*) |
[BSplineSurface::from_gw_nurb] | SmBSplineSurface(const gw_SURFACE*) |
[BSplineSurface::copy], Clone | copy constructor, Copy |
Drop (implicit) | ~SmBSplineSurface |
[BSplineSurface::approx_eq] | operator== |
[BSplineSurface::calculate_bounding_box], [BoundingBoxRequest], [BoundingBoxes] | CalculateBoundingBox |
[BSplineSurface::create_bilinear_surface] | CreateBilinearSurface |
[BSplineSurface::create_canonical], [CanonicalSurfaceData] | CreateCanonical |
create_cone_patch_dir (private) | sm_CreateConePatch (static) |
[BSplineSurface::create_cone_patch] | CreateConePatch |
[BSplineSurface::create_linear_sweep] | CreateLinearSweep |
[BSplineSurface::create_offset_surface] | CreateOffsetSurface |
[BSplineSurface::canonical], [SurfaceCanonical] | GetCanonical |
[BSplineSurface::control_point_net], [ControlPointNet] | GetControlPointNet |
[BSplineSurface::control_points] | GetControlPointsPointer |
[BSplineSurface::number_natural_knots] | GetNumberNaturalKnots |
[BSplineSurface::number_control_points] | GetNumberControlPoints |
[BSplineSurface::is_degenerate_curve] | IsDegenerateCurve |
[BSplineSurface::is_parallel_to_vector] | IsParallelToVector |
[BSplineSurface::is_rational] | IsRational |
[BSplineSurface::greville_abscissa] | GetGrevilleAbscissa |
[BSplineSurface::degree] | GetDegree |
[BSplineSurface::knots] | GetKnots |
[BSplineSurface::natural_uv_domain] | GetNaturalUVDomain |
[BSplineSurface::make_nurb] | MakeNurb |
[BSplineSurface::step_inversion] | STEPInversion |
[BSplineSurface::transform] | Transform |
[BSplineSurface::is_kind_of] | IsKindOf |
[BSplineSurface::read_from_db] | ReadFromDB |
[BSplineSurface::TYPE], [BSplineSurface::type_code], [BSplineSurface::type_string], [BSplineSurface::class_string] | GetType, GetTypeString, GetClassString (SM_COMMON) |
[BSplineSurface::out_of_bounds_enabled_mut] | GetOutOfBoundsEnabled |
[BSplineSurface::is_out_of_bounds_enabled] | IsOutOfBoundsEnabled |
[BSplineSurface::gw_nurb] | GetGwNurbPointer |
[BSplineSurface::get_or_create_gw_nurb] | GetOrCreateGwNurbPointer |
[BSplineSurface::rebuild_step_from_nurb_parameters] | RebuildSTEPFromNURBParameters |
[BSplineSurface::set_b_spline_surface_form] | SetBSplineSurfaceForm |
[BSplineSurface::knot_type], [BSplineSurface::is_nurb_borrowed] | m_eKnotType, m_bNurbIsBorrowed (member reads) |
[BSplineSurface::toggle_swap_uv_bit] | ToggleSwapUVBit |
[BSplineSurfaceForm], [SurfParamType], [LocationType] | SmBSplineSurfaceForm, SmSurfParamType, SmLocationType |
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