[vtkusers] Strange return of grid objects from a Python function

Guðni Karl Rosenkjær grosenkj at eos.ubc.ca
Tue Aug 27 14:33:46 EDT 2013


Hi all,

I have written a python function to setup a curvilinear structured grid and
returns the grid object at the end. In the returned grid object, I don't
have the points as assigned rather very small values (order of e-50 to
e-300) that is effectively 0.

The code is as follows:
    import vtk, numpy as np
    # The test function
    def testGrid():
        ''' Small test setting up a cuivilinear grid vts'''
        x = np.arange(-1,0.6,0.5)
        y = np.arange(-2,0.1,1.0)
        z = np.arange(2,-1.1,-0.5)
        gx,gy,gz = np.meshgrid(x,y,z)
        nodC =
np.hstack((gx.T.reshape((np.prod(gx.shape),1)),gy.T.reshape((np.prod(gy.shape),1)),gz.T.reshape((np.prod(gz.shape),1))))
        nodCvtk = npsup.numpy_to_vtk(nodC)
        points = vtk.vtkPoints()
        points.SetData(nodCvtk)

        color = np.arange(np.prod(gx.shape-np.array([1,1,1])))
        cellColors = npsup.numpy_to_vtk(colorReSh)
        cellColors.SetName('Colors')
        sgrid = vtk.vtkStructuredGrid()
        sgrid.SetDimensions(gx.shape)
        sgrid.SetPoints(points)
        sgrid.GetCellData().AddArray(cellColors)
        def writeVTSFile(fileName,vtsObj):
            vtsWriter = vtk.vtkXMLStructuredGridWriter()
            vtsWriter.SetFileName(fileName)
            vtsWriter.SetInput(vtsObj)
            vtsWriter.Update()
        writeVTSFile('vts3DFile.vts',sgrid)
        return sgrid

    # Read the file
    vtsReader = vtk.vtkXMLStructuredGridReader()
    vtsReader.SetFileName('vts3DFile.vts')
    vtsReader.Update()
    sgridReader = vtsReader.GetOutput()
    # Excute the function
    sgridFunc = testGrid()

    # Print out the first point
    print sgridFunc.GetPoint(0)
    print sgridReader.GetPoint(0)


The results from the print function are:
(-1.6934276617628493e-54, 3.4178058e-316, -1.1548972446486807e-82)
(-1.0, -2.0, 2.0)

However, if I write the object to a file and read it everything is working
order. Are there some special tricks to return a grid object from a python
function?

I am running on a Linux 64-bit Fedora 17, with self-compiled version of vtk
5.10.1 and python 2.7.

Thanks,
Gudni
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20130827/0c204334/attachment.htm>


More information about the vtkusers mailing list