[vtkusers] deleting a face from polydata

Goodwin Lawlor goodwin.lawlor at ucd.ie
Fri Apr 9 10:24:33 EDT 2004


Another way again is with vtkSelectPolyData and vtkClipPolyData... This
cuts through cells though.



-----Original Message-----
From: Mathieu Malaterre [mailto:mathieu.malaterre at kitware.com] 
Sent: 09 April 2004 14:36
To: John Hunter
Cc: goodwin.lawlor at ucd.ie; vtkusers at vtk.org
Subject: Re: [vtkusers] deleting a face from polydata


John,

	I did something similar last year using a vtkBoxWidget and a 
vtkImplicitSelectionLoop (and then vtkExtractPolyData...)

	Have a look at:

Examples/GUI/Python/BoxWidget.py

	And instead of coloring, just remove cell.

HTH
Mathieu

John Hunter wrote:
>>>>>>"Goodwin" == Goodwin Lawlor <goodwin.lawlor at ucd.ie> writes:
> 
> 
>     Goodwin> Hi John, vtkPolyData::DeleteCell just marks a cells as a
>     Goodwin> VTK_EMPTY_CELL type...  It doesn't actually delete it
>     Goodwin> from the dataset.
> 
>     Goodwin> I have a class and tcl example that does what you
>     Goodwin> want. You can get the source code here:
>     Goodwin> 
> http://www.bioengineering-research.com/vtk/vtkRemoveCellsFilter.htm
> 
> Next problem:
> 
> For real data, as opposed to the toy sphere examples, the individual 
> triangle cells that make up my surface are so small and numerous that 
> I'll be clicking for 2 years before I can get rid of all the ones I 
> need.  I would like to create a spherical brush to get all the cells 
> within a region of specified radius from the selected point, and then 
> remove these cells using your code.
> 
> I am using a vtkExtractPolyDataGeometry filter with a vtkSphere 
> implicit function.  My question is: can I get the cell ids from the 
> output of this filter to pass to your code?
> 
> My picker looks like this, with some pseudo-code at the end
> 
> def pick_cell(renwinInteractor, event):
> 
>     x, y = renwinInteractor.GetEventPosition()
> 
>     picker = vtk.vtkCellPicker()
>     picker.PickFromListOn()
>     picker.AddPickList(actor)
>     picker.SetTolerance(0.01)
>     picker.Pick(x, y, 0, renderer)
> 
>     points = picker.GetPickedPositions()
>     numPoints = points.GetNumberOfPoints()
>     if numPoints<1: return
>     pnt = points.GetPoint(0)
>     #mark(*pnt)
>     implicit = vtk.vtkSphere()
>     implicit.SetCenter(pnt)
>     implicit.SetRadius(2)
> 
>     extract = vtk.vtkExtractPolyDataGeometry()
>     extract.SetImplicitFunction(implicit)
>     extract.ExtractInsideOn()
>     extract.SetInput(sphere.GetOutput())
>     extract.ExtractBoundaryCellsOn()
>     extract.Update()
> 
>     polyData = extract.GetOutput()
> 
>     # here is the pseudo code
>     for cellIds in polyData.GetCellIds():
>         remove.RemoveCell(cellId)
> 
> Is this possible?  Is there a better way to remove the cells inside 
> the implicit sphere that doesn't require vtkRemoveCellsFilter?
> 
> Thanks,
> John Hunter
> _______________________________________________
> This is the private VTK discussion list. 
> Please keep messages on-topic. Check the FAQ at:
<http://public.kitware.com/cgi-bin/vtkfaq>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
> 







More information about the vtkusers mailing list