**使用的VTK版本是8.2,但是网上使用的VTK版本很老,直接复制会出现无法解析外部符号等的错误,我们只需要更新以下代码里的部分内容即可,
其中需要注意的是:
下面的三行代码,需要根据自己lib目录下的文件名进行重新命名,例如我的是:

我只要在这里的模块初始化时,
vtkRenderingOpenGL—>vtkRenderingOpenGL2 ,即可,剩下的两项类似。

VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);

具体的代码如下:**

//#define WNT
#include <gp_Circ.hxx>
#include <gp_Elips.hxx>
#include <gp_Sphere.hxx>#include <Poly_Polygon3D.hxx>
#include <Poly_Triangulation.hxx>#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <TopTools_HSequenceOfShape.hxx>#include <BRepBuilderAPI_MakeVertex.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>#include <IGESControl_Controller.hxx>
#include <IGESControl_Writer.hxx>
#include <IGESControl_Reader.hxx>#include <TopoDS_Edge.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS.hxx>#include <BRep_Tool.hxx>
#include <BRepMesh.hxx>
#include <BRepMesh_IncrementalMesh.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>
#include <BRepBuilderAPI_MakeFace.hxx>#include <BRepAdaptor_Curve.hxx>
#include <GCPnts_TangentialDeflection.hxx>
#include <TopExp_Explorer.hxx>
#include <Standard_TypeDef.hxx>#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>//vtk lib
#include <vtkSmartPointer.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkCellArray.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
//这里添加一个头文件
#include <vtkAutoInit.h>#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkProperty.h>
#include <vtkTriangle.h>Standard_Integer ReadIGES(const Standard_CString& aFileName,Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape)
{IGESControl_Reader Reader;Standard_Integer status = Reader.ReadFile(aFileName);if (status != IFSelect_RetDone){return status;}Reader.TransferRoots();TopoDS_Shape aShape = Reader.OneShape();aHSequenceOfShape->Append(aShape);return status;
}void BuildMesh(vtkRenderer* render, const TopoDS_Face& face, double deflection = 0.1)
{TopLoc_Location location;//BRepMesh::Mesh(face, deflection);该函数已经弃用BRepMesh_IncrementalMesh(face, deflection);Handle_Poly_Triangulation triFace = BRep_Tool::Triangulation(face, location);Standard_Integer nTriangles = triFace->NbTriangles();gp_Pnt vertex1;gp_Pnt vertex2;gp_Pnt vertex3;Standard_Integer nVertexIndex1 = 0;Standard_Integer nVertexIndex2 = 0;Standard_Integer nVertexIndex3 = 0;TColgp_Array1OfPnt nodes(1, triFace->NbNodes());Poly_Array1OfTriangle triangles(1, triFace->NbTriangles());nodes = triFace->Nodes();triangles = triFace->Triangles();vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();vtkSmartPointer<vtkCellArray> cells = vtkSmartPointer<vtkCellArray>::New();vtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();points->Allocate(nTriangles * 3);cells->Allocate(nTriangles);int id = 0;for (Standard_Integer i = 1; i <= nTriangles; i++){Poly_Triangle aTriangle = triangles.Value(i);aTriangle.Get(nVertexIndex1, nVertexIndex2, nVertexIndex3);vertex1 = nodes.Value(nVertexIndex1).Transformed(location.Transformation());vertex2 = nodes.Value(nVertexIndex2).Transformed(location.Transformation());vertex3 = nodes.Value(nVertexIndex3).Transformed(location.Transformation());points->InsertNextPoint(vertex1.X(), vertex1.Y(), vertex1.Z());points->InsertNextPoint(vertex2.X(), vertex2.Y(), vertex2.Z());points->InsertNextPoint(vertex3.X(), vertex3.Y(), vertex3.Z());vtkSmartPointer<vtkTriangle> triangle = vtkSmartPointer<vtkTriangle>::New();triangle->GetPointIds()->SetId(0, id * 3);triangle->GetPointIds()->SetId(1, id * 3 + 1);triangle->GetPointIds()->SetId(2, id * 3 + 2);// Add the triangle to a cell arraycells->InsertNextCell(triangle);id++;}polyData->SetPoints(points);polyData->SetPolys(cells);vtkSmartPointer<vtkPolyDataMapper> sourceMapper = vtkSmartPointer<vtkPolyDataMapper>::New();//setInput函数已经弃用,使用SetInputData()sourceMapper->SetInputData(polyData);vtkSmartPointer<vtkActor> sourceActor = vtkSmartPointer<vtkActor>::New();sourceActor->SetMapper(sourceMapper);sourceActor->GetProperty()->SetColor(1, 0, 0);render->AddActor(sourceActor);}void BuildScene(vtkRenderer *renderer, Handle(TopTools_HSequenceOfShape)& aHSequenceOfShape)
{Standard_Integer index = aHSequenceOfShape->Length();TopoDS_Shape theCompSolid = aHSequenceOfShape->ChangeValue(index);for (TopExp_Explorer faceExp(theCompSolid, TopAbs_FACE); faceExp.More(); faceExp.Next()){// The 3d-mesh of the FACE is assembled to form the// boundary of the SOLID.const TopoDS_Face& theFace = TopoDS::Face(faceExp.Current());BuildMesh(renderer, theFace);}}//这里添加三行代码
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);int main(void){vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();renderWindow->AddRenderer(renderer);vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();renderWindowInteractor->SetRenderWindow(renderWindow);Handle(TopTools_HSequenceOfShape) aHSequenceOfShape = new TopTools_HSequenceOfShape();Standard_Integer status = ReadIGES("F:\\Researching\\ZhangGui\\test resource\\zhizuo_1.igs", aHSequenceOfShape);cout << "return status:" << status << endl;BuildScene(renderer, aHSequenceOfShape);renderer->SetBackground(1, 1, 1);// Render and interactrenderWindow->Render();renderWindowInteractor->Start();return 0;}

将VTK的lib、头文件添加到当前项目即可(include,lib文件夹,还要在附加依赖项中添加VTK的lib的名字),最后将IGES的文件路径改为你的文件路径即可。

VTK进行IGES文件的读取及显示相关推荐

  1. 数字图像处理(极简) 第三章 BMP文件的读取与显示(docx)

    建议先修课程:高等数学(微积分).线性代数. 参考书目: 1.图像工程(上册)--图像处理(第4版) 章毓晋 清华大学出版社 链接:https://pan.baidu.com/s/1hEMGRUotQ ...

  2. matlab 读取csv_利用Pytorch进行数据加载1--CSV文件的读取和显示

    import os # 文件处理模块,用于处理文件和目录 import torch # pytorch的深度学习框架 import pandas as pd #人脸识别库 from skimage i ...

  3. Android开发笔记(一百四十)Word文件的读取与显示

    读取纯文本 现在手机的用途越来越广泛,从原来只有通讯功能的电话,到拍照手机,到上网手机,再到办公手机,可谓是无所不能了.说到办公,除了收发邮件,还有个频繁使用的功能,就是处理word文件.电脑上的of ...

  4. BMP文件的读取与显示

    有三个函数能够完毕这一功能 1.BitBlt BitBlt 用于从原设备中复制位图到目标设备 void CMFCApplication1View::OnDraw(CDC* pDC) {CMFCAppl ...

  5. 使用CadLib实现CAD(dxf、dwg格式)文件的读取和显示

    参考文章:CadLib 3.5 documentationhttps://www.woutware.com/doc/cadlib3.5/Index.aspx 读取:定义DxfModel类型的变量mod ...

  6. vivado下ila文件的读取和显示

    保存ila文件 file-->export-->export ila_data.可以保存为ila格式或者vcd格式 (可以在modelism下转化为wlf文件后打开查看波形.) 打开保存后 ...

  7. raw文件与jpg文件的读取/转换/显示

    ⚠️cv2中为bgr,而matplotlib/imageio中为rgb ⚠️基本上基于np和cv2就可以实现了 注:.jpg到.raw 使用.tofile实现,图上忘写了 #jpg---raw imp ...

  8. CAD(dxf、dwg格式)文件的读取和显示,真正实现通过代码预览CAD文件,包含解析dwg、dxf文件,可以提取标注信息,可以转换为pdf、png、tiff、gif等6种格式的文件,可以永久免费实用

    真正实现通过代码预览CAD文件,包含解析dwg.dxf文件,可以提取标注信息,可以转换为pdf.png.tiff.gif等6种格式的文件,可以永久免费实用. 网上看了很多资料,不是缺这个就是少那个,反 ...

  9. 转载:html打开本地文件夹读取,显示图片

    仅作为记录,大佬请跳过 感谢大佬博主文章,传送门 1.vs code中建立a.html 2.a.html代码: <!DOCTYPE html> <html> <head& ...

最新文章

  1. android 5.0 9300,三星Android5.0升级名单曝光 S2止步4.2
  2. 外媒列10大理由建议消费者不购买iPad
  3. 使用Lex和Yacc开发C语言的编译器
  4. Mac模拟慢速网络 - Network Link Conditioner 安装和使用
  5. android项目wehpu,README.md
  6. laravel构造器的CURD
  7. node.js 针对不同的请求路径(url) 做出不同的响应
  8. Linux网络设置(第二版) --Linux网络设置
  9. Spring的事务管理难点剖析(4):多线程的困惑
  10. Soul递交IPO招股书:腾讯为第一大股东,依然处于亏损状态
  11. postgreSQL源码分析——索引的建立与使用——GIST索引(1)
  12. 亚马逊出的平板电脑_加量不加价,亚马逊推出新款 Fire 7 平板电脑
  13. BlackBerry刷机教程
  14. java html网页生成pdf文件,html 网页生成pdf 文件
  15. element 日期选择图标_TimePicker 时间选择器
  16. 金刚石结构的各向异性
  17. SpringBoot 3.0最低版本要求的JDK 17,这几个新特性不能不知道
  18. thinkadmin开源框架获取添加信息的主键id
  19. 算法训练 幸运的店家
  20. 油溶性Cu,Mn共掺杂量子点ZnS量子点,ZnSe量子点,ZnInS量子点光转换材料

热门文章

  1. 磁盘这列(Raid)
  2. 计算机速录教程,亚伟中文速录机培训教程-第二讲课件
  3. Dapper入门教程
  4. Kubernetes 原理剖析与实战08 配置管理:Kubernete 管理业务配置方式有哪些?
  5. Relief特征选择算法
  6. 100集华为HCIE安全培训视频教材整理 | 防火墙互联技术(二)
  7. 虚假新闻检测的论文阅读笔记——sigir2021:User Preference-aware Fake News Detection
  8. 阿里云服务器配置+使用宝塔面板+不用安装Xshell或其他软件
  9. LWN:利用 __GFP_UNMAPPED 减少direct-map 碎片化!
  10. 光纤通信系统根据传输距离不同的分类