📄 demo_vtk_stl_reader_modificado.cpp
字号:
/*
Author: Chung Kai Lun Peter
Email: hkpeterpeter@gmail.com
File:
demo_vtk_stl_reader.cpp
Purpose:
Ported from stl.tcl
*/
#include "vtkLODActor.h"
#include "vtkPolyDataMapper.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkRenderer.h"
#include "vtkSTLReader.h"
#include "vtkImplicitPlaneWidget.h"
#include "vtkClipPolyData.h"
#include "vtkProperty.h"
#include "vtkCamera.h"
#include "vtkPlaneSource.h"
#include "vtkPlane.h"
#include "vtkAppendPolyData.h"
// Set VTK data root here..
// #define VTK_DATA_ROOT "D:\\Users\\Peter\\bin\\VTKData\\Data\\"
int main(int argc, char** argv)
{
double vet[3];
// This example demonstrates the use of vtkSTLReader to load data into VTK from
// a file. This example also uses vtkLODActor which changes its graphical
// representation of the data to maintain interactive performance.
//
// First we include the VTK Tcl packages which will make available
// all of the vtk commands to Tcl
//
// Create the Renderer, RenderWindow, and RenderWindowInteractor
//
vtkRenderer *ren1 = vtkRenderer::New();
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer(ren1);
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(renWin);
//planoCorte->SetInteractor(iren);
//vtkConeSource *Cone = vtkConeSource::New();
// Create the reader and read a data file. Connect the mapper and actor.
vtkSTLReader *sr = vtkSTLReader::New();
sr->SetFileName("C:\\Lenilson\\Inicio\\soldado.stl");
//vtkPlaneSource *Plano = vtkPlaneSource::New();
//Plano->SetXResolution(20);
//Plano->SetYResolution(20);
vtkPlane *Planoteste = vtkPlane::New();
vtkPolyDataMapper *stlMapper = vtkPolyDataMapper::New();
stlMapper->SetInputConnection(sr->GetOutputPort());
// vtkPolyData *Cranio = vtkPolyData::New();
// vtkPolyDataMapper *maceMapper = vtkPolyDataMapper::New();
// maceMapper->SetInputConnection(stlMapper->GetOutputPort());
// vtkLODActor *maceActor = vtkLODActor::New();
// maceActor->SetMapper(maceMapper);
// maceActor->VisibilityOn();
/*
vtkClipPolyData *clipper = vtkClipPolyData::New();
clipper->SetInputConnection(stlMapper->GetOutputPort());
clipper->SetClipFunction(Planoteste);
clipper->InsideOutOn();
vtkPolyDataMapper *selectMapper = vtkPolyDataMapper::New();
selectMapper->SetInputConnection(clipper->GetOutputPort());
vtkLODActor *selectActor = vtkLODActor::New();
selectActor->SetMapper(selectMapper);
selectActor->GetProperty()->SetColor(0,1,0);
selectActor->VisibilityOff();
selectActor->SetScale(1.01,1.01,1.01);
*/
vtkLODActor *stlActor = vtkLODActor::New();
//vtkAppendPolyData *apd = vtkAppendPolyData::New();
// apd->AddInput(stlMapper);
//vtkPolyDataMapper *planoMapper = vtkPolyDataMapper::New();
//planoMapper->SetInputConnection(Plano->GetOutputPort());
//vtkLODActor *planoActor = vtkLODActor::New();
stlActor->SetMapper(stlMapper);
stlActor->GetProperty()->SetColor(1,0,0);
stlActor->RotateX(90);
//planoActor->SetMapper(planoMapper);
//planoActor->SetScale(300,300,300);
//planoActor->GetProperty()->SetColor(0,0,0);
//planoActor->RotateY(90);
stlActor->SetPosition(0,0,0);
//planoActor->SetPosition(128,-150,100);
/*
vtkImplicitPlaneWidget *planeWidget = vtkImplicitPlaneWidget::New();
planeWidget->SetInteractor(iren);
planeWidget->SetPlaceFactor(1.25);
planeWidget->SetInput(sr->GetOutput());
planeWidget->PlaceWidget();
//planeWidget->SetNormal(1,1,1);
//planeWidget->SetOrigin(0,0,-0.5);
planeWidget->GetPlane(Planoteste);
stlActor->VisibilityOn();
*/
// Add the actors to the render; set the background and size
//
//ren1->AddActor(maceActor);
// ren1->AddActor(selectActor);
ren1->AddActor(stlActor);
ren1->SetBackground(0.1, 0.2, 0.4);
renWin->SetSize(500, 500);
//ren1->AddActor(planoActor);
// Zoom in closer
ren1->ResetCamera();
vtkCamera* cam1 = (ren1->GetActiveCamera());
cam1->Zoom(1.4);
iren->Initialize();
iren->Start();
return 0 ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -