VTK学习笔记(二十)vtk 读取stl文件

VTK学习笔记(二十)vtk 读取stl文件

1、代码

#include <vtkPolyData.h>
#include <vtkSTLReader.h>
#include <vtkSmartPointer.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>

int main()
{
    
    
    std::string inputFilename = "D:/documents/python/sql/stem/Smith & Nephew_VERSAPLUS HOCL_7#_112.0613505_42.556_50.24686368_131.0_40.0.stl";

    vtkSmartPointer<vtkSTLReader> reader = vtkSmartPointer<vtkSTLReader>::New();
    reader->SetFileName(inputFilename.c_str());
    reader->Update();

    vtkSmartPointer<vtkPolyDataMapper> mapper =
        vtkSmartPointer<vtkPolyDataMapper>::New();
    mapper->SetInputConnection(reader->GetOutputPort());

    vtkSmartPointer<vtkActor> actor =
        vtkSmartPointer<vtkActor>::New();
    actor->SetMapper(mapper);

    vtkSmartPointer<vtkRenderer> renderer =
        vtkSmartPointer<vtkRenderer>::New();
    vtkSmartPointer<vtkRenderWindow> renderWindow =
        vtkSmartPointer<vtkRenderWindow>::New();
    renderWindow->AddRenderer(renderer);
    vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
        vtkSmartPointer<vtkRenderWindowInteractor>::New();
    renderWindowInteractor->SetRenderWindow(renderWindow);

    renderer->AddActor(actor);
    renderer->SetBackground(.3, .6, .3); 
    renderWindow->SetSize(640, 480);

    renderWindow->Render();
    renderWindowInteractor->Start();
    return 0;
}

2、CMakeLists.txt

cmake_minimum_required(VERSION 3.3 FATAL_ERROR)

project(testfilter)

set(VTK_DIR D:/ProgramFiles/vtk-9.0/lib/cmake/vtk-9.0)
find_package(VTK COMPONENTS
  vtkCommonColor
  vtkCommonCore
  vtkCommonDataModel
  vtkFiltersSources
  vtkIOImage
  vtkImagingStencil
  vtkFiltersCore
  vtkRenderingCore
  vtkFiltersHybrid
  vtkInteractionStyle
  vtkRenderingFreeType
  vtkRenderingOpenGL2
  vtkRenderingVolumeOpenGL2
  vtkImagingCore
  vtkImagingColor
  vtkImagingSources
  vtkInteractionStyle
  vtkRenderingContextOpenGL2
  vtkRenderingGL2PSOpenGL2
  vtkRenderingCore
  vtkIOGeometry
  QUIET
)

if (NOT VTK_FOUND)
  message("Skipping testfilter: ${VTK_NOT_FOUND_MESSAGE}")
  return()
endif()
message (STATUS "VTK_VERSION: ${VTK_VERSION}")

if (VTK_VERSION VERSION_LESS "8.90.0")
  # old system
  include(${VTK_USE_FILE})
endif()

file(GLOB_RECURSE mains ${CMAKE_CURRENT_SOURCE_DIR} *.cpp)
message(STATUS ${mains})
foreach(mainfile IN LISTS mains)
    # Get file name without directory
    get_filename_component(mainname ${mainfile} NAME_WE)
	Message("mainname:", ${mainname})
    add_executable(${mainname} ${mainfile})	
    target_link_libraries (${mainname} ${VTK_LIBRARIES})
	# vtk_module_autoinit is needed
   if (NOT VTK_VERSION VERSION_LESS "8.90.0")
     # vtk_module_autoinit is needed
     vtk_module_autoinit(
        TARGETS ${mainname}
        MODULES ${VTK_LIBRARIES}
        )
      endif()
	
endforeach()

测试结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/juluwangriyue/article/details/123508889