solidcore

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 unitDeferred cases
query.brep claimed335
topology.brep_p1 claimed114
query.face_p3 claimed45
topology.brep_p2 claimed42
query.face_p1 claimed12
topology.edgeuse_p3 claimed7

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 functionDefined atLinesRust (from the file header)
SmApiGetClosestPointSmApiQueries.cpp:3434[get_closest_point], [brep_closest_point], [brep_closest_point_all]
sm_CountContainedSamplesSmApiQueries.cpp:7738count_contained_samples, point_in_solid (private)
sm_PointInSolidSmApiQueries.cpp:11710count_contained_samples, point_in_solid (private)
SmApiBrepRelationshipSmApiQueries.cpp:15171[brep_relationship], [brep_distance]
SmApiBrepDistanceSmApiQueries.cpp:23211[brep_relationship], [brep_distance]
SmApiGetEdgesSmApiQueries.cpp:25017[get_edges], [get_faces], [find_edge], [find_faces]
SmApiGetFacesSmApiQueries.cpp:27417[get_edges], [get_faces], [find_edge], [find_faces]
SmApiFaceGetBoundaryLoopsSmApiQueries.cpp:30359[face_get_boundary_loops]
SmApiFindEdgeSmApiQueries.cpp:36919[get_edges], [get_faces], [find_edge], [find_faces]
SmApiFindFacesSmApiQueries.cpp:39519[get_edges], [get_faces], [find_edge], [find_faces]
SmApiCurveClosestPointSmApiQueries.cpp:42238[curve_closest_point], [curve_closest_point_all]
SmApiCurveClosestPointAllSmApiQueries.cpp:46943[curve_closest_point], [curve_closest_point_all]
SmApiSurfaceClosestPointSmApiQueries.cpp:52670[surface_closest_point]
SmApiBrepClosestPointSmApiQueries.cpp:60535[get_closest_point], [brep_closest_point], [brep_closest_point_all]
SmApiBrepClosestPointAllSmApiQueries.cpp:64941[get_closest_point], [brep_closest_point], [brep_closest_point_all]
SmApiBrepIsManifoldSolidSmApiQueries.cpp:70114[brep_is_manifold_solid], [brep_bounding_box]
SmApiBrepBoundingBoxSmApiQueries.cpp:97524[brep_is_manifold_solid], [brep_bounding_box]
SmApiFaceBoundingBoxSmApiQueries.cpp:104224[face_bounding_box], [face_internal_point], [face_classify_uv], [face_closest_point]
SmApiFaceInternalPointSmApiQueries.cpp:113714[face_bounding_box], [face_internal_point], [face_classify_uv], [face_closest_point]
SmApiFaceClassifyUVSmApiQueries.cpp:116128[face_bounding_box], [face_internal_point], [face_classify_uv], [face_closest_point]
SmApiFaceClosestPointSmApiQueries.cpp:119944[face_bounding_box], [face_internal_point], [face_classify_uv], [face_closest_point]
SmApiEdgeBoundingBoxSmApiQueries.cpp:130124[edge_bounding_box], [edge_closest_point], [edge_parameter_range], [edge_classify_parameter], [edge_tangent]
SmApiEdgeClosestPointSmApiQueries.cpp:136427[edge_bounding_box], [edge_closest_point], [edge_parameter_range], [edge_classify_parameter], [edge_tangent]
SmApiEdgeParameterRangeSmApiQueries.cpp:139917[edge_bounding_box], [edge_closest_point], [edge_parameter_range], [edge_classify_parameter], [edge_tangent]
SmApiEdgeClassifyParameterSmApiQueries.cpp:142634[edge_bounding_box], [edge_closest_point], [edge_parameter_range], [edge_classify_parameter], [edge_tangent]
SmApiEdgeTangentSmApiQueries.cpp:146923[edge_bounding_box], [edge_closest_point], [edge_parameter_range], [edge_classify_parameter], [edge_tangent]
SmApiVertexGetPointSmApiQueries.cpp:150014[vertex_get_point]
Module file-header table (12 rows)
RustUpstream
[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