[vtkusers] A question about surface cutting
    Andrea Bottino 
    andrea.bottino at polito.it
       
    Wed May  7 09:53:19 EDT 2008
    
    
  
Hi everybody,
I'd like to make a hole in a 3D surface. I have the contour of the part 
of the surface that must be removed (defined as a set of points). I was 
trying to use vtkExtractGeometry with vtkImplicitSelectionLoop to 
perform the cut, but what I get as result, is just the part of the 
object INSIDE the contour 8while I'd like to obtain the surface with the 
hole). I've checked the documentation and the examples but I couldn't 
find a way to tell that I want to keep the outside of the contour. The 
only way to obtain the desired result was to use vtkClipPolyData, which 
however is much slower than vtkExtractGeometry.
Anybody knows how to solve the problem?
This is an excerpt of the code I'm using
 // this extracts from the surface the internal part of the loop, I'd 
like to get the external part...
 vtkImplicitSelectionLoop* loop = vtkImplicitSelectionLoop::New(); 
  loop->SetLoop( contourPts );
  loop->SetAutomaticNormalGeneration(1);
  vtkExtractGeometry* extract = vtkExtractGeometry::New();
  extract->SetInputConnection( face->getModelSurface() );
  extract->SetImplicitFunction( loop );
  vtkConnectivityFilter* connect = vtkConnectivityFilter::New();
  connect->SetInputConnection(extract->GetOutputPort());
  connect->SetExtractionModeToClosestPointRegion();
  connect->SetClosestPoint( contourPts->GetPoint(0) );
  // to make a hole in the surface
  vtkClipPolyData* clipper = vtkClipPolyData::New();
  clipper->SetInputConnection(face->getModelSurface());
  clipper->SetClipFunction(loop);
  clipper->GenerateClipScalarsOn();
  clipper->GenerateClippedOutputOn();
  clipper->SetValue(0.5);
best regards,
-- 
Andrea Bottino
Politecnico di Torino, DAUIN
Corso Duca degli Abruzzi, 24
10129 Torino ITALY
Tel +39 011 5647175 / Fax +39 011 5647099.
http://www.polito.it/cgvg
    
    
More information about the vtkusers
mailing list