[vtkusers] programmable source multiple hexahedrons in unstructured grid
Olivier Rodenberg
orodenberg at gmail.com
Mon Feb 22 13:18:38 EST 2016
Hi all,
I am trying to create a programmable filter where multiple(>1000) cubes(hexahedrons) are stored in an unstructured grid.
Each of the cubes has an own attribute value which will be used for colouring.
The centre points, the edge lenth and the attribute value of the cubes are extracted from a PostgreSQL database via the python extension psycopg2. I am able to create a single hexahedron. However I am not able to add more geometries to an unstructured grid. The code that I am using is described bellow. When running the code I get the error “TypeError: 'vtkCommonDataModelPython.vtkUnstructuredGrid' object is not iterable”. I am not sure how to proceed. Is it even possible to create a unstructured grid? And does anyone know how I could store multiple geometries in an unstructured grid?
import psycopg2
def connectDBMS():
conn = psycopg2.connect("host='localhost' dbname='thesis' user='postgres' password='Supermen1'")
cur = conn.cursor()
cur.execute('SELECT * FROM emptyspace limit 10;')
return cur.fetchall()
def DBMSToGeom(octree):
numberOfVertices = 8
# create the unstructured grid
octree = vtk.vtkUnstructuredGrid()
# Create the points
for materialpath, x , y , z , leafsize in octree:
# create the coordinates for the points
l = .5*leafsize
xL = int(x)-l
xR = int(x)+l
yL = int(y)-l
yR = int(y)+l
zL = int(z)-l
zR = int(z)+l
# create the points
points = vtk.vtkPoints()
points.InsertNextPoint(xL, yL, zL)
points.InsertNextPoint(xR, yL, zL)
points.InsertNextPoint(xR, yR, zL)
points.InsertNextPoint(xL, yR, zL)
points.InsertNextPoint(xL, yL, zR)
points.InsertNextPoint(xR, yL, zR)
points.InsertNextPoint(xR, yR, zR)
points.InsertNextPoint(xL, yR, zR)
# Create a hexahedron from the points
hex_ = vtk.vtkHexahedron()
for i in range(0, numberOfVertices):
hex_.GetPointIds().SetId(i, i)
#Create the attribute
NodeLength = vtk.vtkDoubleArray()
NodeLength.SetName('Node lenght')
NodeLength.InsertNextValue(leafsize)
# Add the geometry to the unstructured grid
octree.InsertNextCell(hex_.GetCellType(), hex_.GetPointIds())
# Add the points and hexahedron to an unstructured grid
output.Allocate(1,1)
output.octree
output.Points = points
output.CellData.SetScalars(NodeLength)
if (__name__ == "__main__"):
DBMSToGeom(connectDBMS())
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20160222/6f7ea78c/attachment.html>
More information about the vtkusers
mailing list