bool Foam::fileFormats::OFSsurfaceFormat<Face>::read ( Istream& is, pointField& pointLst, List<Face>& faceLst, List<surfZone>& zoneLst ) { if (!is.good()) { FatalErrorIn ( "fileFormats::OFSsurfaceFormat::read" "(Istream&, pointField&, List<Face>&, List<surfZone>&)" ) << "read error " << exit(FatalError); } // read surfZones: is >> zoneLst; // read points: is >> pointLst; // must triangulate? if (MeshedSurface<Face>::isTri()) { // read faces as 'face' and transcribe to 'triFace' List<face> origFaces(is); MeshedSurface<face> origSurf ( xferMove(pointLst), xferMove(origFaces), xferMove(zoneLst) ); MeshedSurface<Face> surf; surf.transcribe(origSurf); } else { // read faces directly is >> faceLst; } return true; }
void Foam::MeshedSurface<triFace>::transcribe(MeshedSurface<face>& surf) { // first triangulate surf.triangulate(); this->storedPoints().transfer(surf.storedPoints()); this->storedZones().transfer(surf.storedZones()); // transcribe from face -> triFace List<face>& origFaces = surf.storedFaces(); List<triFace> newFaces(origFaces.size()); forAll(origFaces, facei) { newFaces[facei] = triFace ( static_cast<const labelUList&>(origFaces[facei]) ); }