53 const bool mustTriangulate = this->isTri();
61 "fileFormats::OFFsurfaceFormat::read(const fileName&)"
63 <<
"Cannot read file " << filename
68 string hdr = this->getLineNoComment(is);
73 "fileFormats::OFFsurfaceFormat::read(const fileName&)"
75 <<
"OFF file " << filename <<
" does not start with 'OFF'"
83 string line = this->getLineNoComment(is);
86 lineStream >> nPoints >> nElems >> nEdges;
94 line = this->getLineNoComment(is);
97 lineStream >> x >> y >> z;
99 pointLst[pointI] =
point(x, y, z);
106 for (label faceI = 0; faceI < nElems; ++faceI)
108 line = this->getLineNoComment(is);
114 lineStream >> nVerts;
120 lineStream >> verts[vertI];
125 if (mustTriangulate && f.
size() > 3)
129 for (label fp1 = 1; fp1 < f.
size() - 1; fp1++)
167 "fileFormats::OFFsurfaceFormat::write"
168 "(const fileName&, const MeshedSurfaceProxy<Face>&)"
170 <<
"Cannot open file for writing " << filename
176 <<
"# Geomview OFF file written " << clock::dateTime().c_str() <<
nl
178 <<
"# points : " << pointLst.
size() <<
nl
179 <<
"# faces : " << faceLst.
size() <<
nl
180 <<
"# zones : " << zoneLst.
size() <<
nl;
185 os <<
"# " << zoneI <<
" " << zoneLst[zoneI].name()
186 <<
" (nFaces: " << zoneLst[zoneI].
size() <<
")" <<
nl;
190 <<
"# nPoints nFaces nEdges" <<
nl
191 << pointLst.
size() <<
' ' << faceLst.
size() <<
' ' << 0 <<
nl
193 <<
"# <points count=\"" << pointLst.
size() <<
"\">" <<
endl;
198 os << pointLst[ptI].x() <<
' '
199 << pointLst[ptI].y() <<
' '
200 << pointLst[ptI].z() <<
" #" << ptI <<
endl;
203 os <<
"# </points>" <<
nl
205 <<
"# <faces count=\"" << faceLst.
size() <<
"\">" <<
endl;
210 os <<
"# <zone name=\"" << zoneLst[zoneI].name() <<
"\">" <<
endl;
214 forAll(zoneLst[zoneI], localFaceI)
216 const Face&
f = faceLst[faceMap[faceIndex++]];
225 os <<
' ' << zoneI <<
endl;
230 forAll(zoneLst[zoneI], localFaceI)
232 const Face&
f = faceLst[faceIndex++];
241 os <<
' ' << zoneI <<
endl;
244 os <<
"# </zone>" <<
endl;
246 os <<
"# </faces>" <<
endl;