Units / topology
topology.face_p2 partial
- Layer
- 35
- Upstream lines
- 1,827
- Functions
- 32
- Rust module
topology::face::p2
Source: crates/solidcore/src/topology/face/p2.rs
Upstream: source/SMLib/inc/SmFace.h, source/SMLib/src/SmFace.cpp
Notes
PARTIAL: difftest 2692 cases (1176 fixture: upstream-derived (smMergeTest GetPointsInFace(1) on plane and B-spline faces, TestSmBrep ComputePreciseProperties layouts for all 63 flag sets and the iso-curve/area integrands at offset origins, thicknesses 0/0.1, accuracies 1e-3/1e-5, smTopoTest CreateCurvesByTrimming, TestSmTrimmedSurfaces GetOuterLoops) plus edge cases (degenerate and EFF_ZERO-limit UV domains, sm_FixUVTrimCurves gap limits EFF_ZERO/10 and min-size/20, tiny 1e-4 / huge 1e4 / pinched / sub-domain B-spline faces, real SmPlanes, sm_CheckSeamCrossing 90% jumps); 16 generated + 1500 more generated in code), 2322 pass, 0 fail, 370 deferred (topology.edgeuse_p3 156, curve.crv_on_surf 74, topology.face_p3 63 (CalculateUVDomainFromUVTrimCurves wired by topology.face_p1, PR #148; now CreateUVTrimCurves), query.face_p3 47, intersect.curve_class_p4 30; the 112 thick-face cases deferred on surface.offset_surface pass since PR #62 wired SmOffsetSurface::EvaluateSimple); mass.integrator wired in PR #119: 29 previously deferred cases pass and 4 now reach offset evaluation, max_rel_err 0; --perturb SENSITIVE. Runner imports the shim's exported graph into topology::Brep (as topology.vertexuse) with each face's m_pFU / m_vUVDomain / m_bRectangularTrim / m_sZoneTol3d / surface owner, SmPlanes as planes and vertex/face gap UVs; ops on faces or edges whose surface (revolution/extrusion/cone/sphere/torus subclasses) or edge curve (ellipse) the export cannot carry exactly report inexact_geometry on both sides. GetPointsInFace with more than one point compares only the draw-invariant count, U values and V grid slots (upstream srand(time)). Never compared (always deferred): sms_ReviewStartAndStopOnSeamCrvClassifies (GetIvlBound_EdgeuseObj), CalculateAnInternalPoint past its early returns (sm_FaceClassifyUVLine), CreateCurvesByTrimming of non-degenerate curves (SmCurveClassification), CreateCurvesFromFace edge loops (NormalizedEvaluate), sm_AreConnected (ComputeUVPoint stubs). Face record gains faceuse, uv_domain, rectangular_trim, tolerance (Face::new = SmFace()). Wired UNPORTED(topology.face_p2) GetUVDomain/GetTolerance in topology::vertexuse (its shim/runner now export/import the face members and SmPlanes). Remaining UNPORTED(topology.face_p2) sites (geom::object, geom::solution_array, geom::tol, intersect::point_class, intersect::curve_class::p1, intersect::topology_solver::p1, surface::plane::p2, surface::surface::p1/p7, surface::surface_cache::p1) hold opaque face handles without a Brep (plan/findings.md). Plan notes: 32 fns; largest: sm_FixUVTrimCurves, SmFace::GetPointsInFace, SmODEIsoCurveLengthIFEO::Evaluate, SmFace::CreateCurvesByTrimming; cycle back-edges (call into later units; stub or co-port): topology.edge(9), topology.vertexuse(5), topology.vertex(4), topology.loopuse(3), mass.integrator(2), query.face_p2(2), topology.edgeuse_p3(2), heal.gap(1), query.face_p3(1), topology.face_p1(1); unit-SCC #22 (220 units); hazards: clock,rng; 319 upstream test entry points reach this unit; CO-PORTED in topology.edgeuse_p1 (PR #55): SmFace::m_pSurface -> topology::Face::surface; CO-PORTED in topology.edgeuse_p2 (PR #87): SmFace::m_vUVDomain, GetUVDomain, m_sZoneTol3d, GetTolerance -> topology::Face::uv_domain, topology::Face::tolerance
Difftest
- Cases
- 2,692
- Passed
- 2,322
- Deferred
- 370
- Failed
- 0
- Both errored
- 494
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
topology.edgeuse_p3 claimed | 156 |
curve.crv_on_surf partial | 74 |
topology.face_p3 claimed | 63 |
query.face_p3 claimed | 47 |
intersect.curve_class_p4 claimed | 30 |
Report JSON (per-case results)
Dependencies
Depends on: curve.crv_on_surf partial curve.curve_p2 green geom.extent1d green geom.extent2d green geom.object partial geom.tol green geom.vector2d green geom.vector3d green intersect.curve_class_p1 partial intersect.point_class partial nurbs.b_spline_curve_p1 green surface.offset_surface green surface.surface_p2 partial surface.surface_p7 partial topology.edgeuse_p1 partial topology.topology green
Soft dependencies: curve.curve_p4 partial curve.curve_p6 green geom.context green intersect.curve_class_p4 claimed nurbs.b_spline_curve_n_lib green nurbs.b_spline_curve_p2 green surface.surface_p1 partial surface.surface_p5 green
Dependents: blend.fillet_executive_p1 todo blend.hcr claimed boolean.merge_p1 partial boolean.merge_p2 todo boolean.merge_p4 todo boolean.topology_intersector_p1 partial boolean.topology_intersector_p2 claimed boolean.topology_intersector_p3 claimed heal.face_props partial heal.heal_data_p3 partial heal.stitch_p1 claimed mass.integrator partial offset.offset_executive_p1 claimed offset.offset_executive_p2 claimed primitive.primitive_creation_p1 claimed primitive.primitive_creation_p3 todo query.face_p1 claimed query.face_p2 partial query.face_p3 claimed query.face_p4 claimed topology.brep_p1 claimed topology.brep_p2 claimed topology.brep_p3 claimed topology.brep_p4 claimed topology.brep_p5 claimed topology.brep_p7 claimed topology.brep_p9 claimed topology.edge partial topology.edgeuse_p2 partial topology.face_p1 partial topology.face_p3 claimed topology.face_p4 claimed topology.loopuse partial topology.proto_topology_p2 partial topology.topology_traverser partial topology.trimming_tools partial topology.vertexuse partial
Soft dependents: blend.fillet_corner_p1 todo blend.fillet_corner_p2 todo 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_geom_p5 todo blend.fillet_geom_p6 todo blend.fillet_solver_p1 claimed blend.fillet_solver_p2 todo blend.fillet_solver_p3 todo blend.fillet_solver_p5 claimed blend.fillet_standard_solver_p1 claimed blend.fillet_standard_solver_p2 todo boolean.merge_p5 partial heal.gap partial heal.heal_data_p1 partial offset.offset_geometry_creation claimed primitive.primitive_creation_p2 todo query.api_queries partial query.brep claimed query.edge partial query.loop green query.poly partial query.tess partial sweep.rotational_sweep_geometry partial sweep.topology_sweep claimed sweep.trans_sweep_geometry partial topology.brep_cache partial topology.brep_p10 claimed topology.brep_p8 claimed topology.edgeuse_p3 claimed topology.vertex partial
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmFace::GetSurface | SmFace.h:652 | 1 | [surface], [uv_domain], [rectangular_trim], [tolerance] |
SmFace::GetUVDomain | SmFace.h:653 | 1 | [surface], [uv_domain], [rectangular_trim], [tolerance] |
SmFace::GetRectangularTrim | SmFace.h:654 | 1 | [surface], [uv_domain], [rectangular_trim], [tolerance] |
SmFace::GetOuterLoops | SmFace.h:681 | 1 | [loops], [outer_loops] |
SmFace::SetUVDomain | SmFace.h:702 | 1 | [set_uv_domain], [set_faceuse] |
SmFace::SetFaceuse | SmFace.h:711 | 1 | [set_uv_domain], [set_faceuse] |
SmFace::GetTolerance | SmFace.h:791 | 1 | [surface], [uv_domain], [rectangular_trim], [tolerance] |
SmFace::GetClassString | SmFace.h:997 | 1 | [TYPE], [TYPE_STRING], [CLASS_STRING], [class_type], [is_kind_of] |
SmFace::GetClassType | SmFace.h:997 | 1 | [TYPE], [TYPE_STRING], [CLASS_STRING], [class_type], [is_kind_of] |
SmFace::GetType | SmFace.h:997 | 1 | [TYPE], [TYPE_STRING], [CLASS_STRING], [class_type], [is_kind_of] |
SmFace::GetTypeString | SmFace.h:997 | 1 | [TYPE], [TYPE_STRING], [CLASS_STRING], [class_type], [is_kind_of] |
sm_CheckSeamCrossing | SmFace.cpp:132 | 97 | [check_seam_crossing] |
SmFace::CalculateAnInternalPoint | SmFace.cpp:1171 | 85 | [calculate_an_internal_point] |
sm_AreConnected | SmFace.cpp:1512 | 112 | [are_connected], [Connection] |
sms_ReviewStartAndStopOnSeamCrvClassifies | SmFace.cpp:3281 | 76 | [review_start_and_stop_on_seam_crv_classifies], [SeamCrvReview] |
SmPrecisePropertyLayout::SmPrecisePropertyLayout | SmFace.cpp:5623 | 12 | [PrecisePropertyLayout] |
SmPrecisePropertyLayout::Add | SmFace.cpp:5637 | 7 | [PrecisePropertyLayout] |
SmODEIsoCurveLengthIFEO::SmODEIsoCurveLengthIFEO | SmFace.cpp:5695 | 7 | [OdeIsoCurveLength] |
SmODEIsoCurveLengthIFEO::Evaluate | SmFace.cpp:5713 | 206 | [OdeIsoCurveLength] |
SmODEAreaIFEO::Evaluate | SmFace.cpp:5925 | 50 | [OdeArea] |
SmFace::CreateCurvesByTrimming | SmFace.cpp:6809 | 184 | [create_curves_by_trimming], [TrimmedCurves] |
SmFace::CreateCurvesFromFace | SmFace.cpp:7008 | 157 | [create_curves_from_face], [FaceCurves] |
sm_FixUVTrimCurves | SmFace.cpp:7451 | 308 | [fix_uv_trim_curves] |
sm_FindBestUVCurve | SmFace.cpp:7769 | 152 | [find_best_uv_curve] |
SmRescueSurfaceOwner::SmRescueSurfaceOwner | SmFace.cpp:7933 | 3 | [RescueSurfaceOwner] |
SmRescueSurfaceOwner::~SmRescueSurfaceOwner | SmFace.cpp:7936 | 4 | |
SmFace::GetFaceuses | SmFace.cpp:10142 | 17 | [faceuses], [upward_faceuse] |
SmFace::GetLoops | SmFace.cpp:10190 | 31 | [loops], [outer_loops] |
SmFace::GetUpwardFaceuse | SmFace.cpp:10421 | 19 | [faceuses], [upward_faceuse] |
sm_RemoveSuspectSplitAtSeamUVTrimCurves | SmFace.cpp:17705 | 62 | [remove_suspect_split_at_seam_uv_trim_curves] |
SmFace::GetPointsInFace | SmFace.cpp:21167 | 223 | [points_in_face], [PointsInFace] |
SmFace::IsKindOf | SmFace.cpp:21395 | 4 | [TYPE], [TYPE_STRING], [CLASS_STRING], [class_type], [is_kind_of] |
Module file-header table (22 rows)
| Rust | Upstream |
|---|---|
[TYPE], [TYPE_STRING], [CLASS_STRING], [class_type], [is_kind_of] | SmFace::GetType, GetTypeString, GetClassString, GetClassType, IsKindOf |
[surface], [uv_domain], [rectangular_trim], [tolerance] | SmFace::GetSurface, GetUVDomain, GetRectangularTrim, GetTolerance (SM_USE_OLDTOL) |
[set_uv_domain], [set_faceuse] | SmFace::SetUVDomain, SetFaceuse |
[faceuses], [upward_faceuse] | SmFace::GetFaceuses, GetUpwardFaceuse |
[loops], [outer_loops] | SmFace::GetLoops, GetOuterLoops |
[check_seam_crossing] | sm_CheckSeamCrossing (static) |
[calculate_an_internal_point] | SmFace::CalculateAnInternalPoint |
[are_connected], [Connection] | sm_AreConnected (static) |
[review_start_and_stop_on_seam_crv_classifies], [SeamCrvReview] | sms_ReviewStartAndStopOnSeamCrvClassifies |
[PrecisePropertyLayout] | SmPrecisePropertyLayout (constructor, Add) |
[OdeIsoCurveLength] | SmODEIsoCurveLengthIFEO (constructor, Evaluate) |
[OdeArea] | SmODEAreaIFEO::Evaluate |
[create_curves_by_trimming], [TrimmedCurves] | SmFace::CreateCurvesByTrimming |
[create_curves_from_face], [FaceCurves] | SmFace::CreateCurvesFromFace |
[fix_uv_trim_curves] | sm_FixUVTrimCurves |
[find_best_uv_curve] | sm_FindBestUVCurve (static) |
[RescueSurfaceOwner] | SmRescueSurfaceOwner (constructor, destructor) |
[remove_suspect_split_at_seam_uv_trim_curves] | sm_RemoveSuspectSplitAtSeamUVTrimCurves |
[points_in_face], [PointsInFace] | SmFace::GetPointsInFace |
vertex_edges (private) | SmVertex::GetEdges without face filter (CO-PORTED, topology.vertex) |
edge_edgeuses (private) | SmEdge::GetEdgeuses without filters (CO-PORTED, topology.edge) |
loopuse_vertexuses (private) | SmLoopuse::GetVertexuses without filter (unit topology.loopuse) |
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