Open CASCADE Technology Reference Manual 8.0.0
Loading...
Searching...
No Matches
Public Member Functions
RWMesh_TriangulationSource Class Reference

Mesh data wrapper for delayed triangulation loading. Class inherits Poly_Triangulation so that it can be put temporarily into TopoDS_Face within assembly structure. More...

#include <RWMesh_TriangulationSource.hxx>

Inheritance diagram for RWMesh_TriangulationSource:
Inheritance graph
[legend]

Public Member Functions

 RWMesh_TriangulationSource ()
 Constructor.
 
 ~RWMesh_TriangulationSource () override
 Destructor.
 
const occ::handle< RWMesh_TriangulationReader > & Reader () const
 Returns reader allowing to read data from the buffer.
 
void SetReader (const occ::handle< RWMesh_TriangulationReader > &theReader)
 Sets reader allowing to read data from the buffer.
 
int DegeneratedTriNb () const
 Returns number of degenerated triangles collected during data reading. Used for debug statistic purpose.
 
intChangeDegeneratedTriNb ()
 Gets access to number of degenerated triangles to collect them during data reading.
 
bool HasGeometry () const override
 Returns TRUE if triangulation has some geometry.
 
int NbEdges () const
 Returns the number of edges for this triangulation.
 
int Edge (int theIndex) const
 Returns edge at the given index.
 
void SetEdge (int theIndex, int theEdge)
 Sets an edge.
 
- Public Member Functions inherited from Poly_Triangulation
 Poly_Triangulation ()
 Constructs an empty triangulation.
 
 Poly_Triangulation (const int theNbNodes, const int theNbTriangles, const bool theHasUVNodes, const bool theHasNormals=false)
 Constructs a triangulation from a set of triangles. The triangulation is initialized without a triangle or a node, but capable of containing specified number of nodes and triangles.
 
 Poly_Triangulation (const NCollection_Array1< gp_Pnt > &Nodes, const NCollection_Array1< Poly_Triangle > &Triangles)
 Constructs a triangulation from a set of triangles. The triangulation is initialized with 3D points from Nodes and triangles from Triangles.
 
 Poly_Triangulation (const NCollection_Array1< gp_Pnt > &Nodes, const NCollection_Array1< gp_Pnt2d > &UVNodes, const NCollection_Array1< Poly_Triangle > &Triangles)
 Constructs a triangulation from a set of triangles. The triangulation is initialized with 3D points from Nodes, 2D points from UVNodes and triangles from Triangles, where coordinates of a 2D point from UVNodes are the (u, v) parameters of the corresponding 3D point from Nodes on the surface approximated by the constructed triangulation.
 
 ~Poly_Triangulation () override
 Destructor.
 
virtual occ::handle< Poly_TriangulationCopy () const
 Creates full copy of current triangulation.
 
 Poly_Triangulation (const occ::handle< Poly_Triangulation > &theTriangulation)
 Copy constructor for triangulation.
 
double Deflection () const
 Returns the deflection of this triangulation.
 
void Deflection (const double theDeflection)
 Sets the deflection of this triangulation to theDeflection. See more on deflection in Polygon2D.
 
const occ::handle< Poly_TriangulationParameters > & Parameters () const
 Returns initial set of parameters used to generate this triangulation.
 
void Parameters (const occ::handle< Poly_TriangulationParameters > &theParams)
 Updates initial set of parameters used to generate this triangulation.
 
virtual void Clear ()
 Clears internal arrays of nodes and all attributes.
 
int NbNodes () const
 Returns the number of nodes for this triangulation.
 
int NbTriangles () const
 Returns the number of triangles for this triangulation.
 
bool HasUVNodes () const
 Returns true if 2D nodes are associated with 3D nodes for this triangulation.
 
bool HasNormals () const
 Returns true if nodal normals are defined.
 
gp_Pnt Node (int theIndex) const
 Returns a node at the given index.
 
void SetNode (int theIndex, const gp_Pnt &thePnt)
 Sets a node coordinates.
 
gp_Pnt2d UVNode (int theIndex) const
 Returns UV-node at the given index.
 
void SetUVNode (int theIndex, const gp_Pnt2d &thePnt)
 Sets an UV-node coordinates.
 
const Poly_TriangleTriangle (int theIndex) const
 Returns triangle at the given index.
 
void SetTriangle (int theIndex, const Poly_Triangle &theTriangle)
 Sets a triangle.
 
gp_Dir Normal (int theIndex) const
 Returns normal at the given index.
 
void Normal (int theIndex, NCollection_Vec3< float > &theVec3) const
 Returns normal at the given index.
 
void SetNormal (const int theIndex, const NCollection_Vec3< float > &theNormal)
 Changes normal at the given index.
 
void SetNormal (const int theIndex, const gp_Dir &theNormal)
 Changes normal at the given index.
 
Poly_MeshPurpose MeshPurpose () const
 Returns mesh purpose bits.
 
void SetMeshPurpose (const Poly_MeshPurpose thePurpose)
 Sets mesh purpose bits.
 
const Bnd_BoxCachedMinMax () const
 Returns cached min - max range of triangulation data, which is VOID by default (e.g, no cached information).
 
void SetCachedMinMax (const Bnd_Box &theBox)
 Sets a cached min - max range of this triangulation. The bounding box should exactly match actual range of triangulation data without a gap or transformation, or otherwise undefined behavior will be observed. Passing a VOID range invalidates the cache.
 
bool HasCachedMinMax () const
 Returns TRUE if there is some cached min - max range of this triangulation.
 
void UpdateCachedMinMax ()
 Updates cached min - max range of this triangulation with bounding box of nodal data.
 
bool MinMax (Bnd_Box &theBox, const gp_Trsf &theTrsf, const bool theIsAccurate=false) const
 Extends the passed box with bounding box of this triangulation. Uses cached min - max range when available and:
 
virtual void DumpJson (Standard_OStream &theOStream, int theDepth=-1) const
 Dumps the content of me into the stream.
 
bool IsDoublePrecision () const
 Returns TRUE if node positions are defined with double precision; TRUE by default.
 
void SetDoublePrecision (bool theIsDouble)
 Set if node positions should be defined with double or single precision for 3D and UV nodes. Raises exception if data was already allocated.
 
void ResizeNodes (int theNbNodes, bool theToCopyOld)
 Method resizing internal arrays of nodes (synchronously for all attributes).
 
void ResizeTriangles (int theNbTriangles, bool theToCopyOld)
 Method resizing an internal array of triangles.
 
void AddUVNodes ()
 If an array for UV coordinates is not allocated yet, do it now.
 
void RemoveUVNodes ()
 Deallocates the UV nodes array.
 
void AddNormals ()
 If an array for normals is not allocated yet, do it now.
 
void RemoveNormals ()
 Deallocates the normals array.
 
void ComputeNormals ()
 Compute smooth normals by averaging triangle normals.
 
occ::handle< NCollection_HArray1< gp_Pnt > > MapNodeArray () const
 Returns the table of 3D points for read-only access or NULL if nodes array is undefined. Poly_Triangulation::Node() should be used instead when possible. Returned object should not be used after Poly_Triangulation destruction.
 
occ::handle< NCollection_HArray1< Poly_Triangle > > MapTriangleArray () const
 Returns the triangle array for read-only access or NULL if triangle array is undefined. Poly_Triangulation::Triangle() should be used instead when possible. Returned object should not be used after Poly_Triangulation destruction.
 
occ::handle< NCollection_HArray1< gp_Pnt2d > > MapUVNodeArray () const
 Returns the table of 2D nodes for read-only access or NULL if UV nodes array is undefined. Poly_Triangulation::UVNode() should be used instead when possible. Returned object should not be used after Poly_Triangulation destruction.
 
occ::handle< NCollection_HArray1< float > > MapNormalArray () const
 Returns the table of per-vertex normals for read-only access or NULL if normals array is undefined. Poly_Triangulation::Normal() should be used instead when possible. Returned object should not be used after Poly_Triangulation destruction.
 
NCollection_Array1< Poly_Triangle > & InternalTriangles ()
 Returns an internal array of triangles. Triangle()/SetTriangle() should be used instead in portable code.
 
Poly_ArrayOfNodesInternalNodes ()
 Returns an internal array of nodes. Node()/SetNode() should be used instead in portable code.
 
Poly_ArrayOfUVNodesInternalUVNodes ()
 Returns an internal array of UV nodes. UBNode()/SetUVNode() should be used instead in portable code.
 
NCollection_Array1< NCollection_Vec3< float > > & InternalNormals ()
 Return an internal array of normals. Normal()/SetNormal() should be used instead in portable code.
 
void SetNormals (const occ::handle< NCollection_HArray1< float > > &theNormals)
 
const NCollection_Array1< Poly_Triangle > & Triangles () const
 
NCollection_Array1< Poly_Triangle > & ChangeTriangles ()
 
Poly_TriangleChangeTriangle (const int theIndex)
 
virtual bool HasDeferredData () const
 Returns TRUE if there is some triangulation data that can be loaded using LoadDeferredData().
 
virtual bool LoadDeferredData (const occ::handle< OSD_FileSystem > &theFileSystem=occ::handle< OSD_FileSystem >())
 Loads triangulation data into itself from some deferred storage using specified shared input file system.
 
virtual occ::handle< Poly_TriangulationDetachedLoadDeferredData (const occ::handle< OSD_FileSystem > &theFileSystem=occ::handle< OSD_FileSystem >()) const
 Loads triangulation data into new Poly_Triangulation object from some deferred storage using specified shared input file system.
 
virtual bool UnloadDeferredData ()
 Releases triangulation data if it has connected deferred storage.
 
- Public Member Functions inherited from Standard_Transient
 Standard_Transient ()
 Empty constructor.
 
 Standard_Transient (const Standard_Transient &)
 Copy constructor – does nothing.
 
Standard_Transientoperator= (const Standard_Transient &)
 Assignment operator, needed to avoid copying reference counter.
 
virtual ~Standard_Transient ()=default
 Destructor must be virtual.
 
virtual const opencascade::handle< Standard_Type > & DynamicType () const
 Returns a type descriptor about this object.
 
bool IsInstance (const opencascade::handle< Standard_Type > &theType) const
 Returns a true value if this is an instance of Type.
 
bool IsInstance (const char *const theTypeName) const
 Returns a true value if this is an instance of TypeName.
 
bool IsKind (const opencascade::handle< Standard_Type > &theType) const
 Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
 
bool IsKind (const char *const theTypeName) const
 Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
 
Standard_TransientThis () const
 Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero.
 
int GetRefCount () const noexcept
 Get the reference counter of this object.
 
void IncrementRefCounter () noexcept
 Increments the reference counter of this object. Uses relaxed memory ordering since incrementing only requires atomicity, not synchronization with other memory operations.
 
int DecrementRefCounter () noexcept
 Decrements the reference counter of this object; returns the decremented value. Uses release ordering for the decrement to ensure all writes to the object are visible before the count reaches zero. An acquire fence is added only when the count reaches zero, ensuring proper synchronization before deletion. This is more efficient than using acq_rel for every decrement.
 
virtual void Delete () const
 Memory deallocator for transient classes.
 

late-load deferred data interface

Returns number of nodes for deferred loading. Note: this is estimated values defined in object header, which might be different from actually loaded values (due to broken header or extra mesh processing). Always check triangulation size of actually loaded data in code to avoid out-of-range issues.

occ::handle< RWMesh_TriangulationReadermyReader
 Sets number of nodes for deferred loading.
 
NCollection_Array1< intmyEdges
 Sets number of nodes for deferred loading.
 
int myNbDefNodes
 Sets number of nodes for deferred loading.
 
int myNbDefTriangles
 Sets number of nodes for deferred loading.
 
int myStatisticOfDegeneratedTriNb
 Sets number of nodes for deferred loading.
 
int NbDeferredNodes () const override
 Sets number of nodes for deferred loading.
 
void SetNbDeferredNodes (const int theNbNodes)
 Sets number of nodes for deferred loading.
 
int NbDeferredTriangles () const override
 Returns number of triangles for deferred loading. Note: this is estimated values defined in object header, which might be different from actually loaded values (due to broken header or extra mesh processing). Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
 
void SetNbDeferredTriangles (const int theNbTris)
 Sets number of triangles for deferred loading.
 
NCollection_Array1< int > & InternalEdges ()
 Returns an internal array of edges. Edge()/SetEdge() should be used instead in portable code.
 
void ResizeEdges (int theNbEdges, bool theToCopyOld)
 Method resizing an internal array of triangles.
 
bool loadDeferredData (const occ::handle< OSD_FileSystem > &theFileSystem, const occ::handle< Poly_Triangulation > &theDestTriangulation) const override
 Loads triangulation data from deferred storage using specified shared input file system.
 

Additional Inherited Members

- Public Types inherited from Standard_Transient
typedef void base_type
 Returns a type descriptor about this object.
 
- Static Public Member Functions inherited from Standard_Transient
static constexpr const charget_type_name ()
 Returns a type descriptor about this object.
 
static const opencascade::handle< Standard_Type > & get_type_descriptor ()
 Returns type descriptor of Standard_Transient class.
 
- Protected Member Functions inherited from Poly_Triangulation
virtual occ::handle< Poly_TriangulationcreateNewEntity () const
 Creates new triangulation object (can be inheritor of Poly_Triangulation).
 
void unsetCachedMinMax ()
 Clears cached min - max range saved previously.
 
virtual Bnd_Box computeBoundingBox (const gp_Trsf &theTrsf) const
 Calculates bounding box of nodal data.
 
- Protected Attributes inherited from Poly_Triangulation
std::atomic< Bnd_Box * > myCachedMinMax {nullptr}
 Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
 
std::shared_mutex myCachedMinMaxMutex
 Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
 
double myDeflection
 Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
 
Poly_ArrayOfNodes myNodes
 Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
 
NCollection_Array1< Poly_TrianglemyTriangles
 Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
 
Poly_ArrayOfUVNodes myUVNodes
 Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
 
NCollection_Array1< NCollection_Vec3< float > > myNormals
 Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
 
Poly_MeshPurpose myPurpose
 Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
 
occ::handle< Poly_TriangulationParametersmyParams
 Returns number of deferred triangles that can be loaded using LoadDeferredData(). Note: this is estimated values, which might be different from actually loaded values Always check triangulation size of actually loaded data in code to avoid out-of-range issues.
 

Detailed Description

Mesh data wrapper for delayed triangulation loading. Class inherits Poly_Triangulation so that it can be put temporarily into TopoDS_Face within assembly structure.

Constructor & Destructor Documentation

◆ RWMesh_TriangulationSource()

RWMesh_TriangulationSource::RWMesh_TriangulationSource ( )

Constructor.

◆ ~RWMesh_TriangulationSource()

RWMesh_TriangulationSource::~RWMesh_TriangulationSource ( )
override

Destructor.

Member Function Documentation

◆ ChangeDegeneratedTriNb()

int & RWMesh_TriangulationSource::ChangeDegeneratedTriNb ( )
inline

Gets access to number of degenerated triangles to collect them during data reading.

◆ DegeneratedTriNb()

int RWMesh_TriangulationSource::DegeneratedTriNb ( ) const
inline

Returns number of degenerated triangles collected during data reading. Used for debug statistic purpose.

◆ Edge()

int RWMesh_TriangulationSource::Edge ( int theIndex) const
inline

Returns edge at the given index.

Parameters
[in]theIndexedge index within [1, NbEdges()] range
Returns
edge node indices, with each node defined within [1, NbNodes()] range

◆ HasGeometry()

bool RWMesh_TriangulationSource::HasGeometry ( ) const
inlineoverridevirtual

Returns TRUE if triangulation has some geometry.

Reimplemented from Poly_Triangulation.

◆ InternalEdges()

NCollection_Array1< int > & RWMesh_TriangulationSource::InternalEdges ( )
inline

Returns an internal array of edges. Edge()/SetEdge() should be used instead in portable code.

◆ loadDeferredData()

bool RWMesh_TriangulationSource::loadDeferredData ( const occ::handle< OSD_FileSystem > & theFileSystem,
const occ::handle< Poly_Triangulation > & theDestTriangulation ) const
overrideprotectedvirtual

Loads triangulation data from deferred storage using specified shared input file system.

Reimplemented from Poly_Triangulation.

◆ NbDeferredNodes()

int RWMesh_TriangulationSource::NbDeferredNodes ( ) const
inlineoverridevirtual

Sets number of nodes for deferred loading.

Reimplemented from Poly_Triangulation.

◆ NbDeferredTriangles()

int RWMesh_TriangulationSource::NbDeferredTriangles ( ) const
inlineoverridevirtual

Returns number of triangles for deferred loading. Note: this is estimated values defined in object header, which might be different from actually loaded values (due to broken header or extra mesh processing). Always check triangulation size of actually loaded data in code to avoid out-of-range issues.

Reimplemented from Poly_Triangulation.

◆ NbEdges()

int RWMesh_TriangulationSource::NbEdges ( ) const
inline

Returns the number of edges for this triangulation.

◆ Reader()

const occ::handle< RWMesh_TriangulationReader > & RWMesh_TriangulationSource::Reader ( ) const
inline

Returns reader allowing to read data from the buffer.

◆ ResizeEdges()

void RWMesh_TriangulationSource::ResizeEdges ( int theNbEdges,
bool theToCopyOld )

Method resizing an internal array of triangles.

Parameters
[in]theNbTrianglesnew number of triangles
[in]theToCopyOldcopy old triangles into the new array

◆ SetEdge()

void RWMesh_TriangulationSource::SetEdge ( int theIndex,
int theEdge )
inline

Sets an edge.

Parameters
[in]theIndexedge index within [1, NbEdges()] range
[in]theEdgeedge node indices, with each node defined within [1, NbNodes()] range

◆ SetNbDeferredNodes()

void RWMesh_TriangulationSource::SetNbDeferredNodes ( const int theNbNodes)
inline

Sets number of nodes for deferred loading.

◆ SetNbDeferredTriangles()

void RWMesh_TriangulationSource::SetNbDeferredTriangles ( const int theNbTris)
inline

Sets number of triangles for deferred loading.

◆ SetReader()

void RWMesh_TriangulationSource::SetReader ( const occ::handle< RWMesh_TriangulationReader > & theReader)
inline

Sets reader allowing to read data from the buffer.

Field Documentation

◆ myEdges

NCollection_Array1<int> RWMesh_TriangulationSource::myEdges
protected

Sets number of nodes for deferred loading.

◆ myNbDefNodes

int RWMesh_TriangulationSource::myNbDefNodes
protected

Sets number of nodes for deferred loading.

◆ myNbDefTriangles

int RWMesh_TriangulationSource::myNbDefTriangles
protected

Sets number of nodes for deferred loading.

◆ myReader

occ::handle<RWMesh_TriangulationReader> RWMesh_TriangulationSource::myReader
protected

Sets number of nodes for deferred loading.

◆ myStatisticOfDegeneratedTriNb

int RWMesh_TriangulationSource::myStatisticOfDegeneratedTriNb
mutableprotected

Sets number of nodes for deferred loading.


The documentation for this class was generated from the following file: