A-5 2023/12/10
项目说明
-
基于vsg的CAD模型查看器,最后实现虚实融合
-
完成OCCT的TopoDs_Shape的离散化
-
连接Qt,VSG与OCCT,显示OCC提供的几何体
-
- 新建QT项目,并命名为OCCVSG
环境配置
- VulkanSceneGraph 版本1.0.9
- Vulkan 版本1.3.268.0
- FlatBuffers
- Qt 版本5.12以上,不要版本6
- VSGQT 版本0.1.0
- OpenCasCade 版本7.7.0以上
功能说明
- 实现了菜单栏,工具栏,侧边栏滑动窗口等前端控件布局及控件逻辑
- 实现了stp文件,fb文件的读取,实现了stp文件的装配树
- 利用vsg对几何体进行了简单的渲染,能显示fb文件,stp文件读取的CAD模型
展望
-
能拾取、点选CAD模型,并且高亮显示
-
实现线框逻辑显示,点击线框按钮,实现线框与实体之间的切换,线框指三角面片的边框
-
计算轮廓线
-
增加现实场景
-
将读取进来的CAD模型放入场景中
-
渲染模型阴影,并在真实场景中去平面显示
-
渲染模型材质
-
整合代码,统一格式和接口,尤其是修改VSGWidget的相关函数,完善画布
类说明
现有如下类,以及包括的函数
类 | 说明 |
---|---|
VSGWindow | 创建主窗口,包括画布、菜单栏工具栏等 |
VSGWidget | 创建qt的qwindow,连接前端界面和渲染窗口 |
CADMesh | 读取文件 |
- VSGWindow
函数 | 说明 |
---|---|
VSGWindow | 构造函数,初始化菜单栏、工具栏、画布等 |
void createMenu | 创建菜单栏 |
void createSiber | 创建侧边栏 |
void createToolbar | 创建工具栏 |
void on_Action_Read | 实现读取文件的按钮逻辑 |
void on_Action_Clear | 实现清空场景的按钮逻辑 |
void on_Action_Treeview | 实现树形控件的按钮逻辑 |
- VSGWidget
函数 | 说明 |
---|---|
VSGWidget | 构造函数,初始化创建画布所需要的函数 |
vsg::ref_ptr<vsg::Node> createStpScene | 创建stp文件的场景 |
vsg::ref_ptr<vsg::Node> createTestScene | 创建fb文件的场景 |
vsg::ref_ptr<vsg::Node> createLargeTestScene | 创建VSG自带的几何模型场景 |
vsg::ref_ptr<vsg::Node> createclearScene | 空白场景,用于清除 |
QWidget* ClearWidget | 创建空白画布 |
QWidget* CreateWidget | 创建fb文件画布 |
QWidget* CreateStpWidget | 创建Stp文件画布 |
vsgQt::Window* createWindow | 创建基础画布 |
void setmyfilepath | 修改文件读取路径 |
- CADMesh
函数 | 说明 |
---|---|
void buildnode | 有三个重载函数,读取fb,stp文件,并把模型离散化 |
void MakeTree | 用于创建树形目录的深度遍历函数 |
QTreeWidget* CreateQwidgettree | 读取xde信息,创建树形目录 |
std::string toString | 字符串转化函数,把occ里的字符串格式转化成Qt的格式 |
详细配置说明
-
Qt安装,并且在Visual Studio上链接Qt,需要下载扩展工具 参考链接
-
环境配置完成后,创建新项目
- 将我们之前安装好的库都链接进来
- 以下是链接库的名称
vsgqt.lib
vulkan-1.lib
vsg.lib
TKBin.lib
TKBinL.lib
TKBinTObj.lib
TKBinXCAF.lib
TKBO.lib
TKBool.lib
TKBRep.lib
TKCAF.lib
TKCDF.lib
TKDCAF.lib
TKDFBrowser.lib
TKDraw.lib
TKernel.lib
TKFeat.lib
TKFillet.lib
TKG2d.lib
TKG3d.lib
TKGeomAlgo.lib
TKGeomBase.lib
TKHLR.lib
TKIGES.lib
TKLCAF.lib
TKMath.lib
TKMesh.lib
TKMeshVS.lib
TKMessageModel.lib
TKMessageView.lib
TKOffset.lib
TKOpenGl.lib
TKOpenGlTest.lib
TKPrim.lib
TKQADraw.lib
TKRWMesh.lib
TKService.lib
TKShapeView.lib
TKShHealing.lib
TKStd.lib
TKStdL.lib
TKSTEP.lib
TKSTEP209.lib
TKSTEPAttr.lib
TKSTEPBase.lib
TKSTL.lib
TKTInspector.lib
TKTInspectorAPI.lib
TKTObj.lib
TKTObjDRAW.lib
TKToolsDraw.lib
TKTopAlgo.lib
TKTopTest.lib
TKTreeModel.lib
TKV3d.lib
TKVCAF.lib
TKView.lib
TKViewerTest.lib
TKVInspector.lib
TKVRML.lib
TKXCAF.lib
TKXDEDRAW.lib
TKXDEIGES.lib
TKXDESTEP.lib
TKXMesh.lib
TKXml.lib
TKXmlL.lib
TKXmlTObj.lib
TKXmlXCAF.lib
TKXSBase.lib
TKXSDRAW.lib
-
注意,放入文件的时候需要修改ui文件的文件名,具体在以下两处,修改为自己创建的工程名称即可
-
将data文件放入工程文件的根目录下
-
注意,成功运行却中途退出很可能是文件路径的问题,请务必仔细
TObj.lib
TKXmlXCAF.lib
TKXSBase.lib
TKXSDRAW.lib
-
注意,放入文件的时候需要修改ui文件的文件名,具体在以下两处,修改为自己创建的工程名称即可[外链图片转存中…(img-a3zZyXaz-1705389052227)]
-
将data文件放入工程文件的根目录下
-
注意,成功运行却中途退出很可能是文件路径的问题,请务必仔细