Units / query
query.face_p2 partial
- Layer
- 43
- Upstream lines
- 1,161
- Functions
- 7
- Rust module
query::face::p2
Source: crates/solidcore/src/query/face/p2.rs
Upstream: source/SMLib/inc/SmProtoTopology.h, source/SMLib/src/SmFace.cpp, source/SMLib/src/SmProtoTopology.cpp
Notes
PARTIAL: difftest 1344 cases (1044 fixture: grids over the 13 exactly exported faces of the upstream .smb files Endcap, Mouse, box_with_large_fillet, disk, ellips_ts2, plane_circ, plane_square; points on, near and at the ends of every trim curve at offsets 0..1e-3; target-loop selections on ellips_ts2's face with two inner loops; SM_API_test TestSmCreateRectangle's 10x6 rectangle at the origin and at 1e10 on a real SmPlane; sm_ClassifyParamOnFaces face pairs; SmProtoVertex containment at the tolerance/capture limits; CurveOnClassify; 300 generated incl. tiny/huge B-spline and plane faces, tolerance edits and out-of-domain points), 1271 pass bit-identical (max_rel_err 0), 0 failed, 73 deferred (topology.face_p2 38: SmLoop::ContainsUVPoint for points on a domain side runs SmSurface::GetSingularities (surface.surface_p3, merged), which stops at SmFace::GetTolerance of the face-owned surface (SmTol::GetApproxTol3d on an owner handle without a Brep); intersect.curve_class_p2 20: SmCurveClassification::ReSet, the first call of CurveOnClassify, whose body also needs curve_class_p5/p7/p9 and topology.face_p4 GetEdges; topology.edgeuse_p3 15: GetOrCreateUVTrimCurve of faces without trim curves); --perturb SENSITIVE. Not compared: PointClassify's SmTrimSrfCache branch (the shim deletes the cache a file read leaves; B-rep surfaces carry no object cache in the port) and faces with surfaces of revolution/extrusion/cones/spheres/tori (the shared export carries them as B-spline parts). Built on topology.loopuse (PR #102: loopuse::vertices). Wired: SmProtoVertex::ContainsPoint in ProtoTopologyManager::find_proto_vertex / which_pv_to_combine (topology.proto_topology_p1: 63 cases no longer deferred). Not wired, still UNPORTED(query.face_p2): surface::trim_srf_cache, intersect::ray_tracer, intersect::topology_solver p1 (callers hold object handles without a Brep) and the CurveOnClassify calls of topology::face::p2 / intersect::topology_solver p2 (behind UNPORTED(intersect.curve_class_p4)). CO-PORTED in intersect.curve_class_p5 (PR #150): CurveOnClassify vertex handle mapping -> CurveOnClassifyObjects::vertex and ClassGeometry callback bound; IntersectVertices now calls p5. Existing ReSet and classification stubs are retained. Merge of PR #65: ClassifyFaceInterval (p7) and IntersectVertices (p5) both wired; difftest now 1344 cases, 1271 passed, 0 failed, 73 deferred.
Difftest
- Cases
- 1,344
- Passed
- 1,271
- Deferred
- 73
- Failed
- 0
- Both errored
- 27
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
topology.face_p2 partial | 38 |
intersect.curve_class_p2 claimed | 20 |
topology.edgeuse_p3 claimed | 15 |
Report JSON (per-case results)
Dependencies
Depends on: geom.a_object partial geom.extent2d green geom.object partial geom.tol green geom.vector3d green intersect.curve_class_p1 partial intersect.point_class partial topology.face_p2 partial topology.face_p4 claimed
Soft dependencies: curve.curve_p2 green curve.curve_p4 partial geom.vector2d green intersect.curve_class_p2 claimed intersect.curve_class_p5 partial intersect.curve_class_p7 partial intersect.curve_class_p9 partial nurbs.b_spline_surface_p1 green query.loop green surface.surface_cache_p3 partial surface.surface_p1 partial surface.surface_p2 partial topology.edge partial topology.vertex partial
Dependents: query.face_p1 claimed query.face_p3 claimed
Soft dependents: blend.fillet_solver_p5 claimed blend.fillet_standard_solver_p2 todo boolean.topology_intersector_p1 partial boolean.topology_intersector_p3 claimed primitive.primitive_creation_p3 todo query.api_queries partial
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmProtoVertex::DistanceTo | SmProtoTopology.h:480 | 1 | [proto_vertex_distance_to] |
SmProtoTopologyManager::GetCaptureDistance | SmProtoTopology.h:780 | 1 | [ProtoTopologyManager::capture_distance] |
SmFace::CurveOnClassify | SmFace.cpp:8525 | 333 | [curve_on_classify], [CurveOnClassifyObjects] |
SmFace::PointClassify | SmFace.cpp:11996 | 750 | [point_classify], [PointClassifyOptions] |
sm_ClassifyParamOnFaces | SmProtoTopology.cpp:189 | 68 | [classify_param_on_faces] |
SmProtoVertex::GetCaptureDistance | SmProtoTopology.cpp:1902 | 2 | [proto_vertex_capture_distance] |
SmProtoVertex::ContainsPoint | SmProtoTopology.cpp:1910 | 6 | [proto_vertex_contains_point] |
Module file-header table (10 rows)
| Rust | Upstream |
|---|---|
[point_classify], [PointClassifyOptions] | SmFace::PointClassify |
[curve_on_classify], [CurveOnClassifyObjects] | SmFace::CurveOnClassify |
[classify_param_on_faces] | sm_ClassifyParamOnFaces (file static) |
[proto_vertex_distance_to] | SmProtoVertex::DistanceTo |
[proto_vertex_capture_distance] | SmProtoVertex::GetCaptureDistance |
[proto_vertex_contains_point] | SmProtoVertex::ContainsPoint |
[ProtoTopologyManager::capture_distance] | SmProtoTopologyManager::GetCaptureDistance (already in topology::proto_topology) |
[face_vertices] | SmFace::GetVertices(SmTArray&, ..) (CO-PORTED, topology.face_p4) |
[face_loop] | the SmLoop / SmEdgeuse / SmEdge / SmFace data SmLoop::ContainsUVPoint reads |
ClassObject for EntityRef | the SmObject* of a classification of B-rep topology |
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