35 #undef DEBUG_STLBINARY
47 void Foam::fileFormats::STLReader::transfer
49 Detail::STLAsciiParse& parsed
52 sorted_ = parsed.sorted();
54 points_.transfer(parsed.points());
59 format_ = STLFormat::ASCII;
65 bool Foam::fileFormats::STLReader::readASCII
67 const fileName& filename
74 return readAsciiRagel(filename);
76 else if (parserType == 2)
78 return readAsciiManual(filename);
80 return readAsciiFlex(filename);
84 bool Foam::fileFormats::STLReader::readBINARY
86 const fileName& filename
90 format_ = STLFormat::UNKNOWN;
93 autoPtr<istream> streamPtr = readBinaryHeader(filename, nTris);
95 if (!streamPtr.valid())
98 <<
"Error reading file " << filename
99 <<
" or file " << filename +
".gz"
103 istream& is = streamPtr();
105 #ifdef DEBUG_STLBINARY
106 Info<<
"# " << nTris <<
" facets" <<
endl;
110 points_.setSize(3*nTris);
111 zoneIds_.setSize(nTris);
114 DynamicList<label> dynSizes;
121 STLtriangle stlTri(is);
124 points_[ptI++] = stlTri.a();
125 points_[ptI++] = stlTri.b();
126 points_[ptI++] = stlTri.c();
129 const label origId = stlTri.attrib();
143 zoneI = dynSizes.size();
144 lookup.insert(origId, zoneI);
148 zoneIds_[facei] = zoneI;
151 #ifdef DEBUG_STLBINARY
152 if (prevZone != zoneI)
156 Info<<
"endsolid zone" << prevZone <<
nl;
160 Info<<
"solid zone" << prevZone <<
nl;
167 #ifdef DEBUG_STLBINARY
170 Info<<
"endsolid zone" << prevZone <<
nl;
175 sizes_.transfer(dynSizes);
177 format_ = STLFormat::BINARY;
182 bool Foam::fileFormats::STLReader::readFile
184 const fileName& filename,
190 format == STLFormat::UNKNOWN
191 ? detectBinaryHeader(filename)
192 :
format == STLFormat::BINARY
195 return readBINARY(filename);
199 return readASCII(filename);
206 Foam::fileFormats::STLReader::STLReader
216 format_(STLFormat::UNKNOWN)
219 readFile(filename, STLFormat::UNKNOWN);
223 Foam::fileFormats::STLReader::STLReader
234 format_(STLFormat::UNKNOWN)
237 readFile(filename,
format);
250 format_ = STLFormat::UNKNOWN;
264 return mergePointsMap
274 const scalar mergeTol,