When `A3DTopoContextData`

has `A3DTopoContextData::m_dScale`

, how can I get the tolerance in the topology?A3DTopoContextData — HOOPS Exchange 2023 documentation

The tolerance of an `A3DTopoContext`

has no explicit unit. It is to be understood as a value in the same “dimension” as all the geometry inside a brep: 3d curves, surfaces, vertex points. The corresponding 3d dimension with a defined unit of that tolerance will only be meaningful when this TopoContext will be set on a RepresentationItem in a part in a ModelFile with a defined unit.

Let say you have an edge with a curve which is a line segment from (0;0;0) to (0;0;1) in a TopoContext with 1e-8 as tolerance and 1000 as TopoContext scale. The edge length is 1 and its tolerance is 1e-8 in its “no dimension” space purely geometric. If this brep is put in a modefile with a unit =1 (mm) but with no other scales on any placements of the assembly, then you can put a “unit” meaning for the tolerance: 1e-8 * 1000 mm = 1e-5 mm. You can also consider that every geometry inside the brep is to be understood in meters! the tolerances, the curves, the surfaces and the vertex points: so the tolerance is 1e-8 meters.