Units / query
query.api_queries partial
- Layer
- 49
- Upstream lines
- 809
- Functions
- 27
- Rust module
query::api_queries
Source: crates/solidcore/src/query/api_queries.rs
Upstream: source/SM_API/src/SmApiQueries.cpp
Notes
27 fns; largest: SmApiBrepRelationship, SmApiSurfaceClosestPoint, SmApiFaceGetBoundaryLoops, SmApiFaceClosestPoint; entry points: SmApiBrepBoundingBox, SmApiBrepClosestPoint, SmApiBrepClosestPointAll, SmApiBrepDistance, SmApiBrepIsManifoldSolid, SmApiBrepRelationship, SmApiCurveClosestPoint, SmApiCurveClosestPointAll, SmApiEdgeBoundingBox, SmApiEdgeClassifyParameter, SmApiEdgeClosestPoint, SmApiEdgeParameterRange, SmApiEdgeTangent, SmApiFaceBoundingBox, SmApiFaceClassifyUV, SmApiFaceClosestPoint, SmApiFaceGetBoundaryLoops, SmApiFaceInternalPoint, SmApiFindEdge, SmApiFindFaces, SmApiGetClosestPoint, SmApiGetEdges, SmApiGetFaces, SmApiSurfaceClosestPoint, SmApiVertexGetPoint; 24 upstream test entry points reach this unit PORTED (PR #125): public query orchestration and structured results in query::api_queries, including the wired query.face_p2 classifier. Native SmApi* oracle on concrete lines, circles, ellipses, cubic/C0 B-splines, planes, patches, rational cylinders/spheres, analytic surfaces of revolution, boxes, vertex loops and holed faces. Difftest: 1203 cases (403 fixed + 800 fixed-seed generated), 587 pass bit-identical, 0 failed, 616 deferred: query.brep 335, query.face_p1 12, query.face_p3 45, surface.surface_point_solve_p3 61, topology.brep_p1 114, topology.brep_p2 42, topology.edgeuse_p3 7. No absolute floors; perturb detects 587/587. The 25 native null contracts are FFI tests, not synthetic Rust differential passes. Five FFI tests cover layout/constructor safety, null contracts and missing-curve guards; 396 isolated missing-curve probes finish without a crash or timeout. Two core tests cover GetPoint parameter advances and ignored ordinary evaluation failures. Face closest-point adapter builds caches after validating its face handle. Cases cover all five B-rep relationship classes, operand reversal, C0 left tangents, zero-edge loops, holes and 21 fully compared analytic seam/axis drops. Topology imports restore exact native types, upward face-use links, trim flags and ownership. Curve/B-rep solves retain SM_ZONE_TOL_3D; surface grouping uses the surface zone tolerance and caller Kernel. No incoming UNPORTED(query.api_queries) sites. Re-run after merging PR #106 (surface.surface_point_solve_p3 wired, 2026-10-15): 1203 cases, 646 pass, 557 deferred (query.brep 335, query.face_p1 12, query.face_p3 45, surface.surface_p8 2, topology.brep_p1 114, topology.brep_p2 42, topology.edgeuse_p3 7), 0 failed, max_rel_err 0.
Difftest
- Cases
- 1,203
- Passed
- 648
- Deferred
- 555
- Failed
- 0
- Both errored
- 0
- Max rel. error
- 0.0
- Tolerance
- 1e-09 rel.
- Seeds
- 16
Blocked by
| Unported unit | Deferred cases |
|---|---|
query.brep claimed | 335 |
topology.brep_p1 claimed | 114 |
query.face_p3 claimed | 45 |
topology.brep_p2 claimed | 42 |
query.face_p1 claimed | 12 |
topology.edgeuse_p3 claimed | 7 |
Report JSON (per-case results)
Dependencies
Depends on: curve.curve_p2 green geom.extent1d green geom.extent3d green geom.object partial geom.solution_array partial geom.tol green geom.vector2d green geom.vector3d green intersect.point_class partial intersect.topology_solver_p2 partial query.brep claimed query.edge partial topology.brep_p1 claimed topology.edge partial
Soft dependencies: curve.curve_p1 partial geom.tools partial query.face_p1 claimed query.face_p2 partial query.face_p3 claimed surface.surface_p2 partial surface.surface_p5 green topology.brep_p2 claimed topology.edgeuse_p1 partial topology.face_p2 partial topology.face_p4 claimed topology.loopuse partial topology.shell partial topology.vertex partial
Dependents: audit.recursion todo
Soft dependents: none
Upstream functions
| Upstream function | Defined at | Lines | Rust (from the file header) |
|---|---|---|---|
SmApiGetClosestPoint | SmApiQueries.cpp:34 | 34 | [get_closest_point], [brep_closest_point], [brep_closest_point_all] |
sm_CountContainedSamples | SmApiQueries.cpp:77 | 38 | count_contained_samples, point_in_solid (private) |
sm_PointInSolid | SmApiQueries.cpp:117 | 10 | count_contained_samples, point_in_solid (private) |
SmApiBrepRelationship | SmApiQueries.cpp:151 | 71 | [brep_relationship], [brep_distance] |
SmApiBrepDistance | SmApiQueries.cpp:232 | 11 | [brep_relationship], [brep_distance] |
SmApiGetEdges | SmApiQueries.cpp:250 | 17 | [get_edges], [get_faces], [find_edge], [find_faces] |
SmApiGetFaces | SmApiQueries.cpp:274 | 17 | [get_edges], [get_faces], [find_edge], [find_faces] |
SmApiFaceGetBoundaryLoops | SmApiQueries.cpp:303 | 59 | [face_get_boundary_loops] |
SmApiFindEdge | SmApiQueries.cpp:369 | 19 | [get_edges], [get_faces], [find_edge], [find_faces] |
SmApiFindFaces | SmApiQueries.cpp:395 | 19 | [get_edges], [get_faces], [find_edge], [find_faces] |
SmApiCurveClosestPoint | SmApiQueries.cpp:422 | 38 | [curve_closest_point], [curve_closest_point_all] |
SmApiCurveClosestPointAll | SmApiQueries.cpp:469 | 43 | [curve_closest_point], [curve_closest_point_all] |
SmApiSurfaceClosestPoint | SmApiQueries.cpp:526 | 70 | [surface_closest_point] |
SmApiBrepClosestPoint | SmApiQueries.cpp:605 | 35 | [get_closest_point], [brep_closest_point], [brep_closest_point_all] |
SmApiBrepClosestPointAll | SmApiQueries.cpp:649 | 41 | [get_closest_point], [brep_closest_point], [brep_closest_point_all] |
SmApiBrepIsManifoldSolid | SmApiQueries.cpp:701 | 14 | [brep_is_manifold_solid], [brep_bounding_box] |
SmApiBrepBoundingBox | SmApiQueries.cpp:975 | 24 | [brep_is_manifold_solid], [brep_bounding_box] |
SmApiFaceBoundingBox | SmApiQueries.cpp:1042 | 24 | [face_bounding_box], [face_internal_point], [face_classify_uv], [face_closest_point] |
SmApiFaceInternalPoint | SmApiQueries.cpp:1137 | 14 | [face_bounding_box], [face_internal_point], [face_classify_uv], [face_closest_point] |
SmApiFaceClassifyUV | SmApiQueries.cpp:1161 | 28 | [face_bounding_box], [face_internal_point], [face_classify_uv], [face_closest_point] |
SmApiFaceClosestPoint | SmApiQueries.cpp:1199 | 44 | [face_bounding_box], [face_internal_point], [face_classify_uv], [face_closest_point] |
SmApiEdgeBoundingBox | SmApiQueries.cpp:1301 | 24 | [edge_bounding_box], [edge_closest_point], [edge_parameter_range], [edge_classify_parameter], [edge_tangent] |
SmApiEdgeClosestPoint | SmApiQueries.cpp:1364 | 27 | [edge_bounding_box], [edge_closest_point], [edge_parameter_range], [edge_classify_parameter], [edge_tangent] |
SmApiEdgeParameterRange | SmApiQueries.cpp:1399 | 17 | [edge_bounding_box], [edge_closest_point], [edge_parameter_range], [edge_classify_parameter], [edge_tangent] |
SmApiEdgeClassifyParameter | SmApiQueries.cpp:1426 | 34 | [edge_bounding_box], [edge_closest_point], [edge_parameter_range], [edge_classify_parameter], [edge_tangent] |
SmApiEdgeTangent | SmApiQueries.cpp:1469 | 23 | [edge_bounding_box], [edge_closest_point], [edge_parameter_range], [edge_classify_parameter], [edge_tangent] |
SmApiVertexGetPoint | SmApiQueries.cpp:1500 | 14 | [vertex_get_point] |
Module file-header table (12 rows)
| Rust | Upstream |
|---|---|
[curve_closest_point], [curve_closest_point_all] | SmApiCurveClosestPoint, SmApiCurveClosestPointAll |
[surface_closest_point] | SmApiSurfaceClosestPoint |
[get_closest_point], [brep_closest_point], [brep_closest_point_all] | SmApiGetClosestPoint, SmApiBrepClosestPoint, SmApiBrepClosestPointAll |
[brep_relationship], [brep_distance] | SmApiBrepRelationship, SmApiBrepDistance |
[get_edges], [get_faces], [find_edge], [find_faces] | SmApiGetEdges, SmApiGetFaces, SmApiFindEdge, SmApiFindFaces |
[face_get_boundary_loops] | SmApiFaceGetBoundaryLoops |
[brep_is_manifold_solid], [brep_bounding_box] | SmApiBrepIsManifoldSolid, SmApiBrepBoundingBox |
[face_bounding_box], [face_internal_point], [face_classify_uv], [face_closest_point] | SmApiFaceBoundingBox, SmApiFaceInternalPoint, SmApiFaceClassifyUV, SmApiFaceClosestPoint |
[edge_bounding_box], [edge_closest_point], [edge_parameter_range], [edge_classify_parameter], [edge_tangent] | SmApiEdgeBoundingBox, SmApiEdgeClosestPoint, SmApiEdgeParameterRange, SmApiEdgeClassifyParameter, SmApiEdgeTangent |
[vertex_get_point] | SmApiVertexGetPoint |
count_contained_samples, point_in_solid (private) | sm_CountContainedSamples, sm_PointInSolid |
solution_point (private) | SmSolution::GetPoint |
Upstream tests reaching this unit
SM_API_test:TestSmIntersectCurveSurface, SM_API_test:TestSmGetClosestPoint, SM_API_test:TestSmGetEdges, SM_API_test:TestSmGetFaces, SM_API_test:TestSmFindFaces, SM_API_test:TestSmFindEdge