solidcore

Units / intersect

intersect.point_class partial

Layer
30
Upstream lines
909
Functions
53
Rust module
intersect::point_class

Source: crates/solidcore/src/intersect/point_class.rs

Upstream: source/SMLib/inc/SmPointClass.h, source/SMLib/inc/SmSpaceBend.h, source/SMLib/inc/SmSpaceUnbend.h, source/SMLib/src/SmLineSegClass.cpp, source/SMLib/src/SmPointClass.cpp, source/SMLib/src/SmSpaceBend.cpp, source/SMLib/src/SmSpaceUnbend.cpp

Notes

PARTIAL: difftest 2511 cases (511 fixture: Combine precedence matrix, LoadFromIntersection kinds/offsets up to 9/8/7, curve and real SmEllipse/SmCircle projections, every class with a NULL object, tolerance sentinels incl. -SM_USE_DEFAULT; 2000 generated scripts), 2197 pass bit-identical, 314 deferred (surface.surface_p4 216, topology.vertex 49, topology.edge 27, topology.face_p2 15, topology.face_p4 4, topology.edgeuse_p1 3); review fixes: constructor stores its SmZoneTol3d as is, MergeIntoObject calls SmVertex::SetTolerance (SM_USE_OLDTOL), base SmTopology tolerance/IsConnectedTo for kinds without overrides, curve tolerance via Curve::edge; back-edges wired: surface.volume_p2 (SmVolume::GlobalPointSolve / EvaluatePoint; volume branch not exercised by the shim), SmTol point-classification overloads (geom.tol note), surface.trim_srf_cache face_point_classify now blocked only by query.face_p2. 53 fns; largest: SmPointClassification::MergeIntoObject, SmPointClassification::ComputePointParameters, SmPointClassification::Combine, SmPointClassification::GetGap3d; cycle back-edges (call into later units; stub or co-port): topology.vertex(8), topology.edge(7), topology.edgeuse_p1(5), topology.brep_p9(3), topology.face_p2(3), topology.face_p4(3), topology.brep_p4(2), topology.loopuse(2), topology.shell(1), topology.topology(1), topology.vertexuse(1); unit-SCC #22 (220 units); 319 upstream test entry points reach this unit Re-run with surface.surface_p5's back-edges wired (PR #50): cases=2511 passed=2197 failed=0 deferred=314 max_rel_err=0e0 blocked_by=surface.surface_point_solve_p3(216),topology.edge(27),topology.edgeuse_p1(3),topology.face_p2(15),topology.face_p4(4),topology.vertex(49). Re-run with surface.surface_point_solve_p3 (PR #106): cases=2511 passed=2411 failed=0 deferred=100 max_rel_err=0.0 blocked_by=topology.edge(27),topology.edgeuse_p1(3),topology.face_p2(15),topology.face_p4(5),topology.vertex(50). Re-run after merging PR #106 (surface.surface_point_solve_p3 wired, 2026-10-15): 2511 cases, 2411 pass, 100 deferred (topology.edge 27, topology.edgeuse_p1 3, topology.face_p2 15, topology.face_p4 5, topology.vertex 50), 0 failed, max_rel_err 0. CO-PORTED in intersect.curve_class_p5 (PR #150): handle adapters for SmVertex::GetPoint, SmTol::GetZoneTol3d and SmVertexuse::GetVertexFaceGap -> ClassGeometry::{classification_vertex_point, topology_zone_tol_3d, vertex_face_gap}, plus the optional topology tolerance short-circuit in object_zone_tol_3d; these resolve caller-owned data and do not duplicate topology algorithms. Defaults preserve existing opaque-handle behavior. CO-PORTED in intersect.curve_class_p8 (PR #152): ClassObject::temporary (default None), handles for the temporary boundary curves/planes whose pointers sm_InsertSolutions records.

Difftest

Cases
2,511
Passed
2,411
Deferred
100
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Unported unitDeferred cases
topology.vertex partial50
topology.edge partial27
topology.face_p2 partial15
topology.face_p4 claimed5
topology.edgeuse_p1 partial3

Report JSON (per-case results)

Dependencies

Depends on: curve.curve_p2 green geom.object partial geom.solution_array partial geom.tol green geom.vector2d green geom.vector3d green surface.surface_p2 partial

Soft dependencies: curve.curve_p6 green geom.extent1d green geom.extent2d green surface.surface_p1 partial surface.surface_p4 green surface.surface_p7 partial surface.volume_p1 green surface.volume_p2 partial

Dependents: blend.fillet_geom_p1 claimed blend.fillet_solver_p2 todo blend.hcr claimed boolean.merge_p1 partial boolean.merge_p4 todo boolean.merge_p5 partial boolean.topology_intersector_p1 partial boolean.topology_intersector_p2 claimed boolean.topology_intersector_p3 claimed intersect.curve_class_p1 partial intersect.curve_class_p2 claimed intersect.curve_class_p3 partial intersect.curve_class_p4 claimed intersect.curve_class_p5 partial intersect.curve_class_p6 partial intersect.curve_class_p7 partial intersect.curve_class_p8 partial intersect.curve_class_p9 partial intersect.ray_tracer partial query.api_queries partial query.brep claimed query.face_p1 claimed query.face_p2 partial topology.brep_p2 claimed topology.brep_p9 claimed topology.face_p2 partial topology.face_p4 claimed topology.proto_topology_p1 partial topology.proto_topology_p2 partial

Soft dependents: blend.fillet_geom_p2 todo blend.fillet_geom_p6 todo blend.fillet_solver_p1 claimed blend.fillet_solver_p3 todo blend.fillet_solver_p5 claimed intersect.topology_solver_p1 partial intersect.topology_solver_p2 partial primitive.primitive_creation_p3 todo query.face_p3 claimed query.face_p4 claimed topology.brep_p6 claimed topology.brep_p7 claimed topology.brep_p8 claimed topology.face_p1 partial topology.face_p3 claimed topology.proto_topology_p3 partial topology.shell partial

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmPointClassification::SmPointClassificationSmPointClass.h:1053[PointClassification]
SmPointClassification::~SmPointClassificationSmPointClass.h:1091Drop (implicit)
SmPointClassification::CopySSSPointSmPointClass.h:1232[PointClassification::copy_sss_point]
SmPointClassification::GetFaceSmPointClass.h:1291[PointClassification::face]
SmPointClassification::GetVertexObjectSmPointClass.h:1311[PointClassification::vertex_object]
SmPointClassification::GetEdgeObjectSmPointClass.h:1321[PointClassification::edge_object]
SmPointClassification::GetFaceObjectSmPointClass.h:1331[PointClassification::face_object]
SmPointClassification::SetFaceSmPointClass.h:1351[PointClassification::set_face]
SmPointClassification::GetPointClassSmPointClass.h:1431[PointClassification::point_class]
SmPointClassification::GetObjectSmPointClass.h:1451[PointClassification::object]
SmPointClassification::GetDeviationSmPointClass.h:1511[PointClassification::deviation]
SmPointClassification::GetTParamSmPointClass.h:1521[PointClassification::t_param]
SmPointClassification::GetUVParamSmPointClass.h:1531[PointClassification::uv_param]
SmPointClassification::AreParametersSetSmPointClass.h:1551[PointClassification::are_parameters_set]
SmPointClassification::GetPreSnapParamSmPointClass.h:1571[PointClassification::pre_snap_param]
SmPointClassification::GetSSSPointFlagSmPointClass.h:1581[PointClassification::sss_point_flag]
SmPointClassification::GetSSSPointSmPointClass.h:1591[PointClassification::sss_point]
SmPointClassification::IsConnectedToSmPointClass.h:1629[PointClassification::is_connected_to]
SmPointClassification::SetContextSmPointClass.h:1721
SmPointClassification::SetGap3dSmPointClass.h:1751[PointClassification::set_gap_3d]
SmPointClassification::SetDeviationSmPointClass.h:1761[PointClassification::set_deviation]
SmPointClassification::SetUVWParamSmPointClass.h:1791[PointClassification::set_uvw_param]
SmPointClassification::UnSetParametersSmPointClass.h:1801[PointClassification::unset_parameters]
SmPointClassification::SetPreSnapParamSmPointClass.h:1821[PointClassification::set_pre_snap_param]
SmPointClassification::SetSSSPointSmPointClass.h:1842[PointClassification::set_sss_point]
SmPointClassification::GetToleranceSmPointClass.h:1941[PointClassification::tolerance]
SmPointClassification::GetObjZoneTol3dSmPointClass.h:1971[PointClassification::obj_zone_tol_3d]
SmPointClassification::GetSrcZoneTol3dSmPointClass.h:1981[PointClassification::src_zone_tol_3d]
SmPointClassification::SetSrcZoneTol3dSmPointClass.h:2001[PointClassification::set_src_zone_tol_3d]
SmSpaceBend::~SmSpaceBendSmSpaceBend.h:2216Drop (implicit)
SmSpaceBend::GetTypeSmSpaceBend.h:3961[SPACE_BEND_TYPE_STRING], [space_bend_is_kind_of]
SmSpaceBend::GetTypeStringSmSpaceBend.h:3961[SPACE_BEND_TYPE_STRING], [space_bend_is_kind_of]
SmSpaceUnbend::~SmSpaceUnbendSmSpaceUnbend.h:2266Drop (implicit)
SmSpaceUnbend::GetTypeSmSpaceUnbend.h:3861[SPACE_UNBEND_TYPE_STRING], [space_unbend_is_kind_of]
SmSpaceUnbend::GetTypeStringSmSpaceUnbend.h:3861[SPACE_BEND_TYPE_STRING], [space_bend_is_kind_of]
SmLineSegClassification::~SmLineSegClassificationSmLineSegClass.cpp:3015Drop (implicit)
SmPointClassification::ReSetSmPointClass.cpp:4319[PointClassification::reset]
SmPointClassification::operator=SmPointClass.cpp:6830Clone / Copy (derived)
SmPointClassification::CopyClassificationOnlySmPointClass.cpp:14130[PointClassification::copy_classification_only]
SmPointClassification::GetBrepSmPointClass.cpp:17833[PointClassification::brep]
SmPointClassification::SetClassObjectSmPointClass.cpp:25738[PointClassification::set_class_object]
SmPointClassification::SetTParamSmPointClass.cpp:30233[PointClassification::set_t_param]
SmPointClassification::SetUVParamSmPointClass.cpp:34218[PointClassification::set_uv_param]
SmPointClassification::GetCurveObjectSmPointClass.cpp:3679[PointClassification::curve_object]
SmPointClassification::GetGap3dSmPointClass.cpp:41863[PointClassification::gap_3d]
SmPointClassification::IsConnectedToSmPointClass.cpp:48722[PointClassification::is_connected_to]
SmPointClassification::CombineSmPointClass.cpp:534102[PointClassification::combine], [Precedence]
SmPointClassification::ComputePointParametersSmPointClass.cpp:651146[PointClassification::compute_point_parameters]
SmPointClassification::FindObjPoint3dSmPointClass.cpp:80651[PointClassification::find_obj_point_3d]
SmPointClassification::MergeIntoObjectSmPointClass.cpp:895192[PointClassification::merge_into_object]
SmPointClassification::LoadFromIntersectionSmPointClass.cpp:110253[PointClassification::load_from_intersection]
SmSpaceBend::IsKindOfSmSpaceBend.cpp:23694[ClassObject], [ClassObjectKind]
SmSpaceUnbend::IsKindOfSmSpaceUnbend.cpp:21874[ClassObject], [ClassObjectKind]
Module file-header table (55 rows)
RustUpstream
[PointClassification]SmPointClassification
[PointClassType]SmPointClassificationType
[ClassObject], [ClassObjectKind]the SmObject* stored in m_pObject (GetType, IsKindOf)
[ClassGeometry]the casts of m_pObject to SmCurve*, SmSurface*, SmVolume*, SmPoint3d*
[PointClassification::new]SmPointClassification(SmZoneTol3d, const SmContext*)
Drop (implicit)~SmPointClassification
[PointClassification::reset]ReSet
Clone / Copy (derived)operator=
[PointClassification::copy_classification_only]CopyClassificationOnly
[PointClassification::copy_sss_point]CopySSSPoint
[PointClassification::brep]GetBrep
[PointClassification::face]GetFace
[PointClassification::vertex_object]GetVertexObject
[PointClassification::edge_object]GetEdgeObject
[PointClassification::face_object]GetFaceObject
[PointClassification::set_face]SetFace
[PointClassification::merge_into_object]MergeIntoObject
[PointClassification::point_class]GetPointClass
[PointClassification::object]GetObject
[PointClassification::curve_object]GetCurveObject
[PointClassification::gap_3d]GetGap3d
[PointClassification::deviation]GetDeviation
[PointClassification::t_param]GetTParam
[PointClassification::uv_param]GetUVParam
[PointClassification::uvw_param]GetUVWParam
[PointClassification::are_parameters_set]AreParametersSet
[PointClassification::pre_snap_param]GetPreSnapParam
[PointClassification::sss_point_flag]GetSSSPointFlag
[PointClassification::sss_point]GetSSSPoint
[PointClassification::is_connected_to]IsConnectedTo(const SmTopology*)
[PointClassification::is_connected_to_any]IsConnectedTo(const SmTArray<SmTopology*>&, ULONG&)
[PointClassification::set_class_object]SetClassObject
[PointClassification::set_gap_3d]SetGap3d
[PointClassification::set_deviation]SetDeviation
[PointClassification::set_t_param]SetTParam
[PointClassification::set_uv_param]SetUVParam
[PointClassification::set_uvw_param]SetUVWParam
[PointClassification::unset_parameters]UnSetParameters
[PointClassification::set_pre_snap_param]SetPreSnapParam
[PointClassification::set_sss_point]SetSSSPoint
[PointClassification::tolerance]GetTolerance
[PointClassification::obj_zone_tol_3d]GetObjZoneTol3d, SmTol::GetObjZoneTol3d(const SmPointClassification*)
[PointClassification::src_zone_tol_3d]GetSrcZoneTol3d, SmTol::GetSrcZoneTol3d(const SmPointClassification*)
[object_zone_tol_3d]SmTol::GetZoneTol3d(const SmObject*)
[PointClassification::xsect_tol_3d]SmTol::GetXSectTol3d(const SmPointClassification*)
[PointClassification::set_src_zone_tol_3d]SetSrcZoneTol3d
[PointClassification::combine], [Precedence]Combine
[PointClassification::compute_point_parameters]ComputePointParameters
[PointClassification::find_obj_point_3d]FindObjPoint3d
[PointClassification::load_from_intersection]LoadFromIntersection
[MergeOutputs]MergeIntoObject's pOptNewEdges, pOptNewVertices
merge_vertex_neighborhood (private)the position/tolerance tail of MergeIntoObject
[SPACE_BEND_TYPE_STRING], [space_bend_is_kind_of]SmSpaceBend::GetType, GetTypeString, IsKindOf
[SPACE_UNBEND_TYPE_STRING], [space_unbend_is_kind_of]SmSpaceUnbend::GetType, GetTypeString, IsKindOf
Drop (implicit)~SmSpaceBend, ~SmSpaceUnbend, ~SmLineSegClassification

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