ui_ifcproject_20190702.h

#pragma once
/********************************************************************************
** Form generated from reading UI file 'ifcproject_201907.ui'
**
** Created by: Qt User Interface Compiler version 5.12.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/ #ifndef UI_IFCPROJECT_201907_H
#define UI_IFCPROJECT_201907_H #include <QFile>
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QToolBar>
#include <QtWidgets/QWidget>
#include <QtWidgets/QHBoxLayout> #include <QTableView>
#include <QDockWidget>
#include <QSplitter> QT_BEGIN_NAMESPACE class Ui_IFCProject_201907Class
{
public:
QMenuBar *menuBar;
QToolBar *mainToolBar;
QWidget *centralWidget;
QStatusBar *statusBar;
QSplitter *qsplitter1;
QHBoxLayout *horizontalLayout; QDockWidget *centerDockWidget; void setupUi(QMainWindow *IFCProject_201907Class)
{
if (IFCProject_201907Class->objectName().isEmpty())
IFCProject_201907Class->setObjectName(QString::fromUtf8("IFCProject_201907Class")); //QFile stylefile("F:\\IFCProject\\IFCProject_201907\\IFCProject_201907\\Resources\\styles.qss");
QFile stylefile("./Resources/styles.qss"); stylefile.open(QFile::ReadOnly);
QString styleSheet = QLatin1String(stylefile.readAll());
IFCProject_201907Class->setStyleSheet(styleSheet); IFCProject_201907Class->resize(, );
menuBar = new QMenuBar(IFCProject_201907Class);
menuBar->setObjectName(QString::fromUtf8("menuBar"));
IFCProject_201907Class->setMenuBar(menuBar); mainToolBar = new QToolBar(IFCProject_201907Class);
mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
IFCProject_201907Class->addToolBar(mainToolBar); centralWidget = new QWidget(IFCProject_201907Class);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
IFCProject_201907Class->setCentralWidget(centralWidget);
//IFCProject_201907Class->addDockWidget(); horizontalLayout = new QHBoxLayout(centralWidget);
horizontalLayout->setSpacing();
horizontalLayout->setContentsMargins(, , , );
horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); qsplitter1 = new QSplitter(centralWidget); QDockWidget *dock = new QDockWidget(qsplitter1);
dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
//addDockWidget(Qt::RightDockWidgetArea, dock);
//dock->setTitleBarWidget(IFCProject_201907Class);
//IFCProject_201907Class->addDockWidget(Qt::LeftDockWidgetArea, dock);
qsplitter1->addWidget(dock);
//qsplitter1->setOrientation(Qt::Vertical);
qsplitter1->setOrientation(Qt::Horizontal); centerDockWidget = new QDockWidget(qsplitter1);
//IFCProject_201907Class->addDockWidget(Qt::LeftDockWidgetArea, centerDockWidget); QTableView *tableView1 = new QTableView(dock);
tableView1->setMinimumHeight();
dock->setWidget(tableView1); qsplitter1->addWidget(centerDockWidget); QDockWidget *dockRight = new QDockWidget(qsplitter1);
dockRight->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
//addDockWidget(Qt::RightDockWidgetArea, dock);
//IFCProject_201907Class->addDockWidget(Qt::RightDockWidgetArea, dockRight);
qsplitter1->addWidget(dockRight); horizontalLayout->addWidget(qsplitter1); statusBar = new QStatusBar(IFCProject_201907Class);
statusBar->setObjectName(QString::fromUtf8("statusBar"));
IFCProject_201907Class->setStatusBar(statusBar); retranslateUi(IFCProject_201907Class); QMetaObject::connectSlotsByName(IFCProject_201907Class);
} // setupUi void retranslateUi(QMainWindow *IFCProject_201907Class)
{
IFCProject_201907Class->setWindowTitle(QApplication::translate("IFCProject_201907Class", "IFCProject_201907", nullptr));
} // retranslateUi }; namespace Ui {
class IFCProject_201907Class : public Ui_IFCProject_201907Class {};
} // namespace Ui QT_END_NAMESPACE #endif // UI_IFCPROJECT_201907_H

ifcproject_201907.cpp

#include "ifcproject_201907.h"

IFCProject_201907::IFCProject_201907(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
loadIfcModel();
} IFCProject_201907::~IFCProject_201907()
{ } void IFCProject_201907::loadIfcModel()
{
std::wstring m_file_path = L"D://yd0014.ifc";
IfcVCTool* ifcVCTool1 = new IfcVCTool();
osg::ref_ptr<osg::Switch> model_switch = ifcVCTool1->getModelNode();
SceneGraphUtils::clearAllChildNodes(model_switch);
ifcVCTool1->clearSelection(); // reset the IFC model
shared_ptr<GeometryConverter> geometry_converter = ifcVCTool1->getGeometryConverter();
geometry_converter->clearMessagesCallback();
geometry_converter->resetModel();
std::stringstream err; try
{
// load file to IFC model
ifcVCTool1->getModelReader()->loadModelFromFile(m_file_path, geometry_converter->getBuildingModel()); // convert IFC geometric representations into Carve geometry
geometry_converter->convertGeometry(); // convert Carve geometry to OSG
shared_ptr<ConverterOSG> converter_osg(new ConverterOSG(geometry_converter->getGeomSettings()));
converter_osg->setMessageTarget(geometry_converter.get());
converter_osg->convertToOSG(geometry_converter->getShapeInputData(), model_switch); // in case there are IFC entities that are not in the spatial structure
const std::map<int, shared_ptr<BuildingObject> >& objects_outside_spatial_structure = geometry_converter->getObjectsOutsideSpatialStructure();
if (objects_outside_spatial_structure.size() > )
{
osg::ref_ptr<osg::Switch> sw_objects_outside_spatial_structure = new osg::Switch();
sw_objects_outside_spatial_structure->setName("IfcProduct objects outside spatial structure"); converter_osg->addNodes(objects_outside_spatial_structure, sw_objects_outside_spatial_structure);
if (sw_objects_outside_spatial_structure->getNumChildren() > )
{
model_switch->addChild(sw_objects_outside_spatial_structure);
}
}
}
catch (OutOfMemoryException& e)
{
throw e;
}
catch (BuildingException& e)
{
err << e.what();
}
catch (std::exception& e)
{
err << e.what();
}
catch (...)
{
err << "loadModelFromFile, createGeometryOSG failed" << std::endl;
} try
{
if (model_switch)
{
bool optimize = true;
if (optimize)
{
osgUtil::Optimizer opt;
opt.optimize(model_switch);
} // if model bounding sphere is far from origin, move to origin
const osg::BoundingSphere& bsphere = model_switch->getBound();
if (bsphere.center().length() > )
{
if (bsphere.center().length() / bsphere.radius() > )
{
std::unordered_set<osg::Geode*> set_applied;
SceneGraphUtils::translateGroup(model_switch, -bsphere.center(), set_applied);
}
}
}
}
catch (std::exception& e)
{
err << e.what();
} geometry_converter->clearInputCache(); if (err.tellp() > )
{
throw BuildingException(err.str().c_str());
} ViewerWidget* viewer_widget = new ViewerWidget(ifcVCTool1);
viewer_widget->setRootNode(ifcVCTool1->getRootNode()); this->ui.centerDockWidget->setWidget(viewer_widget); //IfcTreeWidget* ifc_tree_widget = new IfcTreeWidget(ifcVCTool1);
//dock->setWidget(ifc_tree_widget); }

main.cpp

#include "ifcproject_201907.h"
#include <QtWidgets/QApplication> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
IFCProject_201907 w;
//w.show();
w.showMaximized();
return a.exec();
}

osg qt ifc的更多相关文章

  1. osg 渲染ifc数据-测试

    直接使用osg渲染ifc数据,提高渲染速度. #include "teslamanage.h" #include <QtWidgets/QApplication> #i ...

  2. osg qt fbx ifc bim osg ive 3ds max rvt

    项目环境变量配置 include E:\Qt\Qt5.12.2\5.12.2\msvc2017_64\include E:\OpenSourceGraph\OpenSceneGraph_install ...

  3. osg,qt编译的一些问题

    osg编译例子的时候,打开文件就出问题,可能是一些不兼容的问题 qt编译的是时候要添加qt和vs2010的整合工具,这样才能把 vs2010里面的QTDIR变量和环境变量QTDIR关联起来 同是右击文 ...

  4. [原][osg][QT]osg与QT界面结合的简单例子二

    //main.cpp #include "VREObliqueEditorQTWindow.h" #include <QtWidgets/QApplication> # ...

  5. [转][osg][QT]osg与QT界面结合的简单例子

    //QT += core gui opengl //LIBS += -losgViewer -losgDB -losgUtil -losg -lOpenThreads -losgGA -losgQt ...

  6. OSG Qt Widget加载三维模型

    graphicswindowqt.h #ifndef GRAPHICSWINDOWQT_H #define GRAPHICSWINDOWQT_H #include <QGLWidget> ...

  7. osg qt kdchart 开发施工过程模拟软件

    void TeslaManage::initGanttModel() { ganttModel = , , this); ganttModel->setHeaderData(, Qt::Hori ...

  8. osg qt 三维模型加载

    osg::ref_ptr<osg::Node> OSG_Qt_::operateMatrix() { osg::ref_ptr<osg::Group> group = new ...

  9. 关于OSG+QT+VS版本的问题

    CMake3.10.0 Qt5.11.0安装包只有VS2017_64版本,没有VS2017的32位版本,有VS2015的32位版本 Qt5.11.0+osg3.4在CMake的时候,会出现 CMake ...

随机推荐

  1. javascript遍历对象属性

    ":[{"name":"a2"}]}; console.log(Object.keys(obj)); Object.keys(obj).forEach ...

  2. P2746 P2812 [USACO5.3]校园网Network of Schools[SCC缩点]

    题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作"接受学校").注意即使 B 在 A 学校的分发列表中, A 也不一定在 B 学 ...

  3. 2019-2020-1 20199301《Linux内核原理与分析》第一周作业

    学习内容 搜查文件 刚添加的文件有时候会找不到 解决方案:新添加的文件要手动执行一次updatedb更新,就可以搜查到文件 查找某目录下的所有文件添加 * 号前面的反斜杠不能忘记打上,否则会无法找到 ...

  4. 7月新的开始 - Axure学习04 - 发布与预览、菜单和表格元件、流程图和连接点、标记元件

    Axure 的发布与预览 1.发布 2.生成html文件 常规:指定浏览器.工具栏的生成 页面.页面说明.元件说明.交互.标志(logo和描述).字体.移动设备等 3.发布到Axshare Axure ...

  5. django2.0报错Cannot import name 'urlresolvers'

    刚刚从django1.1迁移到django2.0中出现一个意外的报错: google 了下,在stack.overflow上解释是说django2.0 把原来的 django.core.urlreso ...

  6. [ZJOI2009] 硬币游戏(找规律)

    题目 洛谷传送门 题解 把1/21/21/2转化成0/10/10/1,所以直接可以异或. 对于长度为nnn的0/10/10/1数列,发现每变换2k(k>1)2^k(k>1)2k(k> ...

  7. faebdc的烦恼 莫队

    faebdc的烦恼 莫队 题面 思路 有点难想的莫队. 首先我们肯定要一个cnt[i]记录难度i出现的次数,但是我们发现每次删去一个难度后,如果那个难度的个数恰好是当前最多次数,我们就可能要更新一下答 ...

  8. Centos7的rabbitmq镜像集群

    1.下载RabbitMQ vim /etc/hosts10.10.21.197 rabbit110.10.21.198 rabbit2 #分别命名hostname rabbit1hostname ra ...

  9. docker部署springboot应用

    1.安装运行node image docker pull java:8 2.将编译后的jar包上传到主机上 3.编写dockerfile,并创建镜像 Dockerfile FROM java:8MAI ...

  10. HDU 6129 Just do it ——(找规律)

    思路见:http://blog.csdn.net/qq_32506797/article/details/77206167. 利用二进制讲m次转化成log次然后进行转移. 代码如下: #include ...