Units / surface
surface.surf_of_revolution_p3 partial
- Layer
- 24
- Upstream lines
- 1,620
- Functions
- 12
- Rust module
surface::surf_of_revolution::p3
Source: crates/solidcore/src/surface/surf_of_revolution/p3.rs
Upstream: source/SMLib/src/SmSurfOfRevolution.cpp
Notes
PARTIAL: after merging main (surface.torus, surface.cone_p1, surface.surface_p1): 26705 cases, 26687 bit-identical, 0 failed, 18 deferred (surface.cone_p1 18: the Rust side cannot build the SmCone operand); after merging surface.sphere (PR #100) the IntersectWithSphere cases build the Rust SmSphere::CreateCanonical operand and run (26 cases now compared); wired surface.torus and surface.cone_p1 Transform/ReadFromDB back-edges (transform_using with the derived iso maker); ConvertDomainFromNURBSToSTEP body shared with surface.surface_p1. Before the merge: difftest 26705 cases (55 fixture + 3695 review-adversarial fixture + 1092 review-2 scale fixture + 4654 review-2 adversarial fixture + 240 review-3 update fixture + 5829 review-3 adversarial fixture + 10240 review-3b adversarial fixture + 900 generated), 26118 bit-identical (max_rel_err 0), 0 failed, 587 deferred: surface.sphere 26 and surface.cone_p1 18 (IntersectWithSphere / IntersectWithCone cases: the Rust side cannot build the SmSphere / SmCone operand), surface.surface_p1 543 (IntersectWithSurfOfRevolution without approximation tolerance: the bounding box zone tolerance needs SmSurface::GetFace; the paths without exact polar conversion, SmSurface::LocalPointSolve (surface.surface_p5) and SmSTEPSurface (surface.surface_p1), are ported but not reached by these inputs). Perturbation: 26118/26118 detected. Review fixes: FFI accepts zero-width drop/intersect/update domains and zero tolerances (Reparameterize keeps positive extents); UNPORTED(surface.surf_of_revolution_p1) and UNPORTED(surface.plane_p1) CreateIsoParametricCurve stubs in surface.surface_cache_p1 retagged to surface.surface_cache_p1 (iso curves stored as BSplineCurve). Review fixes 2: FFI accepts any finite Transform / rebuild scale (zero, tiny, negative; the SM_EFF_ZERO branch of Transform is now compared); intersection bounding box error carries the intersection op path; SurfaceKind::SurfOfRevolution added to the surface.surface_p7 dispatchers (EvaluateNormal / IsClosed base bodies, IsPlanar through SmBSplineSurface::CalculateBoundingBox). After merging main: SurfaceKind::SurfOfRevolution added to intersect.surface_silhouette (EvaluateGeometric / EvaluateNormalSection: no override, stubbed to surface.surface_p3 as for B-splines) and surface.surface_cache_p3 BuildTreeBase (its NURB, SmSurfOfRevolution::MakeNurb on a copy when missing). Review fixes 3: runner maps SolidError::InvalidInput to 1007 (SM_ERR_INVALID_INPUT; SmBSplineCurve::Trim via AdjustSTEPInterval in UpdateAnalyticalDomain with a B-spline generator and a zero-width U domain); after merging main, SurfaceKind::SurfOfRevolution added to the intersect.surface_intersector_p2 IsSingularity dispatcher (base body, stubbed to surface.surface_p5). Also covers the inherited SmBSplineSurface::Reverse / SwapUV of a surface of revolution (through SmSurface dispatch). Wired the UNPORTED(surface.surf_of_revolution_p3) SmSurfOfRevolution::ReadFromDB stub in SmSurface::ReadFromDB: SurfaceKind::SurfOfRevolution joins the SmSurface dispatch (Surface::reverse / swap_uv / reparameterize / transform / drop_point_fast / convert_uv_* now take the kernel; STEPInversion, AdjustSTEPUVDomain, TrimWithDomain stubbed to surface.surf_of_revolution_p2). Extended curve.ellipse_p1 (PolarConversion::read_from_db_with_curve: the bHasCurve branch of SmPolarConversion::ReadFromDB) and geom.solution_array (SolutionObject::natural_uv_domain for surface handles). Co-ports SmSurface::ConvertDomainFromNURBSToSTEP (surface.surface_p1). MakeNurbWithSweepParams lives in surface::surf_of_revolution::p1 (co-ported there by PR #15). 12 fns; largest: SmSurfOfRevolution::IntersectWithSurfOfRevolution, SmSurfOfRevolution::DropPointFast, SmSurfOfRevolution::RebuildSTEPFromNURBParameters, SmSurfOfRevolution::ConvertUVFromSTEPToNURBS; cycle back-edges (call into later units; stub or co-port): surface.surface_p5(2), surface.surface_p1(1); unit-SCC #22 (220 units); 317 upstream test entry points reach this unit Review PR #106 recertification: 26705 cases, 26661 pass, 44 deferred, 0 failed, max_rel_err=0.0; deferred: surface.cone_p1 18, surface.sphere 26.
Difftest
- Cases
- 26,705
- Passed
- 26,687
- Deferred
- 18
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
surface.cone_p1 green | 18 |
Report JSON (per-case results)
Dependencies
Depends on: curve.curve_p2 green curve.curve_p5 partial curve.iso_curve green geom.axis2_placement green geom.extent1d green geom.extent2d green geom.global_solver partial 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_surface_n_lib_p1 green nurbs.b_spline_surface_p1 green nurbs.b_spline_surface_p2 partial surface.surf_of_revolution_p1 green surface.surface_p2 partial topology.database_io green
Soft dependencies: curve.curve_p1 partial curve.curve_p4 partial curve.curve_p6 green curve.curve_p8 green curve.ellipse_p1 green curve.ellipse_p2 green geom.extent3d green geom.geom_utility_p1 green nlib.srf_basic green nurbs.b_spline_curve_n_lib green nurbs.b_spline_curve_p2 green
Dependents: surface.cone_p2 claimed surface.cone_p3 partial surface.sphere green surface.surf_of_revolution_p2 partial
Soft dependents: blend.fillet_solver_p2 todo
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmSurfOfRevolution::Copy | SmSurfOfRevolution.cpp:385 | 11 | [SurfOfRevolution::copy] |
SmSurfOfRevolution::Reparameterize | SmSurfOfRevolution.cpp:402 | 59 | [SurfOfRevolution::reparameterize] |
SmSurfOfRevolution::MakeNurbWithSweepParams | SmSurfOfRevolution.cpp:957 | 95 | [SurfOfRevolution::make_nurb_with_sweep_params] |
SmSurfOfRevolution::ConvertUVFromSTEPToNURBS | SmSurfOfRevolution.cpp:2089 | 161 | [SurfOfRevolution::convert_uv_from_step_to_nurbs] |
SmSurfOfRevolution::DropPointFast | SmSurfOfRevolution.cpp:2356 | 304 | [SurfOfRevolution::drop_point_fast] |
SmSurfOfRevolution::IntersectWithCone | SmSurfOfRevolution.cpp:4032 | 30 | [SurfOfRevolution::intersect_with_cone] |
SmSurfOfRevolution::IntersectWithSphere | SmSurfOfRevolution.cpp:4069 | 31 | [SurfOfRevolution::intersect_with_sphere] |
SmSurfOfRevolution::IntersectWithSurfOfRevolution | SmSurfOfRevolution.cpp:4107 | 459 | [SurfOfRevolution::intersect_with_surf_of_revolution], [Revolved] |
SmSurfOfRevolution::RebuildSTEPFromNURBParameters | SmSurfOfRevolution.cpp:4995 | 231 | [SurfOfRevolution::rebuild_step_from_nurb_parameters] |
SmSurfOfRevolution::Transform | SmSurfOfRevolution.cpp:5334 | 94 | [SurfOfRevolution::transform] |
SmSurfOfRevolution::UpdateAnalyticalDomain | SmSurfOfRevolution.cpp:5813 | 46 | [SurfOfRevolution::update_analytical_domain] |
SmSurfOfRevolution::ReadFromDB | SmSurfOfRevolution.cpp:6528 | 99 | [SurfOfRevolution::read_from_db] |
Module file-header table (13 rows)
| Rust | Upstream |
|---|---|
[SurfOfRevolution::copy] | Copy |
[SurfOfRevolution::reparameterize] | Reparameterize |
[SurfOfRevolution::make_nurb_with_sweep_params] | MakeNurbWithSweepParams (co-ported in p1) |
[SurfOfRevolution::convert_uv_from_step_to_nurbs] | ConvertUVFromSTEPToNURBS |
[SurfOfRevolution::drop_point_fast] | DropPointFast |
[SurfOfRevolution::intersect_with_cone] | IntersectWithCone |
[SurfOfRevolution::intersect_with_sphere] | IntersectWithSphere |
[SurfOfRevolution::intersect_with_surf_of_revolution], [Revolved] | IntersectWithSurfOfRevolution |
[SurfOfRevolution::rebuild_step_from_nurb_parameters] | RebuildSTEPFromNURBParameters |
[SurfOfRevolution::transform] | Transform |
[SurfOfRevolution::update_analytical_domain] | UpdateAnalyticalDomain |
[SurfOfRevolution::read_from_db] | ReadFromDB |
[SurfOfRevolution::convert_domain_from_nurbs_to_step] | SmSurface::ConvertDomainFromNURBSToSTEP (body in surface::surface::p1) |
Upstream tests reaching this unit
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, SM_API_test:TestSmCreateRectangle, SM_API_test:TestSmCreateRegularPolygon