Added output panel (for debug info, etc.)

This commit is contained in:
Dushyant Basson
2023-08-29 09:48:27 +05:30
parent 98102b9df0
commit 14454d1b78
4 changed files with 75 additions and 6 deletions
+24 -4
View File
@@ -6,10 +6,10 @@
#include <QFileInfo> #include <QFileInfo>
#include <QFile> #include <QFile>
#include <QMessageBox> #include <QMessageBox>
#include <QSplitter>
#include <sstream> #include <sstream>
#include "MainWindow.h" #include "MainWindow.h"
#include "ParseIfcFile.h"
#include "IfcViewerWidget.h" #include "IfcViewerWidget.h"
MainWindow::MainWindow(QWidget *parent) MainWindow::MainWindow(QWidget *parent)
@@ -19,7 +19,18 @@ MainWindow::MainWindow(QWidget *parent)
this->resize(800, 600); //temporary reasonable initial size this->resize(800, 600); //temporary reasonable initial size
m_glWidget = new IfcViewerWidget(this); m_glWidget = new IfcViewerWidget(this);
setCentralWidget(m_glWidget); QSizePolicy glSizePolicy = m_glWidget->sizePolicy();
glSizePolicy.setVerticalStretch(3);
m_glWidget->setSizePolicy(glSizePolicy);
m_outputText = new QPlainTextEdit(this);
m_outputText->setReadOnly(true);
QSplitter* splitter = new QSplitter(Qt::Vertical, this);
splitter->addWidget(m_glWidget);
splitter->addWidget(m_outputText);
setCentralWidget(splitter);
createActions(); createActions();
createMenus(); createMenus();
@@ -69,6 +80,13 @@ void MainWindow::createConnections()
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
//connect(m_backgroundAction, SIGNAL(toggled(bool)), (QWidget*)m_v, SLOT(setViewBackground(bool))); //connect(m_backgroundAction, SIGNAL(toggled(bool)), (QWidget*)m_v, SLOT(setViewBackground(bool)));
//connect(m_outlineAction, SIGNAL(toggled(bool)), (QWidget*)m_v, SLOT(setViewOutline(bool))); //connect(m_outlineAction, SIGNAL(toggled(bool)), (QWidget*)m_v, SLOT(setViewOutline(bool)));
connect(&m_parser, &ParseIfcFile::parsingInfo, this, &MainWindow::appendToOutputText);
}
void MainWindow::appendToOutputText(const QString& message)
{
m_outputText->appendPlainText(message);
} }
void MainWindow::openFile() void MainWindow::openFile()
@@ -96,8 +114,10 @@ void MainWindow::openFile()
return; return;
} }
ParseIfcFile parser; QString message = tr("Opening file: %1\n").arg(filePath);
parser.Parse(filePath.toStdString()); appendToOutputText(message);
m_parser.Parse(filePath.toStdString());
m_currentPath = filePath; m_currentPath = filePath;
setWindowTitle(tr("%1 - IFCViewer").arg(fileName)); setWindowTitle(tr("%1 - IFCViewer").arg(fileName));
+8
View File
@@ -6,6 +6,9 @@
#include <QString> #include <QString>
#include <QAction> #include <QAction>
#include <QOpenGLWidget> #include <QOpenGLWidget>
#include <QPlainTextEdit>
#include "ParseIfcFile.h"
class MainWindow : public QMainWindow class MainWindow : public QMainWindow
{ {
@@ -21,6 +24,7 @@ private:
void createActions(); void createActions();
void createMenus(); void createMenus();
void createConnections(); void createConnections();
void appendToOutputText(const QString& message);
private: private:
QMenu *fileMenu; QMenu *fileMenu;
QAction *openAction; QAction *openAction;
@@ -35,7 +39,11 @@ private:
QAction *m_outlineAction; QAction *m_outlineAction;
QString m_currentPath; QString m_currentPath;
QOpenGLWidget *m_glWidget; QOpenGLWidget *m_glWidget;
QPlainTextEdit *m_outputText;
ParseIfcFile m_parser;
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H
+32 -1
View File
@@ -4,12 +4,43 @@
#define IfcSchema Ifc2x3 #define IfcSchema Ifc2x3
#include "../ifcgeom/IfcGeom.h" #include "../ifcgeom/IfcGeom.h"
#include "../ifcgeom_schema_agnostic/IfcGeomIterator.h"
ParseIfcFile::ParseIfcFile() {} ParseIfcFile::ParseIfcFile() {}
ParseIfcFile::~ParseIfcFile() {} ParseIfcFile::~ParseIfcFile() {}
void ParseIfcFile::outputMsg(const std::string& msg)
{
emit parsingInfo(QString::fromStdString(msg));
}
void ParseIfcFile::Parse(const std::string& filePath) void ParseIfcFile::Parse(const std::string& filePath)
{ {
//IfcParse::IfcFile ifcFile(filePath); 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()) {
outputMsg("Error: Iterator failed to initialize! Aborting.");
delete it;
return;
}
do {
//const IfcGeom::BRepElement* bRepElem = it->get_native();
const IfcGeom::TriangulationElement* triElem = static_cast<const IfcGeom::TriangulationElement*>(it->get());
outputMsg(triElem->type() + ": " + triElem->name());
const boost::shared_ptr<IfcGeom::Representation::Triangulation>& triElemGeom = triElem->geometry_pointer();
// materials
const std::vector<IfcGeom::Material>& elemMats = triElemGeom->materials();
for (auto mat : elemMats) {
outputMsg(" " + mat.original_name());
}
} while (it->next());
} }
+11 -1
View File
@@ -1,10 +1,20 @@
#ifndef PARSEIFCFILE_H #ifndef PARSEIFCFILE_H
#define PARSEIFCFILE_H #define PARSEIFCFILE_H
#include <QObject>
#include <QString>
#include <string> #include <string>
class ParseIfcFile class ParseIfcFile : public QObject
{ {
Q_OBJECT
signals:
void parsingInfo(const QString& info);
private:
void outputMsg(const std::string& msg);
public: public:
ParseIfcFile(); ParseIfcFile();
~ParseIfcFile(); ~ParseIfcFile();