Hi Dave, Usually we try to minimize the number of extra includes placed into a header. Is it possible to rewrite the method declaration as:
void WriteAPolyData(vtkPolyData* pd, const char *OutputFilename); and then replace the 3 added includes with the line: class vtkPolyData; About your compile error, you didn't include the specific error message so I can only guess, but I think it is a parse error from the python wrapper. The python wrapper doesn't recognize template arguments like vtkSmartPointer or std::strings. If a method uses such types then its declaration must be preceded with a line containing //BTX and followed by //ETX, this tells the parser to skip over the declaration. It also means this method will not be available from python. Another suggestion, in vtk it is preferred to use vtkstd::string or vtkStdString instead of std::string. Pat On Sat, Apr 25, 2009 at 5:41 PM, David Doria <[email protected]> wrote: > > On Sat, Apr 25, 2009 at 2:53 PM, pat marion <[email protected]> wrote: >> >> Hi David, >> >> Good question. I've worked with obj files before, but never in vtk. >> After a quick read of vtkOBJExporter, I think I can answer your >> question. I encourage you to take a look at the source code for >> vtkOBJExporter.cxx, it's actually quite readable. Here is what it >> does: >> >> >> The exporter takes a renderer, gets the actors from the renderer, and >> loops for each actor. For each actor, it calls >> vtkOBJExporter::WriteAnActor. This method gets the material >> properties from the actor and writes them to the .mtl file. Then it >> gets the actor's dataset. If the dataset is not polydata, it converts >> it to polydata by pushing it through the vtkGeometryFilter. Then it >> writes the polydata's geometry to the .obj file. >> >> >> If you have some time and you want to improve this file, it might be >> helpful if you pulled some of the code from >> vtkOBJExporter::WriteAnActor and put it into a new subroutine named >> something like vtkOBJExporter::WriteAPolyData. Then you could use >> this method to write a .obj file from a polydata if you are not >> interested in having an accompanying.mtl file. >> >> >> Pat > > Pat, I did exactly what you said and now have a function: > void WriteAPolyData(vtkSmartPointer<vtkPolyData> pd, std::string > &OutputFilename) > that seems to work! > > At first I tried to put it in the public section of vtkOBJExporter.h/.cxx > and recompile Paraview/VTK, but it tells me there is a compiler parsing > error (there is nothing wrong with the syntax because it compiles fine > "outside" of VTK). > > In vtkOBJExporter.h, I added > #include "vtkSmartPointer.h" > #include "vtkPolyData.h" > #include <string> > > And under: > void PrintSelf(ostream& os, vtkIndent indent); > I added: > void WriteAPolyData(vtkSmartPointer<vtkPolyData> pd, std::string > &OutputFilename); > > I put the function definition in vtkOBJExporter.cxx. > > After fighting that for a while (with no resolution) I moved the declaration > outside the class (to the very bottom of vtkOBJExporter.h (as the function > doesn't actually rely on anything in the class anyway) and it compiled fine. > Can I commit this function? I feel like it would probably be useful for many > users. (I don't have write access). > > As a side note : I have QT4.5 and cmake (with the latest cvs paraview/vtk) > wouldn't let me proceed installing vtk because the qt version was too high. > I commented out that check in the CMakeLists.txt file and it seemed to work > just fine... is there a reason that check is still there? Maybe it should be > decreased to a warning instead of a show-stopping error? > > Thanks, > > Dave > > _______________________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Please keep messages on-topic and check the ParaView Wiki at: > http://paraview.org/Wiki/ParaView > > Follow this link to subscribe/unsubscribe: > http://www.paraview.org/mailman/listinfo/paraview > > _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://www.paraview.org/mailman/listinfo/paraview
