Here it is, I omitted the inclusion of the header files and the output
section
int main ( int argc, char *argv[] )
{
std::string filename = argv[1];
// Read data from the file
vtkSmartPointer<vtkXMLPolyDataReader> reader =
vtkSmartPointer<vtkXMLPolyDataReader>::New();
reader->SetFileName(filename.c_str());
reader->Update();
// polydata object
vtkSmartPointer<vtkPolyData> polydata = reader->GetOutput();
// get normals
vtkDoubleArray *pointNormalsArray = vtkDoubleArray::SafeDownCast
(polydata->GetPointData()->GetNormals());
vtkSmartPointer<vtkPolyData> newpolydata =
vtkSmartPointer<vtkPolyData>::New();
vtkSmartPointer<vtkPoints> newPoints =
vtkSmartPointer<vtkPoints>::New();
// for every point p1 in the polydata find the point p2 which lies on
the normal at a distance D from p1
for(vtkIdType i = 0; i < pointNormalsArray->GetNumberOfTuples(); i++)
{
double p1[3];
polydata->GetPoint(i,p1); //prendo il punto
double pN[3];
pointNormalsArray->GetTuple(i, pN);
double p2[3];
double D=2*atoi(argv[3]);
p2[0]=p1[0]-pN[0]*D;
p2[1]=p1[1]-pN[1]*D;
p2[2]=p1[2]-pN[2]*D;
vtkIdType pid[1];
pid[0]=newPoints->InsertNextPoint(p2);
}
//set points to polydata
newpolydata->SetPoints(newPoints);
return EXIT_SUCCESS;
}
Post by Bill LorensenPlease post a small, complete, compilable example that illustrates your problem.
On Tue, Apr 8, 2014 at 3:19 AM, elena bresciani
Post by elena brescianiThank you guys,
I tried changing the type of PointNormalArray in vtkDoubleArray
vtkDoubleArray *PointNormalArray = vtkDoubleArray::SafeDownCast(
polydata->GetPointData()->GetNormals() ) ;
but I still have the segfault.
Elena
2014-04-07 19:31 GMT+02:00 Goodwin Lawlor <
Post by Goodwin LawlorThanks for that link Shawn and setting me straight (I did day I could be
wrong ;-))
vtkSmartPointer<vtkPolyData> polydata =
vtkSmartPointer<vtkPolyData>::New();
then initializing a smart pointer not created with the form on the RHS
above wouldn't work...
Goodwin
Post by Shawn WaldonHi Goodwin,
It shouldn't be causing the segfault. That line will create a new
smart
incrementing
http://www.vtk.org/Wiki/VTK/Tutorials/SmartPointers#Getting_an_Object_with_a_Smart_Pointer
Post by elena brescianiPost by Goodwin LawlorPost by Shawn Waldonfor details. If the reference increment is unnecessary, then it is
still
Post by elena brescianiPost by Goodwin LawlorPost by Shawn Waldononly a small performance gain and not a segfault causing bug.
My guess for the segfault is what Bill said: the normals are in a
vtkDoubleArray not a vtkFloatArray so SafeDownCast is returning NULL.
HTH,
Shawn
On Mon, Apr 7, 2014 at 1:11 PM, Goodwin Lawlor
Post by Goodwin LawlorHi Elena,
Post by elena brescianivtkSmartPointer<vtkPolyData> polydata = reader->GetOutput();
reader->GetOutput() returns a regular pointer to a vtkPolydata not a
smart pointer.
vtkPolyData *polydata = reader->GetOutput();
instead.
hth
Goodwin
On Mon, Apr 7, 2014 at 4:00 PM, elena bresciani
Post by elena brescianiHello everybody!
I need your help with a segmentation fault error.
Using gdb I understood where it is generated but I don't know how to
modify the code to make it run.
vtkSmartPointer<vtkPolyData> polydata = reader->GetOutput();
(the reader is a vtkXMLPolyDataReader)
vtkFloatArray *PointNormalArray = vtkFloatArray::SafeDownCast(
polydata->GetPointData()->GetNormals() ) ;
for(vtkIdType i = 0; i < PointNormalArray->GetNumberOfTuples(); i++)
{....}
everytime I call GetNumberOfTuples I have this error so I think the
problem is on PointNormalArray.
Can somebody help me?
Thanks in advance
Elena
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
http://www.vtk.org/Wiki/VTK_FAQ
http://www.vtk.org/mailman/listinfo/vtkusers
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
http://www.vtk.org/Wiki/VTK_FAQ
http://www.vtk.org/mailman/listinfo/vtkusers
--
Shawn Waldon
Graduate Research Assistant
Department of Computer Science
University of North Carolina at Chapel Hill
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
http://www.vtk.org/Wiki/VTK_FAQ
http://www.vtk.org/mailman/listinfo/vtkusers
--
Unpaid intern in BillsBasement at noware dot com