[vtkusers] polyhedron in python

Guðni Karl Rosenkjær grosenkj at eos.ubc.ca
Sun Nov 2 18:48:32 EST 2014


Hi George,

In your example you are only defining a single face and I am pretty sure
that a polyhedron requires a closed / "watertight" volume by definition.

I am using vtk 5.10.1 with python 2.7 and the following example works for
me (translation of C++ example Bill posted above).

Code:
  import vtk
  # Create polyhedron (cube)
  pointIds = vtk.vtkIdList()
  pointIds.SetNumberOfIds(8)
  for i in range(8):
    pointIds.InsertNextId(i)
  points = vtk.vtkPoints()
  points.InsertNextPoint(-1.0,-1.0,-1.0)
  points.InsertNextPoint( 1.0,-1.0,-1.0)
  points.InsertNextPoint( 1.0, 1.0,-1.0)
  points.InsertNextPoint(-1.0, 1.0,-1.0)
  points.InsertNextPoint(-1.0,-1.0, 1.0)
  points.InsertNextPoint( 1.0,-1.0, 1.0)
  points.InsertNextPoint( 1.0, 1.0, 1.0)
  points.InsertNextPoint(-1.0, 1.0, 1.0)

  # List of pointIds that make up the face
  faceList = [[0, 3, 2, 1],[0, 4, 7, 3],[4, 5, 6, 7],[5, 1, 2, 6],[0, 1, 5,
4],[2, 3, 7, 6]]
  faceId = vtk.vtkIdList()
  faceId.InsertNextId(6) # Number faces that make up the cell.
  for face in faceList: # Loop over all the faces
    faceId.InsertNextId(len(face)) # Number of points in face
    [faceId.InsertNextId(i) for i in face] # Insert the pointIds for the
face


  ugrid = vtk.vtkUnstructuredGrid()
  ugrid.SetPoints(points)
  ugrid.InsertNextCell(vtk.VTK_POLYHEDRON, faceId)

  writer = vtk.vtkXMLUnstructuredGridWriter()
  writer.SetInput(ugrid)
  writer.SetFileName("polyhedron.vtu")
  writer.SetDataModeToAscii()
  writer.Update()
Code ends

The main difference is that the ugrid.InsertNextCells takes 2 arguments:
type of cell and the vtkIdList of point Ids that make up the cell. For
polyhedrons, the IdList has to contain information about the number faces
that make up the cell and then the point Ids of the the faces.

I hope this helps,
Gudni

On 2 November 2014 13:33, George <george.gerber at gmail.com> wrote:

> Good day,
>
> I have translated the example of Bill into the best Python I know. I get
> the
> following error:
> Traceback (most recent call last):
>   File "C:\Users\george limited\Desktop\unstructuredgrid.py", line 19, in
> <module>
>     ug.InsertNextCell(vtk.VTK_POLYHEDRON,4,pointids,1,faces)
> TypeError: InsertNextCell argument 5: expected a sequence of 0 values, got
> vtkobject
>
> Any advice will be very much appreciated.
> Best regards,
> George
>
> The code is:
> import vtk
>
> points = vtk.vtkPoints()
> pointids = [0,1,2,3]
>
> points.InsertNextPoint(0,0,0)
> points.InsertNextPoint(1,0,0)
> points.InsertNextPoint(1,1,0)
> points.InsertNextPoint(0,1,0)
>
> faces = vtk.vtkCellArray()
>
> face0 = [0,1,2,3]
>
> faces.InsertNextCell(4,face0)
>
> ug = vtk.vtkUnstructuredGrid()
> ug.SetPoints(points)
> ug.InsertNextCell(vtk.VTK_POLYHEDRON,4,pointids,1,faces.GetPointer())
>
> writer = vtk.vtkUnstructuredGridWriter()
> writer.SetFileName("polyhedron.vtu")
> writer.SetInputData(ug)
> writer.Write()
>
>
>
> --
> View this message in context:
> http://vtk.1045678.n5.nabble.com/polyhedron-in-python-tp5728643p5729319.html
> Sent from the VTK - Users mailing list archive at Nabble.com.
> _______________________________________________
> 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 VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers
>



-- 
Gudni Karl Rosenkjaer,
PhD student at Geophysical Inversion Facility
Department of Earth, Ocean and Atmospheric Sciences,
University of British Columbia
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20141102/1a1ba030/attachment.html>


More information about the vtkusers mailing list