solidcore

Units / topology

topology.proto_topology_p2 partial

Layer
48
Upstream lines
2,091
Functions
18
Rust module
topology::proto_topology::p2

Source: crates/solidcore/src/topology/proto_topology/p2.rs

Upstream: source/SMLib/src/SmProtoTopology.cpp

Notes

PARTIAL (PR #114): difftest 1533 cases (1500 generated proto scripts with ops 91-108 of the shared topology.proto_topology_p1 engine, 30 edge cases (proto edge life cycle, resolve of same / closed / circle proto edges, edge split updates, combine every other WR-95, vertex definitions, imprint error returns, find-or-create) at unit/1e4/1e-4 scale, 3 upstream-derived fixtures (SM_API_test TestSmBoolean2DPlanarUnion boundary crossings at 1, 1e3, 1e-3)), 1228 pass bit-identical (max_rel_err 0), 305 deferred (topology.edge 123, topology.vertex 61, topology.face_p2 60, topology.face_p1 41, topology.brep_p9 20; SmProtoVertex::ContainsPoint wired by query.face_p2, surface point solves by surface.surface_point_solve_p3); --perturb SENSITIVE. 18 fns ported in topology::proto_topology::p2; B-rep members through the new ProtoBrep trait (no UNPORTED stubs into partial units); UNPORTED stubs: topology.brep_p5 (SmBrep::MakeEdgeInFace), topology.face_p1 (SmFace::CalculateUVDomainFromUVTrimCurves), query.face_p2 (sm_ClassifyParamOnFaces), surface.surface_p5 (SmSurface::DropPoint), topology.edgeuse_p3 (SmEdgeuse::EvaluateBinormal). Upstream defects UB-115..UB-118, WR-95. No UNPORTED(topology.proto_topology_p2) back-edges existed. Plan notes: 18 fns; largest: SmProtoTopologyManager::UpdateFaces, SmProtoTopologyManager::UpdateEdges, SmEdgeDefinition::Imprint, SmProtoTopologyManager::CanCombineVertexDefinitions; cycle back-edges (call into later units; stub or co-port): query.face_p2(1); unit-SCC #22 (220 units); 112 upstream test entry points reach this unit [PR #144: can_combine_vertex_definitions takes the ProtoTopology walks (are_connected of topology.proto_topology_p1 wired); re-run: cases=1533 passed=1247 failed=0 deferred=286 (topology.brep_p9 20, topology.edge 105, topology.face_p1 41, topology.face_p2 60, topology.vertex 60), --perturb SENSITIVE]

Difftest

Cases
1,533
Passed
1,247
Deferred
286
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Unported unitDeferred cases
topology.edge partial105
topology.face_p2 partial60
topology.vertex partial60
topology.face_p1 partial41
topology.brep_p9 claimed20

Report JSON (per-case results)

Dependencies

Depends on: curve.curve_p2 green geom.extent1d green geom.object partial geom.solution_array partial geom.tol green geom.vector3d green intersect.curve_class_p1 partial intersect.point_class partial topology.edge partial topology.face_p2 partial topology.proto_topology_p1 partial topology.topology green

Soft dependencies: curve.curve_p1 partial geom.extent2d green geom.vector2d green intersect.curve_class_p7 partial surface.surface_p2 partial surface.surface_p5 green topology.brep_p5 claimed topology.edgeuse_p3 claimed topology.face_p1 partial

Dependents: boolean.topology_intersector_p1 partial topology.proto_topology_p3 partial

Soft dependents: none

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmVertexDefinition::ImprintSmProtoTopology.cpp:778139[ProtoTopologyManager::imprint_vertex_definition]
SmEdgeDefinition::ImprintSmProtoTopology.cpp:1369243[ProtoTopologyManager::imprint_edge_definition]
SmProtoVertex::ResolveSmProtoTopology.cpp:227890[ProtoTopologyManager::resolve_proto_vertex]
SmProtoVertex::AddVertexDefinitionSmProtoTopology.cpp:244058[ProtoTopologyManager::add_vertex_definition_from_pcs]
SmProtoEdge::FindMatchingEdgeDefinitionSmProtoTopology.cpp:311645[ProtoTopologyManager::find_matching_edge_definition]
SmProtoEdge::AddEdgeDefinitionSmProtoTopology.cpp:317347[ProtoTopologyManager::add_edge_definition]
SmProtoEdge::AddEdgeDefinitionSmProtoTopology.cpp:323059[ProtoTopologyManager::add_edge_definition]
SmProtoEdge::CombineProtoEdgeSmProtoTopology.cpp:329644[ProtoTopologyManager::combine_proto_edge]
SmProtoEdge::ResolveSmProtoTopology.cpp:3391124[ProtoTopologyManager::resolve_proto_edge]
SmProtoTopologyManager::CreateVertexDefinitionSmProtoTopology.cpp:374324[ProtoTopologyManager::create_vertex_definition]
SmProtoTopologyManager::CreateProtoVertexSmProtoTopology.cpp:394341[ProtoTopologyManager::create_proto_vertex]
SmProtoTopologyManager::FindOrCreateProtoVertexSmProtoTopology.cpp:399234[ProtoTopologyManager::find_or_create_proto_vertex]
SmProtoTopologyManager::FindProtoEdgeSmProtoTopology.cpp:412949[ProtoTopologyManager::find_proto_edge]
SmProtoTopologyManager::CreateProtoEdgeSmProtoTopology.cpp:418666[ProtoTopologyManager::create_proto_edge]
SmProtoTopologyManager::RemoveEdgeDefinitionSmProtoTopology.cpp:431722[ProtoTopologyManager::remove_edge_definition]
SmProtoTopologyManager::UpdateEdgesSmProtoTopology.cpp:4975306[ProtoTopologyManager::update_edges]
SmProtoTopologyManager::UpdateFacesSmProtoTopology.cpp:5287560[ProtoTopologyManager::update_faces]
SmProtoTopologyManager::CanCombineVertexDefinitionsSmProtoTopology.cpp:6284140[ProtoTopologyManager::can_combine_vertex_definitions]
Module file-header table (19 rows)
RustUpstream
[ProtoBrep]the B-rep members these functions read through SmEdge* / SmFace* / SmVertex* (GetInterval, GetCurve, GetTolerance, GetUVDomain, SetUVDomain, GetSurface, GetEdgeuseOfFace, IsConnectedToFace) and SmCurve::Copy's allocation
[ProtoTopologyManager::imprint_vertex_definition]SmVertexDefinition::Imprint
[ProtoTopologyManager::imprint_edge_definition]SmEdgeDefinition::Imprint
[ProtoTopologyManager::resolve_proto_vertex]SmProtoVertex::Resolve
[ProtoTopologyManager::add_vertex_definition_from_pcs]SmProtoVertex::AddVertexDefinition(SmPointClassification&, SmPointClassification&, ..)
[ProtoTopologyManager::find_matching_edge_definition]SmProtoEdge::FindMatchingEdgeDefinition
[ProtoTopologyManager::add_edge_definition]SmProtoEdge::AddEdgeDefinition(SmEdgeDefinition*)
[ProtoTopologyManager::add_edge_definition_from_intervals]SmProtoEdge::AddEdgeDefinition(const SmCurveInterval&, const SmCurveInterval&)
[ProtoTopologyManager::combine_proto_edge]SmProtoEdge::CombineProtoEdge
[ProtoTopologyManager::resolve_proto_edge]SmProtoEdge::Resolve
[ProtoTopologyManager::create_vertex_definition]SmProtoTopologyManager::CreateVertexDefinition
[ProtoTopologyManager::create_proto_vertex]SmProtoTopologyManager::CreateProtoVertex
[ProtoTopologyManager::find_or_create_proto_vertex]SmProtoTopologyManager::FindOrCreateProtoVertex
[ProtoTopologyManager::find_proto_edge]SmProtoTopologyManager::FindProtoEdge
[ProtoTopologyManager::create_proto_edge]SmProtoTopologyManager::CreateProtoEdge
[ProtoTopologyManager::remove_edge_definition]SmProtoTopologyManager::RemoveEdgeDefinition
[ProtoTopologyManager::update_edges]SmProtoTopologyManager::UpdateEdges
[ProtoTopologyManager::update_faces]SmProtoTopologyManager::UpdateFaces
[ProtoTopologyManager::can_combine_vertex_definitions]SmProtoTopologyManager::CanCombineVertexDefinitions

Upstream tests reaching this unit

prog_test:my_test_analytic_tsurf_creation, prog_test:my_test_get_loop_crossings, SM_API_test:TestSmBoolean2DPlanarUnion, prog_test:my_test_bbu, SM_API_test:TestSmMaterialCensus, SM_API_test:TestSmPiecewiseMerge