[Paraview] visualising a network of tubes and spheres using python programmable filter

Sreejith Kuttanikkad sreejithpk at gmail.com
Wed Apr 15 12:15:59 EDT 2009


Dear all,
Thinking that my question went unnoticed, i am sending it again. i would
appreciate any tips, in particular for displaying tubes with varying
diameter.
Thank you
Sreejith

On Fri, Apr 10, 2009 at 9:46 AM, Sreejith Kuttanikkad
<sreejithpk at gmail.com>wrote:

>
> Dear paraview,
>
> Following the examples given in paraview wiki, i have made a script to
> create a network of lines. After that I apply  both tube and glyph(sphere)
> filter on it and the resulting
> view is attached in the figure. But what i would like to have is to be able
> to create varying tube radius and varying sphere radius. Ihave the radii of
> each tube and sphere in a file and i like to be able to get this into
> paraview. Any help in this regard is appreciated.
> here is a sample script.
>
> ##---------------------script-----------------##
> #!/usr/bin/python
> #This is intended as the script of a 'Programmable Source'
> #Get a paraview.vtk.PolyData object for the output
> pdo = self.GetPolyDataOutput()
> filename="network.dat"
> #Allocate the number of 'cells' that will be added. We are just
> #adding one vtkPolyLine 'cell' to the vtkPolyData object.
> no_of_tubes=7
> pdo.Allocate(no_of_tubes, 1)
> #This will store the points for the lines
> newPts = vtk.vtkPoints()
> offset=0
> file=open(filename,'r')
> lines=file.readlines()
> for line in lines:
>    # skip lines starting comment char #
>    point=0
>    if line[0]=='#':
>       pass
>    else:
>       #read x,y,z values
>       #check 3d or 2d network
>       #end points of tube (x1,y1,z1) & (x2,y2,z2)
>       if(len(line.split())==6):
>          x1 = float(line.split()[0])
>          x2 = float(line.split()[3])
>          y1 = float(line.split()[1])
>          y2 = float(line.split()[4])
>          z1 = float( line.split()[2])
>          z2 = float( line.split()[5])
>       else:
>          x1 = float(line.split()[0])
>          x2 = float(line.split()[2])
>          y1 = float(line.split()[1])
>          y2 = float(line.split()[3])
>          z1=0.0
>          z2=0.0
>      #Insert the Points into the vtkPoints object
>      #The first parameter indicates the reference.
>      #value for the point. Here we add them sequentially.
>      #Note that the first point is at index 0 (not 1).
>       newPts.InsertPoint(point+offset, x1,y1,z1)
>       point+=1
>       pdo.SetPoints(newPts)
>       #print x1,y1,z1
>       newPts.InsertPoint(point+offset, x2,y2,z2)
>       point+=1
>       pdo.SetPoints(newPts)
>
>       #print x2,y2,z2
>      #Add the points to the vtkPolyData object
>      #Right now the points are not associated with a line -
>      #it is just a set of unconnected points. We need to
>      #create a 'cell' object that ties points together
>      #to make a curve (in this case). This is done below.
>      #A 'cell' is just an object that tells how points are
>      #connected to make a 1D, 2D, or 3D object.
>
>      #Make a vtkPolyLine which holds the info necessary
>      #to create a curve composed of line segments. This
>      #really just hold constructor data that will be passed
>      #to vtkPolyData to add a new line.
>    aPolyLine = vtk.vtkPolyLine()
>      #Indicate the number of points along the line
>    aPolyLine.GetPointIds().SetNumberOfIds(point)
>    for i in range(0,point):
>          #Add the points to the line. The first value indicates
>          #the order of the point on the line. The second value
>          #is a reference to a point in a vtkPoints object. Depends
>          #on the order that Points were added to vtkPoints object.
>          #Note that this will not be associated with actual points
>          #until it is added to a vtkPolyData object which holds a
>          #vtkPoints object.
>             aPolyLine.GetPointIds().SetId(i, i+offset)
>       #Add the poly line 'cell' to the vtkPolyData object.
>    offset+=point
>    pdo.InsertNextCell(aPolyLine.GetCellType(), aPolyLine.GetPointIds())
> file.close()
>
>
> ##----------- sample input file network.dat--------##
> #end1    end2
> 0 0 0    1 0 0
> 1 0 0   1 1 0
> 1 1 0    0 1 0
> 0 1 0     0 0 0
> 1 0 0    2 0 0
> 2 0 0   2 1 0
> 2 1 0    1 1 0
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20090415/8c24cba2/attachment.htm>


More information about the ParaView mailing list