Units / surface
surface.srf_in_volume partial
- Layer
- 30
- Upstream lines
- 779
- Functions
- 31
- Rust module
surface::srf_in_volume
Source: crates/solidcore/src/surface/srf_in_volume.rs
Upstream: source/SMLib/inc/SmSrfInVolume.h, source/SMLib/src/SmSrfInVolume.cpp
Notes
PARTIAL: difftest 2036 cases (2000 generated + 36 inline; B-spline and plane base surfaces; transform, plain, default and component-constructed twist, unbend and bend volume chains; every owned op), 1968 pass bit-identical, 68 deferred (surface.surface_p4 59: the base surface's STEPInversion reaches SmSurface::GlobalPointSolve once the volume inversion succeeded; surface.srf_in_volume 9: Mirror, MakeExactBSplineOutSurfaceFrom*Space), --perturb 1968/1968, 20000-seed run 19382 pass / 654 deferred / 0 failed; SmSurface::operator== wired (surface.surface_p1). B-spline volumes are not built: they evaluate to SM_ERR on both sides (no USE_VOLUMES in the reference build). Evaluate(uv, 0, 0, bOnlyUpperHalf=FALSE) succeeds as upstream (the out-of-range Duv write is skipped; the shim allocates 32 entries). STEPInversion runs SmVolume::InvEvaluatePoint/InvMapPoint (surface.volume_p2; SM_ERR when the inverse fails or has no point, upstream UB-103) through any map kind; ReadFromDB runs SmVolume::ReadFromDB on the text upstream WriteToDB writes for generated objects (about 4% of cases). Added SurfaceKind::SrfInVolume (boxed) and its arms in surface::surface::p2/p7, surface_cache p1/p2/p3, curve crv_on_surf/iso_curve, intersect::surface_tracer. Plane NURB is made on demand upstream also by const methods: the difftest dump makes it on both sides. SmVolume::Mirror and MakeExactBSplineOutSurfaceFrom{Param,In}Space are in no unit in units.json: dispatch gaps tagged surface.srf_in_volume. Wired UNPORTED(surface.srf_in_volume) SmSrfInVolume::ReadFromDB in surface::surface::p2. 31 fns; largest: SmSrfInVolume::Evaluate, SmSrfInVolume::SmSrfInVolume, SmSrfInVolume::ReadFromDB, SmSrfInVolume::STEPInversion; unit-SCC #22 (220 units); 319 upstream test entry points reach this unit Re-run with surface.surface_point_solve_p3 (PR #106): cases=2036 passed=2025 failed=0 deferred=11 max_rel_err=0.0 blocked_by=surface.srf_in_volume(9),surface.surface_p8(2). Re-run after merging PR #106 (surface.surface_point_solve_p3 wired, 2026-10-15): 2036 cases, 2025 pass, 11 deferred (surface.srf_in_volume 9, surface.surface_p8 2), 0 failed, max_rel_err 0.
Difftest
- Cases
- 2,036
- Passed
- 2,027
- Deferred
- 9
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
surface.srf_in_volume partial | 9 |
Report JSON (per-case results)
Dependencies
Depends on: geom.object partial geom.vector3d green surface.surface_p1 partial surface.surface_p2 partial surface.volume_p1 green surface.volume_p2 partial topology.database_io green
Soft dependencies: geom.axis2_placement green geom.extent2d green geom.vector2d green
Dependents: audit.recursion todo
Soft dependents: none
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmSrfInVolume::SmSrfInVolume | SmSrfInVolume.h:66 | 1 | [SrfInVolume] |
SmSrfInVolume::GetNaturalUVDomain | SmSrfInVolume.h:100 | 1 | [SrfInVolume::natural_uv_domain], [SrfInVolume::step_uv_domain], [SrfInVolume::max_analytic_domain] |
SmSrfInVolume::GetSTEPUVDomain | SmSrfInVolume.h:101 | 1 | [SrfInVolume::natural_uv_domain], [SrfInVolume::step_uv_domain], [SrfInVolume::max_analytic_domain] |
SmSrfInVolume::GetMaxAnalyticDomain | SmSrfInVolume.h:102 | 1 | [SrfInVolume::natural_uv_domain], [SrfInVolume::step_uv_domain], [SrfInVolume::max_analytic_domain] |
SmSrfInVolume::GetDegree | SmSrfInVolume.h:103 | 1 | [SrfInVolume::degree] |
SmSrfInVolume::ConvertUVFromSTEPToNURBS | SmSrfInVolume.h:114 | 2 | [SrfInVolume::convert_uv_from_step_to_nurbs], [SrfInVolume::convert_uv_from_nurbs_to_step] |
SmSrfInVolume::ConvertUVFromNURBSToSTEP | SmSrfInVolume.h:117 | 2 | [SrfInVolume::convert_uv_from_step_to_nurbs], [SrfInVolume::convert_uv_from_nurbs_to_step] |
SmSrfInVolume::SetContext | SmSrfInVolume.h:145 | 3 | |
SmSrfInVolume::OwnsSurface | SmSrfInVolume.h:149 | 1 | [SrfInVolume::owns_surface], [SrfInVolume::owns_volume] |
SmSrfInVolume::OwnsVolume | SmSrfInVolume.h:150 | 1 | [SrfInVolume::owns_surface], [SrfInVolume::owns_volume] |
SmSrfInVolume::GetClassString | SmSrfInVolume.h:301 | 1 | [SrfInVolume::TYPE], [SrfInVolume::type_code], [SrfInVolume::type_string], [SrfInVolume::class_string] |
SmSrfInVolume::GetType | SmSrfInVolume.h:301 | 1 | [SrfInVolume::TYPE], [SrfInVolume::type_code], [SrfInVolume::type_string], [SrfInVolume::class_string] |
SmSrfInVolume::GetTypeString | SmSrfInVolume.h:301 | 1 | [SrfInVolume::TYPE], [SrfInVolume::type_code], [SrfInVolume::type_string], [SrfInVolume::class_string] |
SmSrfInVolume::SmSrfInVolume | SmSrfInVolume.cpp:50 | 69 | [SrfInVolume] |
SmSrfInVolume::SmSrfInVolume | SmSrfInVolume.cpp:128 | 51 | [SrfInVolume] |
SmSrfInVolume::Copy | SmSrfInVolume.cpp:185 | 10 | [SrfInVolume::copy], Clone |
SmSrfInVolume::~SmSrfInVolume | SmSrfInVolume.cpp:202 | 11 | Drop (implicit) |
SmSrfInVolume::operator== | SmSrfInVolume.cpp:220 | 31 | [SrfInVolume::approx_eq] |
SmSrfInVolume::GetKnots | SmSrfInVolume.cpp:320 | 12 | [SrfInVolume::knots] |
SmSrfInVolume::EvaluatePoint | SmSrfInVolume.cpp:495 | 9 | [SrfInVolume::evaluate_point] |
SmSrfInVolume::EvaluateNormal | SmSrfInVolume.cpp:510 | 24 | [SrfInVolume::evaluate_normal] |
SmSrfInVolume::Evaluate | SmSrfInVolume.cpp:540 | 305 | [SrfInVolume::evaluate] |
SmSrfInVolume::EvaluateSimple | SmSrfInVolume.cpp:852 | 30 | [SrfInVolume::evaluate_simple] |
SmSrfInVolume::STEPInversion | SmSrfInVolume.cpp:888 | 49 | [SrfInVolume::step_inversion] |
SmSrfInVolume::Reverse | SmSrfInVolume.cpp:943 | 15 | [SrfInVolume::reverse], [SrfInVolume::swap_uv], [SrfInVolume::trim_with_domain], [SrfInVolume::transform] |
SmSrfInVolume::SplitAt | SmSrfInVolume.cpp:964 | 28 | [SrfInVolume::split_at] |
SmSrfInVolume::SwapUV | SmSrfInVolume.cpp:998 | 17 | [SrfInVolume::reverse], [SrfInVolume::swap_uv], [SrfInVolume::trim_with_domain], [SrfInVolume::transform] |
SmSrfInVolume::Transform | SmSrfInVolume.cpp:1028 | 26 | [SrfInVolume::reverse], [SrfInVolume::swap_uv], [SrfInVolume::trim_with_domain], [SrfInVolume::transform] |
SmSrfInVolume::TrimWithDomain | SmSrfInVolume.cpp:1067 | 18 | [SrfInVolume::reverse], [SrfInVolume::swap_uv], [SrfInVolume::trim_with_domain], [SrfInVolume::transform] |
SmSrfInVolume::ReadFromDB | SmSrfInVolume.cpp:1533 | 53 | [SrfInVolume::read_from_db] |
SmSrfInVolume::IsKindOf | SmSrfInVolume.cpp:1591 | 4 | [SrfInVolume::is_kind_of] |
Module file-header table (25 rows)
| Rust | Upstream |
|---|---|
[SrfInVolume] | SmSrfInVolume |
[SrfInVolume::new] | SmSrfInVolume(SmSurface&, SmBoolean, SmVolume&, ULONG, ULONG, const SmContext*) |
[SrfInVolume::copy], Clone | copy constructor, Copy |
Drop (implicit) | ~SmSrfInVolume |
[SrfInVolume::approx_eq] | operator== |
[SrfInVolume::TYPE], [SrfInVolume::type_code], [SrfInVolume::type_string], [SrfInVolume::class_string] | GetType, GetTypeString, GetClassString (SM_COMMON) |
[SrfInVolume::is_kind_of] | IsKindOf |
[SrfInVolume::surface], [SrfInVolume::volume], [SrfInVolume::in_param_space] | GetSurface, GetVolume, GetInParamSpace |
[SrfInVolume::natural_uv_domain], [SrfInVolume::step_uv_domain], [SrfInVolume::max_analytic_domain] | GetNaturalUVDomain, GetSTEPUVDomain, GetMaxAnalyticDomain |
[SrfInVolume::degree] | GetDegree |
[SrfInVolume::convert_uv_from_step_to_nurbs], [SrfInVolume::convert_uv_from_nurbs_to_step] | ConvertUVFromSTEPToNURBS, ConvertUVFromNURBSToSTEP |
[SrfInVolume::owns_surface], [SrfInVolume::owns_volume] | OwnsSurface, OwnsVolume |
[SrfInVolume::set_owner_flag], [SrfInVolume::make_owner] | SetOwnerFlag, MakeOwner |
[SrfInVolume::set_base_surface], [SrfInVolume::set_volume] | SetBaseSurface, SetVolume |
[SrfInVolume::knots] | GetKnots |
[SrfInVolume::evaluate] | Evaluate |
[SrfInVolume::evaluate_simple] | EvaluateSimple |
[SrfInVolume::evaluate_point] | EvaluatePoint |
[SrfInVolume::evaluate_normal] | EvaluateNormal |
[SrfInVolume::step_inversion] | STEPInversion |
[SrfInVolume::reverse], [SrfInVolume::swap_uv], [SrfInVolume::trim_with_domain], [SrfInVolume::transform] | Reverse, SwapUV, TrimWithDomain, Transform |
[SrfInVolume::split_at] | SplitAt |
[SrfInVolume::create_mirror_surface] | CreateMirrorSurface |
[SrfInVolume::make_exact_b_spline_if_possible] | MakeExactBSplineIfPossible |
[SrfInVolume::read_from_db] | ReadFromDB |
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