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. Nginx- web服务配置与测试

    (一) 软件介绍由俄罗斯人lgor Sysove开发,为开源软件.支持高并发:支持几万并发连接(特别是静态小文件业务环境) 资源消耗少:在3万并发连接下开启10个Nginx线程消耗内存不到200M 支 ...

  2. rsync详细解读

    本文通过示例详细分析rsync算法原理和rsync的工作流程,是对rsync官方技术报告和官方推荐文章的解释.本文不会介绍如何使用rsync命令(见rsync基本用法),而是详细解释它如何实现高效的增 ...

  3. 分布式版本控制工具Git

    一.Git技术简介 Git是一个分布式版本控制系统,与集中式的SVN不同. 1. 主要特点 集中式特点: 所有人的资源全部保存在中央服务器. 所有人开发前都需要从中央服务器上下载同步其他人的代码才能继 ...

  4. [Sdoi2013] [bzoj 3198] spring (hash+容斥原理)

    题目描述 给出nnn个666维坐标,求有多少对点对满足恰好mmm个位置相等 1<=n<=1051<=n<=10^51<=n<=105 0<=k<=60& ...

  5. docker学习(六) Docker命令查询

    Docker命令查询 1.基本语法docker [OPTIONS] COMMAND [arg...]一般来说,Docker 命令可以用来管理 daemon,或者通过 CLI 命令管理镜像和容器.可以通 ...

  6. emit传多个参数

    https://blog.csdn.net/lxy123456780/article/details/87811113 子组件: this.$emit('closeChange',false,true ...

  7. 010_IAR安装

    链接:https://pan.baidu.com/s/14qZh1Gxl32dD2TWdjEYP7Q提取码:yj65 复制这段内容后打开百度网盘手机App,操作更方便哦 里面有安装说明 (一)编辑界面 ...

  8. bootstrap-wysihtml5 ckeditor 修改富文本编辑器可以上传图片

    bootstrap-wysihtml5 ckeditor 修改富文本编辑器可以上传图片   bootstrap-wysihtml5实际使用内核为ckeditor     故这里修改ckeditor即可 ...

  9. java利用webuploader实现超大文件分片上传、断点续传

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小 ...

  10. 数据结构实验之二叉树六:哈夫曼编码(SDUT 3345)

    题解:离散中的"最小生成树(最优树)". #include <bits/stdc++.h> using namespace std; void qusort(int l ...