STLsurfaceFormat< Face > Class Template Reference

Provide a means of reading/writing STL files (ASCII and BINARY). More...

Inheritance diagram for STLsurfaceFormat< Face >:
[legend]
Collaboration diagram for STLsurfaceFormat< Face >:
[legend]

Public Member Functions

 STLsurfaceFormat (const fileName &filename)
 Construct from file name. More...
 
virtual ~STLsurfaceFormat ()=default
 Destructor. More...
 
virtual bool read (const fileName &filename)
 Read from file. More...
 
virtual void write (const fileName &name, IOstreamOption streamOpt=IOstreamOption(), const dictionary &options=dictionary::null) const
 Write surface mesh to file. More...
 
- Public Member Functions inherited from MeshedSurface< Face >
 ClassName ("MeshedSurface")
 Declare type-name (with debug switch) More...
 
 MeshedSurface ()
 Default construct, an empty surface. More...
 
 MeshedSurface (const MeshedSurface &surf)
 Copy construct. More...
 
 MeshedSurface (const UnsortedMeshedSurface< Face > &surf)
 Copy construct from an UnsortedMeshedSurface. More...
 
 MeshedSurface (MeshedSurface &&surf)
 Move construct. More...
 
 MeshedSurface (UnsortedMeshedSurface< Face > &&surf)
 Move construct from an UnsortedMeshedSurface. More...
 
 MeshedSurface (const pointField &pointLst, const UList< Face > &faceLst, const UList< surfZone > &zoneLst)
 Copy construct from components (points, faces, zones). More...
 
 MeshedSurface (pointField &&pointLst, List< Face > &&faceLst, const UList< surfZone > &zoneLst)
 Move construct from components (points, faces). More...
 
 MeshedSurface (const pointField &pointLst, const UList< Face > &faceLst, const labelUList &zoneSizes=labelUList(), const UList< word > &zoneNames=UList< word >())
 Copy construct from components (points, faces). More...
 
 MeshedSurface (pointField &&pointLst, List< Face > &&faceLst, const labelUList &zoneSizes=labelUList(), const UList< word > &zoneNames=UList< word >())
 Move construct from components (points, faces). More...
 
 MeshedSurface (const polyBoundaryMesh &bMesh, const bool globalPoints=false)
 Construct from a boundary mesh with local points/faces. More...
 
 MeshedSurface (const surfMesh &mesh)
 Construct from a surfMesh. More...
 
 MeshedSurface (const fileName &name)
 Construct from file name (uses extension to determine type) More...
 
 MeshedSurface (const fileName &name, const word &fileType)
 Construct from file name and given file type. More...
 
 MeshedSurface (Istream &is)
 Construct from Istream. More...
 
 MeshedSurface (const Time &runTime)
 Construct from database (as surfMesh) with default name. More...
 
 MeshedSurface (const Time &runTime, const word &surfName)
 Construct from database (as surfMesh) with given surface name. More...
 
 MeshedSurface (const IOobject &io, const dictionary &dict, const bool isGlobal=true)
 Read construct using IO to find the file location. More...
 
 declareRunTimeSelectionTable (autoPtr, MeshedSurface, fileExtension,(const fileName &name),(name))
 
virtual ~MeshedSurface ()
 Destructor. More...
 
 declareMemberFunctionSelectionTable (void, UnsortedMeshedSurface, write, fileExtension,(const fileName &name, const MeshedSurface< Face > &surf, IOstreamOption streamOpt, const dictionary &options),(name, surf, streamOpt, options))
 
label size () const
 The surface size is the number of faces. More...
 
const List< Face > & surfFaces () const
 Return const access to the faces. More...
 
const labelList & faceIds () const
 Return const access to faces ids. More...
 
const surfZoneList & surfZones () const
 Const access to the surface zones. More...
 
const vectorField & Sf () const
 Face area vectors (normals) More...
 
const scalarField & magSf () const
 Face area magnitudes. More...
 
const vectorField & Cf () const
 Face centres. More...
 
virtual void clear ()
 Clear all storage. More...
 
virtual void addZones (const UList< surfZone > &, const bool cullEmpty=false)
 Add surface zones. More...
 
virtual void addZones (const labelUList &sizes, const UList< word > &names, const bool cullEmpty=false)
 Add surface zones. More...
 
virtual void addZones (const labelUList &sizes, const bool cullEmpty=false)
 Add surface zones. More...
 
bool addZonesToFaces ()
 Propagate zone information on face regions. More...
 
virtual void removeZones ()
 Remove surface zones. More...
 
virtual void movePoints (const pointField &newPoints)
 Move points. More...
 
virtual void scalePoints (const scalar scaleFactor)
 Scale points. A non-positive factor is ignored. More...
 
virtual void cleanup (const bool verbose)
 Remove invalid faces. More...
 
virtual bool stitchFaces (const scalar tol=SMALL, const bool verbose=false)
 
virtual bool checkFaces (const bool verbose=false)
 
virtual label nTriangles () const
 Count number of triangles. More...
 
virtual label nTriangles (labelList &faceMap) const
 Count number of triangles, returning a face map of original ids. More...
 
virtual label triangulate ()
 Triangulate in-place, returning the number of triangles added. More...
 
virtual label triangulate (labelList &faceMap)
 Triangulate in-place, returning the number of triangles added. More...
 
template<class BoolListType >
void subsetMeshMap (const BoolListType &include, labelList &pointMap, labelList &faceMap) const
 Create mappings for a sub-surface. More...
 
MeshedSurface subsetMesh (const UList< bool > &include, labelList &pointMap, labelList &faceMap) const
 Return a new surface subsetted on the selected faces. More...
 
MeshedSurface subsetMesh (const bitSet &include, labelList &pointMap, labelList &faceMap) const
 Return a new surface subsetted on the selected faces. More...
 
MeshedSurface subsetMesh (const UList< bool > &include) const
 Return a new surface subsetted on the selected faces. More...
 
MeshedSurface subsetMesh (const bitSet &include) const
 Return a new surface subsetted on the selected faces. More...
 
MeshedSurface subsetMesh (const wordRes &includeNames, const wordRes &excludeNames=wordRes()) const
 Return a new surface subsetted on the selected zone names. More...
 
void swap (MeshedSurface< Face > &surf)
 Swap contents. More...
 
void transfer (pointField &pointLst, List< Face > &faceLst)
 Transfer the components. More...
 
void transfer (MeshedSurface< Face > &surf)
 Transfer the contents of the argument and annul the argument. More...
 
void transfer (UnsortedMeshedSurface< Face > &surf)
 Transfer the contents of the argument and annul the argument. More...
 
autoPtr< MeshedSurface< Face > > releaseGeom ()
 Release (clear) geometry and return for reuse. More...
 
void swapFaces (List< Face > &faces)
 Swap the stored faces. Use with caution. More...
 
void swapPoints (pointField &points)
 Swap the stored points. More...
 
bool read (const fileName &name, const word &fileType)
 Read from file. Chooses reader based on explicit extension. More...
 
void writeStats (Ostream &os) const
 
virtual void write (const fileName &name, const word &fileType, IOstreamOption streamOpt=IOstreamOption(), const dictionary &options=dictionary::null) const
 Generic write routine for given format type. More...
 
void write (const Time &runTime, const word &surfName=word::null) const
 Write to database. More...
 
void operator= (const MeshedSurface< Face > &surf)
 Copy assignment. More...
 
void operator= (MeshedSurface< Face > &&surf)
 Move assignment. More...
 
 operator MeshedSurfaceProxy< Face > () const
 Conversion operator to MeshedSurfaceProxy. More...
 
template<class Face>
 MeshedSurface (const MeshedSurface< Face > &surf)
 
template<class Face>
 MeshedSurface (MeshedSurface< Face > &&surf)
 
template<>
bool addZonesToFaces ()
 Specialization for labelledTri. More...
 
template<>
bool addZonesToFaces ()
 

Static Public Member Functions

static void writeAscii (const fileName &filename, const MeshedSurfaceProxy< Face > &surf, IOstream::compressionType comp=IOstream::UNCOMPRESSED)
 Write surface mesh components by proxy (as ASCII) More...
 
static void writeBinary (const fileName &filename, const MeshedSurfaceProxy< Face > &surf)
 Write surface mesh components by proxy (as BINARY) More...
 
static void writeAscii (const fileName &filename, const UnsortedMeshedSurface< Face > &surf, IOstream::compressionType comp=IOstream::UNCOMPRESSED)
 Write UnsortedMeshedSurface (as ASCII) sorted by zone. More...
 
static void writeBinary (const fileName &filename, const UnsortedMeshedSurface< Face > &surf)
 Write UnsortedMeshedSurface (as BINARY) unsorted by zone. More...
 
static void write (const fileName &filename, const MeshedSurfaceProxy< Face > &surf, const STLFormat format, IOstream::compressionType comp=IOstream::UNCOMPRESSED)
 Write surface mesh components by proxy. More...
 
static void write (const fileName &filename, const UnsortedMeshedSurface< Face > &surf, const STLFormat format, IOstream::compressionType comp=IOstream::UNCOMPRESSED)
 Write UnsortedMeshedSurface. More...
 
static void write (const fileName &filename, const MeshedSurfaceProxy< Face > &surf, IOstreamOption streamOpt=IOstreamOption(), const dictionary &options=dictionary::null)
 Write surface mesh components by proxy. More...
 
static void write (const fileName &filename, const UnsortedMeshedSurface< Face > &surf, IOstreamOption streamOpt=IOstreamOption(), const dictionary &options=dictionary::null)
 Write UnsortedMeshedSurface. More...
 
- Static Public Member Functions inherited from MeshedSurface< Face >
static wordHashSet readTypes ()
 Known readable file-types, without friends or proxies. More...
 
static wordHashSet writeTypes ()
 Known writable file-types, without friends or proxies. More...
 
static bool canReadType (const word &fileType, bool verbose=false)
 Can we read this file format? Also checks friend types. More...
 
static bool canWriteType (const word &fileType, bool verbose=false)
 Can we write this file format? Also checks proxy types. More...
 
static bool canRead (const fileName &name, bool verbose=false)
 Can we read this file format? More...
 
static autoPtr< MeshedSurface > New (const fileName &name, const word &fileType, bool mandatory=true)
 Read construct from filename with given file type. More...
 
static autoPtr< MeshedSurface > New (const fileName &name)
 Read construct from filename (file type implicit from extension) More...
 
static void write (const fileName &name, const MeshedSurface< Face > &surf, IOstreamOption streamOpt=IOstreamOption(), const dictionary &options=dictionary::null)
 Write to file, selecting writer based on its extension. More...
 
static void write (const fileName &name, const word &fileType, const MeshedSurface< Face > &surf, IOstreamOption streamOpt=IOstreamOption(), const dictionary &options=dictionary::null)
 Write to file, selecting writer based on the given extension. More...
 

Additional Inherited Members

- Public Types inherited from MeshedSurface< Face >
typedef Face face_type
 The face type (same as the underlying PrimitivePatch) More...
 
typedef point point_type
 The point type (same as the underlying PrimitivePatch) More...
 
- Public Types inherited from STLCore
enum  STLFormat { ASCII, BINARY, UNKNOWN }
 Enumeration for the format of data in the stream. More...
 
- Protected Member Functions inherited from MeshedSurface< Face >
void transcribe (MeshedSurface< face > &surf)
 Transfer points/zones from 'face' to other other shapes. More...
 
void checkZones ()
 Basic sanity check on zones. More...
 
pointField & storedPoints ()
 Non-const access to global points. More...
 
List< Face > & storedFaces ()
 Non-const access to the faces. More...
 
labelList & storedFaceIds ()
 Non-const access to face ids. More...
 
surfZoneList & storedZones ()
 Non-const access to the zones. More...
 
void sortFacesAndStore (DynamicList< Face > &unsortedFaces, DynamicList< label > &zoneIds, DynamicList< label > &elemIds, bool sorted)
 Sort faces by zones and store sorted faces. More...
 
virtual void remapFaces (const labelUList &faceMapNewToOld)
 Set new zones from faceMap. More...
 
template<>
void transcribe (MeshedSurface< face > &surf)
 
template<>
void transcribe (MeshedSurface< face > &surf)
 
template<>
void transcribe (MeshedSurface< face > &surf)
 
- Protected Member Functions inherited from STLCore
 STLCore ()=default
 Default construct. More...
 
- Static Protected Member Functions inherited from STLCore
static bool isBinaryName (const fileName &filename, const STLFormat format)
 Detect 'stlb' extension as binary when format = UNKNOWN. More...
 
static int detectBinaryHeader (const fileName &filename)
 Check contents to detect if the file is a binary STL. More...
 
static std::unique_ptr< std::istream > readBinaryHeader (const fileName &filename, label &nTrisEstimated)
 Read STL binary file header. More...
 
static void writeBinaryHeader (ostream &os, uint32_t nTris)
 Write STL binary file and number of triangles to stream. More...
 

Detailed Description

template<class Face>
class Foam::fileFormats::STLsurfaceFormat< Face >

Provide a means of reading/writing STL files (ASCII and BINARY).

Output stream options: ASCII/BINARY, compression for ASCII only

Output dictionary options: ignored

Note
For efficiency, the zones are sorted before creating the faces. The class is thus derived from MeshedSurface.
Source files

Definition at line 66 of file STLsurfaceFormat.H.

Constructor & Destructor Documentation

◆ STLsurfaceFormat()

STLsurfaceFormat ( const fileName &  filename)

Construct from file name.

Definition at line 106 of file STLsurfaceFormat.C.

References Foam::blockMeshTools::read().

Here is the call graph for this function:

◆ ~STLsurfaceFormat()

virtual ~STLsurfaceFormat ( )
virtualdefault

Destructor.

Member Function Documentation

◆ writeAscii() [1/2]

void writeAscii ( const fileName &  filename,
const MeshedSurfaceProxy< Face > &  surf,
IOstream::compressionType  comp = IOstream::UNCOMPRESSED 
)
static

Write surface mesh components by proxy (as ASCII)

Definition at line 204 of file STLsurfaceFormat.C.

References Foam::endl(), Foam::exit(), f(), Foam::faceMap(), MeshedSurfaceProxy< Face >::faceMap(), Foam::FatalError, FatalErrorInFunction, IOstream::good(), zone::name(), Foam::nl, MeshedSurfaceProxy< Face >::points(), MeshedSurfaceProxy< Face >::surfFaces(), MeshedSurfaceProxy< Face >::surfZones(), and MeshedSurfaceProxy< Face >::useFaceMap().

Here is the call graph for this function:

◆ writeBinary() [1/2]

void writeBinary ( const fileName &  filename,
const MeshedSurfaceProxy< Face > &  surf 
)
static

Write surface mesh components by proxy (as BINARY)

Definition at line 252 of file STLsurfaceFormat.C.

References Foam::exit(), f(), Foam::faceMap(), MeshedSurfaceProxy< Face >::faceMap(), Foam::FatalError, FatalErrorInFunction, Foam::nl, MeshedSurfaceProxy< Face >::nTriangles(), MeshedSurfaceProxy< Face >::points(), MeshedSurfaceProxy< Face >::surfFaces(), MeshedSurfaceProxy< Face >::surfZones(), and MeshedSurfaceProxy< Face >::useFaceMap().

Here is the call graph for this function:

◆ writeAscii() [2/2]

void writeAscii ( const fileName &  filename,
const UnsortedMeshedSurface< Face > &  surf,
IOstream::compressionType  comp = IOstream::UNCOMPRESSED 
)
static

Write UnsortedMeshedSurface (as ASCII) sorted by zone.

Definition at line 303 of file STLsurfaceFormat.C.

References Foam::exit(), f(), Foam::faceMap(), Foam::FatalError, FatalErrorInFunction, IOstream::good(), Foam::nl, UnsortedMeshedSurface< Face >::sortedZones(), and UnsortedMeshedSurface< Face >::zoneToc().

Here is the call graph for this function:

◆ writeBinary() [2/2]

void writeBinary ( const fileName &  filename,
const UnsortedMeshedSurface< Face > &  surf 
)
static

Write UnsortedMeshedSurface (as BINARY) unsorted by zone.

Definition at line 353 of file STLsurfaceFormat.C.

References Foam::exit(), Foam::FatalError, FatalErrorInFunction, forAll, Foam::nl, and UnsortedMeshedSurface< Face >::zoneIds().

Here is the call graph for this function:

◆ write() [1/5]

void write ( const fileName &  filename,
const MeshedSurfaceProxy< Face > &  surf,
const STLFormat  format,
IOstream::compressionType  comp = IOstream::UNCOMPRESSED 
)
static

Write surface mesh components by proxy.

as ASCII or BINARY or dependent on the extension

Definition at line 415 of file STLsurfaceFormat.C.

References format().

Referenced by STLsurfaceFormat< Face >::write().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ write() [2/5]

void write ( const fileName &  filename,
const UnsortedMeshedSurface< Face > &  surf,
const STLFormat  format,
IOstream::compressionType  comp = IOstream::UNCOMPRESSED 
)
static

Write UnsortedMeshedSurface.

as ASCII or BINARY or dependent on the extension

Definition at line 460 of file STLsurfaceFormat.C.

References format().

Here is the call graph for this function:

◆ write() [3/5]

void write ( const fileName &  filename,
const MeshedSurfaceProxy< Face > &  surf,
IOstreamOption  streamOpt = IOstreamOption(),
const dictionary &  options = dictionary::null 
)
static

Write surface mesh components by proxy.

as ASCII or BINARY, depending on the extension

Definition at line 390 of file STLsurfaceFormat.C.

References IOstreamOption::compression(), and IOstreamOption::format().

Here is the call graph for this function:

◆ write() [4/5]

void write ( const fileName &  filename,
const UnsortedMeshedSurface< Face > &  surf,
IOstreamOption  streamOpt = IOstreamOption(),
const dictionary &  options = dictionary::null 
)
static

Write UnsortedMeshedSurface.

as ASCII or BINARY, depending on the extension

Definition at line 435 of file STLsurfaceFormat.C.

References IOstreamOption::compression(), and IOstreamOption::format().

Here is the call graph for this function:

◆ read()

bool read ( const fileName &  filename)
virtual

Read from file.

Reimplemented from MeshedSurface< Face >.

Definition at line 118 of file STLsurfaceFormat.C.

References clear(), List< T >::clear(), Foam::faceMap(), forAll, STLReader::mergePointsMap(), STLReader::names(), STLReader::points(), STLReader::sizes(), STLReader::sorted(), Foam::sortedOrder(), and STLReader::zoneIds().

Here is the call graph for this function:

◆ write() [5/5]

virtual void write ( const fileName &  name,
IOstreamOption  streamOpt = IOstreamOption(),
const dictionary &  options = dictionary::null 
) const
inlinevirtual

Write surface mesh to file.

Reimplemented from MeshedSurface< Face >.

Definition at line 184 of file STLsurfaceFormat.H.

References Foam::name(), and STLsurfaceFormat< Face >::write().

Here is the call graph for this function:

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