OpenCascade VTK STEP/IGES文件读取显示

2024-02-07 12:20

本文主要是介绍OpenCascade VTK STEP/IGES文件读取显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

OpenCascade & VTK STEP/IGES文件读取显示,OpenCascade读取转成STL,VTK显示STL。

Download - Open CASCADE Technology
https://dev.opencascade.org/release

下载exe并安装,可以把source下载下来学习,官网速度慢,可到网盘下载

链接:https://pan.baidu.com/s/1_ARH9jRMPxO_GWNWXT64fw 
提取码:zyes

安装完成后,把除了qt和vtk的文件夹的bin都加到环境变量,在不同的电脑有可能openvr没被自动安装,需要下载然后win64的bin加环境变量

GitHub - ValveSoftware/openvr: OpenVR SDK
https://github.com/ValveSoftware/openvr

pro添加

INCLUDEPATH += C:/OpenCASCADE-7.7.0-vc14-64/opencascade-7.7.0/inc
LIBS += C:/OpenCASCADE-7.7.0-vc14-64/opencascade-7.7.0/win64/vc14/lib/*.lib

基于OCC,将IGES模型文件转换为STL,进而在VTK中显示。网上别的一般都是错的。-CSDN博客
https://blog.csdn.net/hbwhzc/article/details/131571397

GitHub - Jelatine/JellyCAD: The simple CAD software which is based on OCC.
https://github.com/Jelatine/JellyCAD

Open Cascade Data Exchange --- STL - eryar - C++博客
http://www.cppblog.com/eryar/archive/2013/05/01/199882.aspx

#include <TopoDS_Shape.hxx>
#include <StlAPI_Writer.hxx>
#include <STEPControl_Reader.hxx>
#include <vtkSTLReader.h>
#include <TDocStd_Document.hxx>
#include <STEPCAFControl_Reader.hxx>
#include <BRepMesh_IncrementalMesh.hxx>
#include <IGESControl_Reader.hxx>
#include <IGESCAFControl_Reader.hxx>#define vtkNewMember(Var, Type) \if (Var) \{ \Var->Delete(); \} \Var = Type::New();void MainWindow::on_pushButton_stp_clicked()
{QString file = QFileDialog::getOpenFileName(this, QStringLiteral("打开IGES/STEP文件"), ".", "*.step;; *.iges");if (!file.isEmpty()){TopoDS_Shape shape;if (file.endsWith("step")){STEPControl_Reader reader;IFSelect_ReturnStatus stat = reader.ReadFile(file.toUtf8().data());if (stat != IFSelect_RetDone){return;}reader.TransferRoots();shape = reader.OneShape();}else if (file.endsWith("iges")){IGESControl_Reader reader;reader.ReadFile(file.toUtf8().data());reader.TransferRoots();shape = reader.OneShape();}StlAPI_Writer writer;const Standard_Real deflection = 0.1;BRepMesh_IncrementalMesh(shape,deflection,Standard_True);Standard_Boolean ret = writer.Write(shape, "output.stl");if (!ret){return;}vtkNewMember(mSTPSTLReader, vtkSTLReader);mSTPSTLReader->SetFileName("output.stl");mSTPSTLReader->Update();vtkNewMember(mSTPSTLMapper, vtkPolyDataMapper);mSTPSTLMapper->SetInputData(mSTPSTLReader->GetOutput());if (mSTPSTLRenderer && mSTPSTLActor){mSTPSTLRenderer->RemoveActor(mSTPSTLActor);ui->widget_stp->GetRenderWindow()->RemoveRenderer(mSTPSTLRenderer);}vtkNewMember(mSTPSTLActor, vtkActor);mSTPSTLActor->SetMapper(mSTPSTLMapper);vtkNewMember(mSTPSTLRenderer, vtkRenderer);mSTPSTLRenderer->AddActor(mSTPSTLActor);mSTPSTLRenderer->SetBackground(0.1, 0.2, 0.3);ui->widget_stp->GetRenderWindow()->AddRenderer(mSTPSTLRenderer);ui->widget_stp->GetRenderWindow()->Render();}
}

这篇关于OpenCascade VTK STEP/IGES文件读取显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/687702

相关文章

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

Java读取InfluxDB数据库的方法详解

《Java读取InfluxDB数据库的方法详解》本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、... 首先,创建一个Java项目,用于撰写代码。接下来,配置所需要的依赖;这里我们就选择可用于与Infl

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

SpringBoot使用Apache POI库读取Excel文件的操作详解

《SpringBoot使用ApachePOI库读取Excel文件的操作详解》在日常开发中,我们经常需要处理Excel文件中的数据,无论是从数据库导入数据、处理数据报表,还是批量生成数据,都可能会遇到... 目录项目背景依赖导入读取Excel模板的实现代码实现代码解析ExcelDemoInfoDTO 数据传输

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

Python读取TIF文件的两种方法实现

《Python读取TIF文件的两种方法实现》本文主要介绍了Python读取TIF文件的两种方法实现,包括使用tifffile库和Pillow库逐帧读取TIFF文件,具有一定的参考价值,感兴趣的可以了解... 目录方法 1:使用 tifffile 逐帧读取安装 tifffile:逐帧读取代码:方法 2:使用

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName