solidcore

Units / query

query.tess partial

Layer
45
Upstream lines
838
Functions
21
Rust module
query::tess

Source: crates/solidcore/src/query/tess.rs

Upstream: source/SMLib/inc/SmTess.h, source/SMLib/src/SmTess.cpp

Notes

PARTIAL: difftest 676 cases (28 upstream-derived fixtures: smTessTest.cpp tolerances / SmTess.cpp cache construction on Surface.sms, DropCurveSurface.sms, offset_nurb.sms + 48 adversarial review fixtures incl. 8 on SmPlane + 600 generated, 12% on bounded SmPlane surfaces: constructor/getters/drivers, TestAgainstTolerances incl. view-based silhouette retests, BuildTreeWithSubdivision, ImplantUVSegment, MarkFaceContainment, full BuildTree with poly boundaries, SmPolyToEUVUAttr MakeCopy; scales 1e-3..1e3), 665 bit-identical, 0 failed, 11 deferred (intersect.curve_class_p4 via FindTessellationSplits in block subdivision); perturbation 665/665 detected. Review fix: BuildTree on a plane / surface of revolution makes the missing NURB first (GetOrCreateGwNurbPointer). Not compared: SmSurfOfRevolution faces, face-owned surfaces (GetTree rebuild branch), CurveBounded/STEP faces (base BuildTree, unported via surface.surface_p6), and the FFI-rejected Implant-without-tree / Test-without-driver / Mark-without-poly-B-rep inputs. Wired UNPORTED(query.tess) subdivision-surface split in SurfaceCache::SubdivideNode (SnapToKnots/SplitAt, halves named by SurfaceCache::set_subdivision_handles); added ToleranceTester hook (subdivide_to_tolerances_with/build_tree_with) for the virtual TestAgainstTolerances and find_uv_nodes_built; surface.surface_cache_p3 (38) and surface.trim_srf_cache (4) query.tess deferrals now compare (0 failed). SmPolyToEUVUAttr/SmPolyEdgeToVertexUseAttr are AttributeValue variants in geom::attribute. Builds on query.poly (PR #73). 21 fns; largest: SmTessSrfCache::BuildTree, SmTessSrfCache::MarkFaceContainment, SmTessSrfCache::ImplantUVSegment, SmTessSrfCache::BuildTreeWithSubdivision; unit-SCC #22 (220 units); only 8 of 838 lines survive RTA (reached via virtual dispatch to classes no in-scope entry point constructs); low priority / likely deferrable; 319 upstream test entry points reach this unit

Difftest

Cases
676
Passed
665
Deferred
11
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Unported unitDeferred cases
intersect.curve_class_p4 claimed11

Report JSON (per-case results)

Dependencies

Depends on: geom.attribute green geom.extent2d green geom.object partial geom.tol green geom.vector2d green geom.vector3d green nurbs.b_spline_surface_p1 green query.poly partial surface.surface_cache_p1 green surface.surface_cache_p2 partial surface.surface_cache_p3 partial surface.trim_srf_cache partial

Soft dependencies: geom.extent1d green geom.tree partial surface.surface_p2 partial surface.surface_p7 partial topology.face_p2 partial

Dependents: audit.recursion todo

Soft dependents: none

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmPolyToEUVUAttr::SmPolyToEUVUAttrSmTess.h:797[poly_to_euvu_attribute], [AttributeValue::PolyToEuVu]
SmPolyToEUVUAttr::~SmPolyToEUVUAttrSmTess.h:871
SmTessSrfCache::GetFaceSmTess.h:1711[TessSrfCache::face], [TessSrfCache::ts_poly_brep]
SmTessSrfCache::GetTypeSmTess.h:2301[TYPE], [TYPE_STRING], [TessSrfCache::type_code], [TessSrfCache::type_string]
SmTessSrfCache::GetTypeStringSmTess.h:2301[TYPE], [TYPE_STRING], [TessSrfCache::type_code], [TessSrfCache::type_string]
SmSurfaceTessDriver::GetTypeSmTess.h:3961[SurfaceTessDriver::type_code], [SURFACE_TESS_DRIVER_TYPE], [VIEW_BASED_TESS_DRIVER_TYPE]
SmViewBasedTessDriver::GetTypeSmTess.h:4511[SurfaceTessDriver::type_code], [SURFACE_TESS_DRIVER_TYPE], [VIEW_BASED_TESS_DRIVER_TYPE]
SmViewBasedTessDriver::GetViewVectorSmTess.h:4531[SurfaceTessDriver::view_vector], [SurfaceTessDriver::silhouette_chord_height], [SurfaceTessDriver::silhouette_angle_tolerance]
SmViewBasedTessDriver::GetSilhouetteChordHeightSmTess.h:4541[SurfaceTessDriver::view_vector], [SurfaceTessDriver::silhouette_chord_height], [SurfaceTessDriver::silhouette_angle_tolerance]
SmViewBasedTessDriver::GetSilhouetteAngleToleranceSmTess.h:4551[SurfaceTessDriver::view_vector], [SurfaceTessDriver::silhouette_chord_height], [SurfaceTessDriver::silhouette_angle_tolerance]
SmPolyToEUVUAttr::MakeCopySmTess.cpp:79710[Attribute::make_copy] (unit geom.attribute)
SmPolyEdgeToVertexUseAttr::SmPolyEdgeToVertexUseAttrSmTess.cpp:9864[poly_edge_to_vertex_use_attribute], [AttributeValue::PolyEdgeToVertexUse]
SmPolyEdgeToVertexUseAttr::~SmPolyEdgeToVertexUseAttrSmTess.cpp:9911
SmPolyEdgeToVertexUseAttr::MakeCopySmTess.cpp:9936[Attribute::make_copy] (unit geom.attribute)
SmTessSrfCache::TestAgainstTolerancesSmTess.cpp:1262294[TessSrfCache::test_against_tolerances]
SmTessSrfCache::BuildTreeWithSubdivisionSmTess.cpp:1310397[TessSrfCache::build_tree_with_subdivision]
SmTessSrfCache::BuildTreeSmTess.cpp:13215278[TessSrfCache::build_tree]
SmTessSrfCache::ImplantUVSegmentSmTess.cpp:14293137[TessSrfCache::implant_uv_segment]
SmTessSrfCache::MarkFaceContainmentSmTess.cpp:14437185[TessSrfCache::mark_face_containment]
SmTessSrfCache::~SmTessSrfCacheSmTess.cpp:146606Drop (implicit)
SmTessSrfCache::IsKindOfSmTess.cpp:146714[is_kind_of], [TessSrfCache::is_kind_of]
Module file-header table (18 rows)
RustUpstream
[TessSrfCache], [TessHandle]SmTessSrfCache (and the pointers it stores)
[TessSrfCache::new]SmTessSrfCache::SmTessSrfCache
Drop (implicit)SmTessSrfCache::~SmTessSrfCache
[TessSrfCache::face], [TessSrfCache::ts_poly_brep]GetFace, GetTS_PolyBrep
[TYPE], [TYPE_STRING], [TessSrfCache::type_code], [TessSrfCache::type_string]SmTessSrfCache::GetType, GetTypeString (SM_COMMON)
[is_kind_of], [TessSrfCache::is_kind_of]SmTessSrfCache::IsKindOf
[TessSrfCache::test_against_tolerances]SmTessSrfCache::TestAgainstTolerances
[TessSrfCache::build_tree_with_subdivision]SmTessSrfCache::BuildTreeWithSubdivision
[TessSrfCache::build_tree]SmTessSrfCache::BuildTree
[TessSrfCache::implant_uv_segment]SmTessSrfCache::ImplantUVSegment
[TessSrfCache::mark_face_containment]SmTessSrfCache::MarkFaceContainment
[SurfaceTessDriver], [SurfaceTessDriver::new], [SurfaceTessDriverOptions]SmSurfaceTessDriver, its constructor and default arguments
[SurfaceTessDriver::view_based], [ViewBasedTessDriverOptions], [ViewBased]SmViewBasedTessDriver, its constructor and default arguments
[SurfaceTessDriver::type_code], [SURFACE_TESS_DRIVER_TYPE], [VIEW_BASED_TESS_DRIVER_TYPE]SmSurfaceTessDriver::GetType, SmViewBasedTessDriver::GetType
[SurfaceTessDriver::view_vector], [SurfaceTessDriver::silhouette_chord_height], [SurfaceTessDriver::silhouette_angle_tolerance]SmViewBasedTessDriver::GetViewVector, GetSilhouetteChordHeight, GetSilhouetteAngleTolerance
[poly_to_euvu_attribute], [AttributeValue::PolyToEuVu]SmPolyToEUVUAttr::SmPolyToEUVUAttr (~ is Drop)
[poly_edge_to_vertex_use_attribute], [AttributeValue::PolyEdgeToVertexUse]SmPolyEdgeToVertexUseAttr::SmPolyEdgeToVertexUseAttr (~ is Drop)
[Attribute::make_copy] (unit geom.attribute)SmPolyToEUVUAttr::MakeCopy, SmPolyEdgeToVertexUseAttr::MakeCopy

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