#include "itksys/SystemTools.hxx"
+#include "vtkPolyDataWriter.h"
+
void run(const args_info_clitkBinaryImageToMesh& argsInfo);
int main(int argc, char** argv)
psurface->SetInputConnection(pcontour->GetOutputPort());
vtkSmartPointer<vtkPolyDataMapper> skinMapper = vtkPolyDataMapper::New();
- skinMapper->SetInputConnection(psurface->GetOutputPort());
- skinMapper->ScalarVisibilityOff();
-
+ skinMapper->SetInputConnection(psurface->GetOutputPort());
+ skinMapper->ScalarVisibilityOff();
+
vtkSmartPointer<vtkActor> skin = vtkActor::New();
- skin->SetMapper(skinMapper);
-
+ skin->SetMapper(skinMapper);
+
vtkSmartPointer<vtkCamera> aCamera = vtkCamera::New();
- aCamera->SetViewUp (0, 0, -1);
- aCamera->SetPosition (0, 1, 0);
- aCamera->SetFocalPoint (0, 0, 0);
- aCamera->ComputeViewPlaneNormal();
+ aCamera->SetViewUp (0, 0, -1);
+ aCamera->SetPosition (0, 1, 0);
+ aCamera->SetFocalPoint (0, 0, 0);
+ aCamera->ComputeViewPlaneNormal();
aCamera->Dolly(1.5);
vtkSmartPointer<vtkRenderer> aRenderer = vtkRenderer::New();
aRenderer->ResetCameraClippingRange ();
vtkSmartPointer<vtkRenderWindow> renWin = vtkRenderWindow::New();
- renWin->AddRenderer(aRenderer);
+ renWin->AddRenderer(aRenderer);
renWin->SetSize(640, 480);
-
- vtkSmartPointer<vtkOBJExporter> pwriter2 = vtkOBJExporter::New();
- pwriter2->SetRenderWindow(renWin);
-
+
std::string output;
- if (argsInfo.output_given) {
- output = argsInfo.output_arg;
- if (itksys::SystemTools::FileIsDirectory(output.c_str())) {
- file = itksys::SystemTools::GetFilenameName(file.c_str());
- file = itksys::SystemTools::GetFilenameWithoutExtension(file.c_str());
- file = itksys::SystemTools::CollapseFullPath(file.c_str(), output.c_str());
- }
- else {
- file = output;
+ if (argsInfo.output_given) { output = argsInfo.output_arg; }
+
+ bool writeVTK = false;
+ if (output.length()>4) {
+ if (output.compare(output.length()-4, 4, ".vtk")==0) {
+ writeVTK=true;
}
}
- else {
- file = itksys::SystemTools::GetFilenameWithoutExtension(file);
+ if (writeVTK) {
+ vtkSmartPointer<vtkPolyDataWriter> wr = vtkSmartPointer<vtkPolyDataWriter>::New();
+ wr->SetInputConnection(psurface->GetOutputPort());
+ wr->SetFileName(output.c_str());
+ wr->Update();
+ wr->Write();
+ }
+ else {
+ vtkSmartPointer<vtkOBJExporter> pwriter2 = vtkOBJExporter::New();
+ pwriter2->SetRenderWindow(renWin);
+
+ if (argsInfo.output_given) {
+ output = argsInfo.output_arg;
+ if (itksys::SystemTools::FileIsDirectory(output.c_str())) {
+ file = itksys::SystemTools::GetFilenameName(file.c_str());
+ file = itksys::SystemTools::GetFilenameWithoutExtension(file.c_str());
+ file = itksys::SystemTools::CollapseFullPath(file.c_str(), output.c_str());
+ }
+ else {
+ file = output;
+ }
+ }
+ else {
+ file = itksys::SystemTools::GetFilenameWithoutExtension(file);
+ }
+ pwriter2->SetFilePrefix(file.c_str());
+ pwriter2->Write();
}
- pwriter2->SetFilePrefix(file.c_str());
- pwriter2->Write();
+
vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkRenderWindowInteractor::New();
- iren->SetRenderWindow(renWin);
+ iren->SetRenderWindow(renWin);
skinMapper->Update();
bool interact = argsInfo.view_flag;
#File clitkBinaryImageToMesh.ggo
package "clitkBinaryImageToMesh"
version "1.0"
-purpose "Get the HU profile along the given line. Output to stdout."
+purpose "Converts a binary image into a mesh object."
option "config" - "Config file" string no
option "verbose" v "Verbose" flag off
option "input" i "Input image" string yes
-option "output" o "Output mesh file prefix (if empty, use input file's base name as prefix; if a directoy, output to it using input file's base name as prefix; otherwise, use given name as prefix" string no
+option "output" o "Output mesh file prefix (if empty, use input file's base name as prefix; if a directoy, output to it using input file's base name as prefix; otherwise, use given name as prefix ; if names ends with .vtk the output is written as a vtkPolyData file" string no
option "view" - "View result" flag off