solidcore

Units / surface

surface.surface_p2 partial

Layer
21
Upstream lines
2,398
Functions
91
Rust module
surface::surface::p2

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

Upstream: source/SMLib/inc/SmSurface.h, source/SMLib/src/SmSurface.cpp

Notes

surface.surface_p10 (PR #93): LsiGlobalSolver gained the borrowed fields surface_cache and kernel its LocalSolve reads (None from LsiGlobalSolver::new); local_solve now calls LsiGlobalSolver::local_solve_branch (surface::surface::p10). PARTIAL: difftest 869 cases (69 fixture: Surface.sms / DropCurveSurface.sms / offset_nurb.sms queries, evaluation, knots, edits, copies, SmSurfaceEval, ReadFromDB; base SmSurface() defaults; TestSmPrincipalDirectionPairing; + 800 generated), 790 pass bit-identical, 79 deferred after surface.plane_p2 wired the plane dispatch, PR #40 (surface.surface_p5 36, surface.surface_p1 31, surface.cone_p2 10, intersect.adv_surface_intersector 1, topology.trimming_tools 1; the 18 surface.surface_p7 cases moved to surface.surface_p1 with PR #24); wired UNPORTED(surface.surface_p2) in nurbs.b_spline_surface_p1 (IsKindOf), curve.curve_p2, curve.tangent_field, nurbs.b_spline_curve_n_lib, curve.iso_curve, curve.crv_on_surf (ReadFromDB, lift co-ports), nurbs.b_spline_surface_n_lib_p2 (GetDerivativeLimit co-port); geom.grid now blocked on surface.surface_cache_p1; geom.solution_array keeps 2 handle-lookup markers; 91 fns; largest: SmDerivSurfDefinition::CreateCrossSectionCurves, smsurf_EvaluateGeometric, smsurf_DropVectors, sm_CCLocalSolve; cycle back-edges (call into later units; stub or co-port): intersect.curve_class_p1(5), intersect.point_class(3), intersect.surface_intersector_p1(3), intersect.adv_surface_intersector(2), surface.cone_p1(2), surface.surface_cache_p1(2), topology.trimming_tools(2), intersect.curve_class_p2(1), intersect.curve_class_p8(1), intersect.surface_intersector_p4(1), intersect.surface_intersector_p5(1), surface.curve_bounded_surface(1), surface.offset_surface(1), surface.plane_p2(1), surface.sphere(1), surface.srf_in_volume(1), surface.surf_of_extrusion_p2(1), surface.surf_of_revolution_p3(1), surface.surface_p1(1), surface.torus(1); unit-SCC #22 (220 units); 320 upstream test entry points reach this unit intersect.surface_intersector_p5 wired (PR #82): base_global_surface_intersect runs DoIntersection, whose surface caches defer at SmSurface::CalculateContinuities (surface.surface_p6); now 869 cases, 808 pass, 61 deferred (surface.surface_p5 36, surface.surface_p4 13, surface.cone_p2 10, surface.surface_p6 1, topology.trimming_tools 1). [surface.surface_p6 wired (PR #92): 869 cases, 808 pass, 61 deferred (surface.cone_p2 10, surface.surface_p4 13, surface.surface_p5 36, surface.surface_p8 1, topology.trimming_tools 1)] Re-run with surface.surface_p5's back-edges wired (PR #50): cases=869 passed=807 failed=0 deferred=62 max_rel_err=0e0 blocked_by=intersect.adv_surface_intersector(1),surface.plane_p2(11),surface.surface_p3(36),surface.surface_p4(13),topology.trimming_tools(1). Re-run (PR #52, after merging surface_p4/#49 and surface_p5/#50): 869 cases, 844 pass, 25 deferred (surface.surface_point_solve_p3 13, surface.cone_p2 10, surface.surface_p8 1, topology.trimming_tools 1); the generator skips CreateExtendedSurface cases whose in-place N_SrfExtendByDist would be retried on half-written arrays (upstream UB-107, plan/findings.md). surface.surface_point_solve_p3 (PR #106): clone_for_evaluation preserves the owner and exact B-spline/revolution NURBS data for temporary solver evaluation instead of the upstream copy constructor knot fix-up. Re-run after merging PR #106 (surface.surface_point_solve_p3 wired, 2026-10-15): 869 cases, 857 pass, 12 deferred (surface.cone_p2 10, surface.surface_p8 1, topology.trimming_tools 1), 0 failed, max_rel_err 0. [topology.trimming_tools wired (PR #124): CreatePlaneWith3DCurves calls the ported OrderCurvesIntoLoops/FindOuterLoops; re-run after merging main with PR #106: 869 cases, 858 pass, 11 deferred (surface.cone_p2 10, surface.surface_p8 1), 0 failed, max_rel_err 0]

Difftest

Cases
869
Passed
859
Deferred
10
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Unported unitDeferred cases
surface.cone_p2 claimed10

Report JSON (per-case results)

Dependencies

Depends on: geom.a_object partial geom.assert_array green geom.extent1d green geom.extent2d green geom.extent3d green geom.geom_utility_p1 green geom.object partial geom.solution_array partial geom.tol green geom.vector2d green geom.vector3d green

Soft dependencies: curve.curve_cache green curve.curve_p2 green curve.curve_p3 green curve.curve_p7 green curve.curve_p8 green geom.axis2_placement green geom.polar_box green geom.polynomial green geom.tree partial nurbs.b_spline_curve_n_lib green nurbs.b_spline_curve_p1 green nurbs.b_spline_surface_n_lib_p2 partial nurbs.b_spline_surface_p1 green nurbs.b_spline_surface_p2 partial

Dependents: blend.fillet_corner_p1 todo blend.fillet_corner_p2 todo blend.fillet_corner_p3 todo blend.fillet_executive_p1 todo blend.fillet_geom_p1 claimed blend.fillet_geom_p2 todo blend.fillet_geom_p4 todo blend.fillet_geom_p5 todo blend.fillet_geom_p6 todo blend.fillet_intersector claimed blend.fillet_solver_p1 claimed blend.fillet_solver_p2 todo blend.fillet_solver_p3 todo blend.fillet_solver_p4 claimed blend.fillet_standard_solver_p1 claimed blend.fillet_standard_solver_p2 todo blend.hcr claimed heal.gap partial intersect.adv_surface_intersector partial intersect.curve_class_p1 partial intersect.curve_class_p2 claimed intersect.curve_class_p5 partial intersect.curve_class_p8 partial intersect.curve_class_p9 partial intersect.point_class partial intersect.ray_tracer partial intersect.surface_drop_curve partial intersect.surface_drop_lib_p1 partial intersect.surface_drop_lib_p3 claimed intersect.surface_intersector_p1 partial intersect.surface_intersector_p2 partial intersect.surface_intersector_p3 partial intersect.surface_silhouette green intersect.topology_solver_p1 partial offset.offset_executive_p1 claimed offset.offset_executive_p2 claimed offset.offset_geometry_creation claimed primitive.primitive_creation_p1 claimed query.face_p1 claimed query.face_p3 claimed surface.cone_p1 green surface.cone_p2 claimed surface.cone_p3 partial surface.curve_bounded_surface green surface.offset_surface green surface.plane_p1 partial surface.plane_p2 partial surface.sphere green surface.srf_in_volume partial 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_p1 green surface.surface_cache_p2 partial surface.surface_cache_p3 partial surface.surface_p1 partial surface.surface_p10 partial surface.surface_p11 partial surface.surface_p3 green surface.surface_p4 green surface.surface_p5 green surface.surface_p6 green surface.surface_p7 partial surface.surface_p8 partial surface.surface_p9 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 sweep.trans_sweep_geometry partial topology.brep_p1 claimed topology.brep_p10 claimed topology.brep_p2 claimed topology.brep_p3 claimed topology.brep_p5 claimed topology.brep_p7 claimed topology.brep_p8 claimed topology.brep_p9 claimed topology.edge partial topology.edgeuse_p1 partial topology.edgeuse_p2 partial topology.edgeuse_p3 claimed topology.face_p1 partial topology.face_p2 partial topology.face_p3 claimed topology.proto_topology_p1 partial

Soft dependents: blend.fillet_custom_solver partial blend.fillet_executive_p2 todo blend.fillet_executive_p3 todo blend.fillet_solver_p5 claimed boolean.merge_p1 partial boolean.merge_p2 todo boolean.merge_p3 todo boolean.topology_intersector_p1 partial boolean.topology_intersector_p3 claimed heal.face_props partial heal.heal_data_p3 partial intersect.curve_class_p4 claimed intersect.surface_intersector_p4 partial intersect.surface_intersector_p5 partial intersect.surface_tracer partial intersect.topology_solver_p2 partial primitive.primitive_creation_p2 todo primitive.primitive_creation_p3 todo query.api_queries partial query.brep claimed query.edge partial query.face_p2 partial query.loop green query.poly partial query.tess partial surface.trim_srf_cache partial sweep.topology_sweep claimed topology.brep_cache partial topology.brep_data partial topology.brep_p4 claimed topology.brep_p6 claimed topology.face_p4 claimed topology.loopuse partial topology.proto_topology_p2 partial topology.trimming_tools partial topology.vertexuse partial

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmDropCurveFail::~SmDropCurveFailSmSurface.h:1681
SmSurface::~SmSurfaceSmSurface.h:3334Drop (implicit), Clone
SmSurface::AdjustSTEPUVDomainSmSurface.h:3454[Surface::adjust_step_uv_domain]
SmSurface::CreateExtendedSurfaceSmSurface.h:60511[Surface::create_extended_surface], [Surface::create_extended_surface_dir]
SmSurface::CreateExtendedSurfaceSmSurface.h:61713[Surface::create_extended_surface], [Surface::create_extended_surface_dir]
SmSurface::DropPointFastSmSurface.h:82812[Surface::drop_point_fast]
SmSurface::EvaluateSmSurface.h:91532[Surface::evaluate], [Surface::evaluate_point]
SmSurface::EvaluatePointSmSurface.h:10122[Surface::evaluate], [Surface::evaluate_point]
SmSurface::GetOwnerSmSurface.h:10931[Surface::owner]
SmSurface::GetNaturalUVDomainSmSurface.h:10961[Surface::natural_uv_domain], [Surface::step_uv_domain]
SmSurface::GetSTEPUVDomainSmSurface.h:10971[Surface::natural_uv_domain], [Surface::step_uv_domain]
SmSurface::GetDegreeSmSurface.h:10981[Surface::degree], [Surface::number_control_points]
SmSurface::GetNumberControlPointsSmSurface.h:10991[Surface::degree], [Surface::number_control_points]
SmSurface::GetMaxAnalyticDomainSmSurface.h:11011[Surface::max_analytic_domain]
SmSurface::IsBilinearSmSurface.h:14681[Surface::is_bilinear], [Surface::is_parallel_to_vector]
SmSurface::IsParallelToVectorSmSurface.h:15062[Surface::is_bilinear], [Surface::is_parallel_to_vector]
SmSurface::IntersectWithPlaneSmSurface.h:159127[Surface::intersect_with_plane]
SmSurface::ReverseSmSurface.h:16712[Surface::reverse], [Surface::reparameterize]
SmSurface::ReparameterizeSmSurface.h:16742[Surface::reverse], [Surface::reparameterize]
SmSurface::SplitAtSmSurface.h:170310[Surface::split_at], [Surface::step_inversion]
SmSurface::STEPInversionSmSurface.h:171511[Surface::split_at], [Surface::step_inversion]
SmSurface::SwapUVSmSurface.h:17272[Surface::swap_uv], [Surface::transform], [Surface::trim_with_domain]
SmSurface::TransformSmSurface.h:17305[Surface::swap_uv], [Surface::transform], [Surface::trim_with_domain]
SmSurface::TrimWithDomainSmSurface.h:17362[Surface::swap_uv], [Surface::transform], [Surface::trim_with_domain]
SmSurface::GetClassStringSmSurface.h:17521[TYPE], [TYPE_STRING], [CLASS_STRING], [Surface::type_code], [Surface::type_string], [Surface::class_string]
SmSurface::GetTypeSmSurface.h:17521[TYPE], [TYPE_STRING], [CLASS_STRING], [Surface::type_code], [Surface::type_string], [Surface::class_string]
SmSurface::GetTypeStringSmSurface.h:17521[TYPE], [TYPE_STRING], [CLASS_STRING], [Surface::type_code], [Surface::type_string], [Surface::class_string]
SmSurfaceEval::SmSurfaceEvalSmSurface.h:20349[SurfaceEval]
SmSurfaceEval::SmSurfaceEvalSmSurface.h:20449[SurfaceEval]
SmSurfaceEval::SmSurfaceEvalSmSurface.h:20549[SurfaceEval]
SmSurfaceEval::operator=SmSurface.h:206519[SurfaceEval]
SmSurfaceEval::~SmSurfaceEvalSmSurface.h:21061
SmSurfaceEval::SetUVSmSurface.h:212610[SurfaceEval]
SmSurfaceEval::SetUVSmSurface.h:213710[SurfaceEval]
SmSurfaceEval::SetSectDirSmSurface.h:21696[SurfaceEval]
SmSurfaceEval::GetUVSmSurface.h:21781[SurfaceEval]
SmDerivSurfDefinition::IsFromSurfaceBoundaryCurveSmSurface.h:25537[DerivSurfDefinition], [TangencyType], [CurvatureType], [BlendEndType]
SmDerivSurfDefinition::GetNumDerivsSmSurface.h:26326[DerivSurfDefinition], [TangencyType], [CurvatureType], [BlendEndType]
SmDerivSurfDefinition::GetClassStringSmSurface.h:26741[TYPE], [TYPE_STRING], [CLASS_STRING], [Surface::type_code], [Surface::type_string], [Surface::class_string]
SmDerivSurfDefinition::GetClassTypeSmSurface.h:26751[DerivSurfDefinition], [TangencyType], [CurvatureType], [BlendEndType]
SmDropCurveFail::operator=SmSurface.cpp:14460[SurfaceEval]
SmDropCurveFail::UnInitSmSurface.cpp:26442[DropCurveFail], [DropCurveFailArgs], [CreateUvTrimCurvePathType]
SmDropCurveFail::SetSmSurface.cpp:31296[DropCurveFail], [DropCurveFailArgs], [CreateUvTrimCurvePathType]
SmSurface::CopySmSurface.cpp:7628[Surface::copy], [Surface::copy_and_add_analytics]
SmSurface::CopyAndAddAnalyticsSmSurface.cpp:8129[Surface::copy], [Surface::copy_and_add_analytics]
SmSurface::GetDerivativeLimitSmSurface.cpp:8276[derivative_limit], [normal_limit]
SmSurface::GetNormalLimitSmSurface.cpp:8445[derivative_limit], [normal_limit]
SmSurfaceEval::EvalSmSurface.cpp:192237[SurfaceEval]
SmDerivSurfDefinition::SmDerivSurfDefinitionSmSurface.cpp:217926[DerivSurfDefinition], [TangencyType], [CurvatureType], [BlendEndType]
SmDerivSurfDefinition::~SmDerivSurfDefinitionSmSurface.cpp:22117
SmDerivSurfDefinition::AssertValidSmSurface.cpp:224187[DerivSurfDefinition], [TangencyType], [CurvatureType], [BlendEndType]
SmDerivSurfDefinition::CreateCrossSectionCurvesSmSurface.cpp:3303193[DerivSurfDefinition], [TangencyType], [CurvatureType], [BlendEndType]
SmDerivSurfDefinition::SkinDerivSurfaceSmSurface.cpp:350387[DerivSurfDefinition], [TangencyType], [CurvatureType], [BlendEndType]
sm_GetOriginalSurfaceSmSurface.cpp:360016[original_surface]
smsurf_GetSurfaceCacheSmSurface.cpp:374940[surface_cache]
sm_CCLocalSolveSmSurface.cpp:3826115[cc_local_solve]
SmIsoCurveLengthIFEO::SmIsoCurveLengthIFEOSmSurface.cpp:51945[IsoCurveLengthIntegrand]
SmFindSingularParamWithGivenTangentDirEFO::~SmFindSingularParamWithGivenTangentDirEFOSmSurface.cpp:66111
s_MapUVSmSurface.cpp:724414[map_uv], [is_even]
s_IsEvenSmSurface.cpp:72581[map_uv], [is_even]
SmSurface::CreatePlaneWith3DCurvesSmSurface.cpp:9940112[Surface::create_plane_with_3d_curves], [PlaneWith3dCurves]
SmSurface::CurveOnClassifySmSurface.cpp:1016779[Surface::curve_on_classify]
sm_MergeDoubleArraysSmSurface.cpp:1157441[merge_double_arrays]
SmSurface::ConvertUVFromSTEPToNURBSSmSurface.cpp:1224234[Surface::convert_uv_from_step_to_nurbs], [Surface::convert_uv_from_nurbs_to_step]
SmSurface::ConvertUVFromNURBSToSTEPSmSurface.cpp:122828[Surface::convert_uv_from_step_to_nurbs], [Surface::convert_uv_from_nurbs_to_step]
SmSurface::GetKnotsSmSurface.cpp:1236114[Surface::knots]
sm_ConvertToParameterDeltaSmSurface.cpp:1305311[convert_to_parameter_delta]
sm_CsArePerpenDisjointSmSurface.cpp:1732253[cs_are_perpen_disjoint]
SmLSIGlobalSolver::~SmLSIGlobalSolverSmSurface.cpp:179073
SmLSIGlobalSolver::BranchMayContainAnswersSmSurface.cpp:17963106[LsiGlobalSolver]
SmSurface::GlobalSurfaceIntersectSmSurface.cpp:2037592[Surface::global_surface_intersect], [base_global_surface_intersect], [SurfaceIntersection]
sm_IntersectAndSplitSmSurface.cpp:2371245[intersect_and_split], [intersect_curve_and_split]
sm_IntersectCurveAndSplitSmSurface.cpp:2376452[intersect_and_split], [intersect_curve_and_split]
sm_SetUpBreaksSmSurface.cpp:2400925[set_up_breaks]
SmCSIntersectENFO::~SmCSIntersectENFOSmSurface.cpp:244591
SmCSNormalizeENFO::~SmCSNormalizeENFOSmSurface.cpp:252201
SmFindPSNormalENFO::~SmFindPSNormalENFOSmSurface.cpp:258321
SmSSPIntersectENFO::~SmSSPIntersectENFOSmSurface.cpp:266061
SmSSINormalizeENFO::~SmSSINormalizeENFOSmSurface.cpp:269631
SmSSNormalizeENFO::~SmSSNormalizeENFOSmSurface.cpp:280821
SmSSSIntersectENFO::~SmSSSIntersectENFOSmSurface.cpp:286341
smsurf_LiftSecondDerivativeSmSurface.cpp:2964717[lift_second_derivative], [lift_third_derivative]
smsurf_LiftThirdDerivativeSmSurface.cpp:2967029[lift_second_derivative], [lift_third_derivative]
smsurf_ScaleSTEPAngularDerivativesSmSurface.cpp:2970422[scale_step_angular_derivatives]
smsurf_EvaluateGeometricSmSurface.cpp:29746184[evaluate_geometric], [GeometricProperties]
smsurf_ComputeSurfacePointTypeSmSurface.cpp:3002750[compute_surface_point_type], [LocalSurfaceType], [SurfaceSideType]
smsurf_DropVectorsSmSurface.cpp:30143171[drop_vectors]
SmSurface::NotifySmSurface.cpp:3032450[notify]
SmSurface::PointBasedSurfaceIntersectSmSurface.cpp:3058866[Surface::point_based_surface_intersect], [PointIntersection]
SmSurface::ReadFromDBSmSurface.cpp:3464127[Surface::read_from_db]
SmSurface::IsKindOfSmSurface.cpp:346734[is_kind_of], [Surface::is_kind_of]
Module file-header table (48 rows)
RustUpstream
[Surface], [SurfaceKind]SmSurface (and its derived classes)
[SurfaceEvaluate]the evaluation virtuals generic callers use
Drop (implicit), Clone~SmSurface, copy constructor (owner reset)
[TYPE], [TYPE_STRING], [CLASS_STRING], [Surface::type_code], [Surface::type_string], [Surface::class_string]GetType, GetTypeString, GetClassString (SM_COMMON)
[is_kind_of], [Surface::is_kind_of]SmSurface::IsKindOf
[Surface::owner]GetOwner
[Surface::copy], [Surface::copy_and_add_analytics]Copy, CopyAndAddAnalytics
[Surface::adjust_step_uv_domain]AdjustSTEPUVDomain
[Surface::create_extended_surface], [Surface::create_extended_surface_dir]CreateExtendedSurface (both)
[Surface::drop_point_fast]DropPointFast
[Surface::evaluate], [Surface::evaluate_point]Evaluate, EvaluatePoint
[Surface::natural_uv_domain], [Surface::step_uv_domain]GetNaturalUVDomain, GetSTEPUVDomain
[Surface::degree], [Surface::number_control_points]GetDegree, GetNumberControlPoints
[Surface::max_analytic_domain]GetMaxAnalyticDomain
[Surface::is_bilinear], [Surface::is_parallel_to_vector]IsBilinear, IsParallelToVector
[Surface::intersect_with_plane]IntersectWithPlane
[Surface::reverse], [Surface::reparameterize]Reverse, Reparameterize
[Surface::split_at], [Surface::step_inversion]SplitAt, STEPInversion
[Surface::swap_uv], [Surface::transform], [Surface::trim_with_domain]SwapUV, Transform, TrimWithDomain
[Surface::knots]GetKnots
[Surface::convert_uv_from_step_to_nurbs], [Surface::convert_uv_from_nurbs_to_step]ConvertUVFromSTEPToNURBS, ConvertUVFromNURBSToSTEP
[Surface::curve_on_classify]CurveOnClassify
[Surface::global_surface_intersect], [base_global_surface_intersect], [SurfaceIntersection]GlobalSurfaceIntersect (virtual: the SmPlane override in surface::plane::p2; the SmSurface body)
[Surface::point_based_surface_intersect], [PointIntersection]PointBasedSurfaceIntersect (UV point version)
[Surface::read_from_db]SmSurface::ReadFromDB
[Surface::create_plane_with_3d_curves], [PlaneWith3dCurves]CreatePlaneWith3DCurves
[derivative_limit], [normal_limit]GetDerivativeLimit, GetNormalLimit (static)
[notify]SmSurface::Notify
base_* functionsthe SmSurface.h inline defaults of the virtuals
[SurfaceEval]SmSurfaceEval (constructors, operator=, SetUV, SetSectDir, GetUV, Eval)
[DerivSurfDefinition], [TangencyType], [CurvatureType], [BlendEndType]SmDerivSurfDefinition (constructor, AssertValid, IsFromSurfaceBoundaryCurve, GetNumDerivs, CreateCrossSectionCurves, SkinDerivSurface, GetClassString, GetClassType), SmTangencyType, SmCurvatureType, SmBlendEndType
[DropCurveFail], [DropCurveFailArgs], [CreateUvTrimCurvePathType]SmDropCurveFail (operator=, UnInit, Set), SmCreateUVTrimCurvePathType
[lift_second_derivative], [lift_third_derivative]smsurf_LiftSecondDerivative, smsurf_LiftThirdDerivative
[scale_step_angular_derivatives]smsurf_ScaleSTEPAngularDerivatives
[evaluate_geometric], [GeometricProperties]smsurf_EvaluateGeometric
[compute_surface_point_type], [LocalSurfaceType], [SurfaceSideType]smsurf_ComputeSurfacePointType, SmLocalSurfaceType, SmSurfaceSideType
[drop_vectors]smsurf_DropVectors
[surface_cache]smsurf_GetSurfaceCache
[original_surface]sm_GetOriginalSurface (static)
[cc_local_solve]sm_CCLocalSolve (static)
[merge_double_arrays]sm_MergeDoubleArrays (static)
[convert_to_parameter_delta]sm_ConvertToParameterDelta (static)
[cs_are_perpen_disjoint]sm_CsArePerpenDisjoint (static)
[intersect_and_split], [intersect_curve_and_split]sm_IntersectAndSplit, sm_IntersectCurveAndSplit (static)
[set_up_breaks]sm_SetUpBreaks (static)
[map_uv], [is_even]s_MapUV, s_IsEven (static)
[LsiGlobalSolver]SmLSIGlobalSolver (BranchMayContainAnswers)
[IsoCurveLengthIntegrand]SmIsoCurveLengthIFEO (constructor)

Upstream tests reaching this unit

SM_API_test:TestSmPrincipalDirectionPairing, 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