Go to the documentation of this file.
47 norm /=
mag(norm) + VSMALL;
51 const point& p0 = pointLst[
f[0]];
52 for (
label fp1 = 1; fp1 <
f.size() - 1; ++fp1)
54 label fp2 =
f.fcIndex(fp1);
56 const point& p1 = pointLst[
f[fp1]];
57 const point& p2 = pointLst[
f[fp2]];
60 os <<
" facet normal "
61 << norm.
x() <<
' ' << norm.
y() <<
' ' << norm.
z() <<
nl
63 <<
" vertex " << p0.
x() <<
' ' << p0.
y() <<
' ' << p0.
z() <<
nl
64 <<
" vertex " << p1.
x() <<
' ' << p1.
y() <<
' ' << p1.
z() <<
nl
65 <<
" vertex " << p2.
x() <<
' ' << p2.
y() <<
' ' << p2.
z() <<
nl
67 <<
" endfacet" <<
endl;
88 norm /=
mag(norm) + VSMALL;
92 const point& p0 = pointLst[
f[0]];
93 for (
label fp1 = 1; fp1 <
f.size() - 1; ++fp1)
95 label fp2 =
f.fcIndex(fp1);
137 this->storedPoints().transfer(reader.
points());
152 const label startPt = 3*faceI;
153 faceLst[faceI] =
triFace(startPt, startPt+1, startPt+2);
167 faceLst[faceI] =
triFace(startPt, startPt+1, startPt+2);
173 this->storedFaces().transfer(faceLst);
177 this->addZones(sizes, names);
181 this->addZones(sizes);
184 this->stitchFaces(SMALL);
201 <<
"Cannot open file for writing " << filename
212 ? surfaceFormatsCore::oneZone(faceLst)
231 writeShell(os, pointLst, faceLst[faceI]);
238 writeShell(os, pointLst, faceLst[faceIndex++]);
253 std::ofstream os(filename.c_str(), std::ios::binary);
257 <<
"Cannot open file for writing " << filename
270 : surfaceFormatsCore::oneZone(faceLst)
276 unsigned int nTris = 0;
279 nTris = faceLst.
size();
286 nTris += faceLst[faceI].
size() - 2;
291 STLsurfaceFormatCore::writeHeaderBINARY(os, nTris);
319 faceLst[faceIndex++],
339 <<
"Cannot open file for writing " << filename
344 if (surf.
zoneToc().size() == 1)
349 os <<
"solid " << surf.
zoneToc()[0].name() <<
endl;
352 writeShell(os, pointLst, faceLst[faceI]);
354 os <<
"endsolid " << surf.
zoneToc()[0].name() <<
endl;
383 std::ofstream os(filename.c_str(), std::ios::binary);
387 <<
"Cannot open file for writing " << filename
395 unsigned int nTris = 0;
398 nTris = faceLst.
size();
405 nTris += faceLst[faceI].
size() - 2;
410 STLsurfaceFormatCore::writeHeaderBINARY(os, nTris);
433 const word ext = filename.
ext();
438 writeBinary(filename, surf);
442 writeAscii(filename, surf);
459 writeBinary(filename, surf);
463 writeAscii(filename, surf);
Pair< int > faceMap(const label facePi, const face &faceP, const label faceNi, const face &faceN)
A class for handling words, derived from string.
A class for handling file names.
#define forAll(list, i)
Loop across all elements in list.
bool useFaceMap() const
Use faceMap?
Xfer< List< T > > xfer()
Transfer contents to the Xfer container.
bool read(const char *, int32_t &)
const List< Face > & faces() const
Return const access to the faces.
const pointField & points() const
Return const access to the points.
const List< surfZone > & surfZones() const
Const access to the surface zones.
Ostream & endl(Ostream &os)
Add newline and flush stream.
dimensioned< scalar > mag(const dimensioned< Type > &)
A proxy for writing MeshedSurface, UnsortedMeshedSurface and surfMesh to various file formats.
void sortedOrder(const UList< T > &, labelList &order)
Generate the (stable) sort order for the list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Pre-declare SubField and related Field type.
const List< label > & zoneIds() const
Return const access to the zone ids.
const List< surfZoneIdentifier > & zoneToc() const
Return const access to the zone table-of-contents.
void write(ostream &)
Write to istream (binary)
word ext() const
Return file name extension (part after last .)
const word & name() const
Return name.
errorManipArg< error, int > exit(error &err, const int errNo=1)
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
A triangle representation for STL files.
A surface zone on a MeshedSurface.
void clear()
Clear the list, i.e. set size to zero.
Various functions to operate on Lists.
void size(const label)
Override size to be inconsistent with allocated storage.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
bool good() const
Return true if next operation might succeed.
A surface geometry mesh with zone information, not to be confused with the similarly named surfaceMes...
surfZoneList sortedZones(labelList &faceMap) const
Sort faces according to zoneIds.
const List< label > & faceMap() const
Const access to the faceMap, zero-sized when unused.
triangle< point, const point & > triPointRef