solidcore

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 functionDefined atLinesRust (from the file header)
SmBSplineSurface::GetOutOfBoundsEnabledSmBSplineSurface.h:8881[BSplineSurface::out_of_bounds_enabled_mut]
SmBSplineSurface::GetGwNurbPointerSmBSplineSurface.h:8891[BSplineSurface::gw_nurb]
SmBSplineSurface::GetOrCreateGwNurbPointerSmBSplineSurface.h:8904[BSplineSurface::get_or_create_gw_nurb]
SmBSplineSurface::IsOutOfBoundsEnabledSmBSplineSurface.h:10341[BSplineSurface::is_out_of_bounds_enabled]
SmBSplineSurface::RebuildSTEPFromNURBParametersSmBSplineSurface.h:11061[BSplineSurface::rebuild_step_from_nurb_parameters]
SmBSplineSurface::SetBSplineSurfaceFormSmBSplineSurface.h:12231[BSplineSurface::set_b_spline_surface_form]
SmBSplineSurface::ToggleSwapUVBitSmBSplineSurface.h:12631[BSplineSurface::toggle_swap_uv_bit]
SmBSplineSurface::GetClassStringSmBSplineSurface.h:14331[BSplineSurface::TYPE], [BSplineSurface::type_code], [BSplineSurface::type_string], [BSplineSurface::class_string]
SmBSplineSurface::GetTypeSmBSplineSurface.h:14331[BSplineSurface::TYPE], [BSplineSurface::type_code], [BSplineSurface::type_string], [BSplineSurface::class_string]
SmBSplineSurface::GetTypeStringSmBSplineSurface.h:14331[BSplineSurface::TYPE], [BSplineSurface::type_code], [BSplineSurface::type_string], [BSplineSurface::class_string]
SmBSplineSurface::SmBSplineSurfaceSmBSplineSurface.cpp:507[BSplineSurface]
SmBSplineSurface::SmBSplineSurfaceSmBSplineSurface.cpp:14663[BSplineSurface]
SmBSplineSurface::SmBSplineSurfaceSmBSplineSurface.cpp:21980[BSplineSurface]
SmBSplineSurface::SmBSplineSurfaceSmBSplineSurface.cpp:30940[BSplineSurface]
SmBSplineSurface::~SmBSplineSurfaceSmBSplineSurface.cpp:3558Drop (implicit)
SmBSplineSurface::operator==SmBSplineSurface.cpp:37026[BSplineSurface::approx_eq]
SmBSplineSurface::CalculateBoundingBoxSmBSplineSurface.cpp:423389[BSplineSurface::calculate_bounding_box], [BoundingBoxRequest], [BoundingBoxes]
SmBSplineSurface::CopySmBSplineSurface.cpp:87410[BSplineSurface::copy], Clone
SmBSplineSurface::CreateBilinearSurfaceSmBSplineSurface.cpp:102833[BSplineSurface::create_bilinear_surface]
SmBSplineSurface::CreateCanonicalSmBSplineSurface.cpp:1071165[BSplineSurface::create_canonical], [CanonicalSurfaceData]
sm_CreateConePatchSmBSplineSurface.cpp:124254create_cone_patch_dir (private)
SmBSplineSurface::CreateConePatchSmBSplineSurface.cpp:142218[BSplineSurface::create_cone_patch]
SmBSplineSurface::CreateLinearSweepSmBSplineSurface.cpp:158844[BSplineSurface::create_linear_sweep]
SmBSplineSurface::CreateOffsetSurfaceSmBSplineSurface.cpp:194521[BSplineSurface::create_offset_surface]
SmBSplineSurface::GetCanonicalSmBSplineSurface.cpp:271660[BSplineSurface::canonical], [SurfaceCanonical]
SmBSplineSurface::GetControlPointNetSmBSplineSurface.cpp:278956[BSplineSurface::control_point_net], [ControlPointNet]
SmBSplineSurface::GetControlPointsPointerSmBSplineSurface.cpp:285728[BSplineSurface::control_points]
SmBSplineSurface::GetNumberNaturalKnotsSmBSplineSurface.cpp:292614[BSplineSurface::number_natural_knots]
SmBSplineSurface::GetNumberControlPointsSmBSplineSurface.cpp:294816[BSplineSurface::number_control_points]
SmBSplineSurface::IsDegenerateCurveSmBSplineSurface.cpp:3014110[BSplineSurface::is_degenerate_curve]
SmBSplineSurface::IsParallelToVectorSmBSplineSurface.cpp:314695[BSplineSurface::is_parallel_to_vector]
SmBSplineSurface::IsRationalSmBSplineSurface.cpp:324714[BSplineSurface::is_rational]
SmBSplineSurface::GetGrevilleAbscissaSmBSplineSurface.cpp:330746[BSplineSurface::greville_abscissa]
SmBSplineSurface::GetDegreeSmBSplineSurface.cpp:358412[BSplineSurface::degree]
SmBSplineSurface::GetKnotsSmBSplineSurface.cpp:360422[BSplineSurface::knots]
SmBSplineSurface::GetNaturalUVDomainSmBSplineSurface.cpp:433525[BSplineSurface::natural_uv_domain]
SmBSplineSurface::MakeNurbSmBSplineSurface.cpp:44677[BSplineSurface::make_nurb]
SmBSplineSurface::STEPInversionSmBSplineSurface.cpp:509787[BSplineSurface::step_inversion]
SmBSplineSurface::TransformSmBSplineSurface.cpp:524660[BSplineSurface::transform]
SmBSplineSurface::IsKindOfSmBSplineSurface.cpp:56734[BSplineSurface::is_kind_of]
SmBSplineSurface::ReadFromDBSmBSplineSurface.cpp:6367163[BSplineSurface::read_from_db]
Module file-header table (42 rows)
RustUpstream
[BSplineSurface]SmBSplineSurface
[BSplineSurface::new], DefaultSmBSplineSurface()
[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], Clonecopy 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