Files
IfcOpenShell/src/qtviewer/ParseIfcFile.cpp
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

39 lines
1.3 KiB
C++
Raw Normal View History

#include "ParseIfcFile.h"
#include "MessageLogger.h"
2023-08-29 09:48:27 +05:30
#include "../ifcgeom_schema_agnostic/IfcGeomIterator.h"
ParseIfcFile::ParseIfcFile() {}
ParseIfcFile::~ParseIfcFile() {}
void ParseIfcFile::Parse(const std::string& filePath)
{
2023-08-29 09:48:27 +05:30
IfcParse::IfcFile file(filePath);
IfcGeom::IteratorSettings settings;
settings.set(IfcGeom::IteratorSettings::USE_WORLD_COORDS, true);
settings.set(IfcGeom::IteratorSettings::WELD_VERTICES, false);
IfcGeom::Iterator* it = new IfcGeom::Iterator(settings, &file);
if (!it->initialize()) {
MessageLogger::log("Error: Iterator failed to initialize! Aborting.");
2023-08-29 09:48:27 +05:30
delete it;
return;
}
do {
//const IfcGeom::BRepElement* bRepElem = it->get_native();
const IfcGeom::TriangulationElement* triElem = static_cast<const IfcGeom::TriangulationElement*>(it->get());
MessageLogger::log(triElem->type() + ": " + triElem->name());
2023-08-29 09:48:27 +05:30
const boost::shared_ptr<IfcGeom::Representation::Triangulation>& triElemGeom = triElem->geometry_pointer();
// materials
const std::vector<IfcGeom::Material>& elemMats = triElemGeom->materials();
for (auto mat : elemMats) {
MessageLogger::log(" " + mat.original_name());
2023-08-29 09:48:27 +05:30
}
} while (it->next());
}