[vtkusers] Import Mesh Mystery (UnstructuredGrid) -Help!
Helvin Lui
helvinlui at gmail.com
Sun Aug 23 17:12:28 EDT 2009
Oh my gosh, Bill! Thanks so much for bothering to read through my code and
making it work!! =D
Couldn't be more grateful! (Else I might be in panic attack, with less than
an hour on hand...)
Yes, I needed to subtract one from my node numbers, since counting needs to
start from 0, but my data's points started from1.
I was wondering why even my small data file did not display as i intended,
though i did not did an error. But now, both are working great.
Thanks so much Bill!!!
Helvin
On Mon, Aug 24, 2009 at 3:42 AM, Bill Lorensen <bill.lorensen at gmail.com>wrote:
> element_ID_list.InsertNextId(node_no) should be
> element_ID_list.InsertNextId(node_no-1)
>
> On Sun, Aug 23, 2009 at 10:18 AM, Helvin Lui<helvinlui at gmail.com> wrote:
> > Hi everyone! :-)
> > I have written a function that imports a mesh from a .txt file.
> >
> > def displayMesh(file_path):
> > import vtk
> > from vtk import vtkTriangle
> > VTK_TRIANGLE = vtkTriangle().GetCellType()
> >
> > with open(file_path, 'r') as f:
> >
> > aMeshGrid = vtk.vtkUnstructuredGrid()
> > aMeshGrid.Allocate(2, 180)
> >
> > # Get number of mesh points
> > no_points = int(f.readline())
> >
> > # Set number of points
> > meshPoints = vtk.vtkPoints()
> > meshPoints.SetNumberOfPoints(no_points)
> >
> > # Iterate through point data
> > for i in range(no_points):
> > # Get coord info for each point
> > point_info = f.readline().split() # I need to split, before I
> > assign to point_coord
> > # else the whole thing is
> > split into single numbers
> > #print point_info # Check reading
> > point_ID = (int(point_info[0])-1) # -1 because the IDs need
> to
> > start with 0.
> > point_x = float(point_info[1])
> > point_y = float(point_info[2])
> > point_z = float(point_info[3])
> > # Set coord info in mesh
> > meshPoints.InsertPoint(point_ID, point_x, point_y, point_z)
> >
> > # Get number of elements
> > no_elements = int(f.readline())
> >
> > # Set number of elements
> > for i in range(no_elements):
> > element_info = f.readline().split()
> > element_ID = (int(element_info[0])-1)
> > element_no_nodes = int(element_info[1])
> >
> > element_ID_list = vtk.vtkIdList()
> > for j in range(element_no_nodes):
> > node_no = int(element_info[j+2])
> > element_ID_list.InsertNextId(node_no)
> > print j, node_no
> > if element_no_nodes == 3: # a triangle
> > cell_type = VTK_TRIANGLE
> >
> > aMeshGrid.InsertNextCell(cell_type, element_ID_list)
> >
> > aMeshGrid.SetPoints(meshPoints)
> >
> > aMeshMapper = vtk.vtkDataSetMapper()
> > aMeshMapper.SetInput(aMeshGrid)
> >
> > aMeshActor = vtk.vtkActor()
> > aMeshActor.SetMapper(aMeshMapper)
> > aMeshActor.GetProperty().SetDiffuseColor(1, 0, 0)
> >
> > # Create the usual rendering stuff.
> > ren = vtk.vtkRenderer()
> > renWin = vtk.vtkRenderWindow()
> > renWin.AddRenderer(ren)
> > renWin.SetSize(300, 300)
> > iren = vtk.vtkRenderWindowInteractor()
> > iren.SetRenderWindow(renWin)
> >
> > ren.AddActor(aMeshActor)
> >
> > # Zoom, to see actor. (in case it was too small to see)
> > ren.ResetCamera()
> > #
> http://www.vtk.org/doc/nightly/html/classvtkRenderer.html#b14d1aeb74a4990f2da819e09d028d65
> > cam1 = ren.GetActiveCamera()
> >
> > ## Render the scene and start interaction.
> > iren.Initialize()
> > renWin.Render()
> > iren.Start()
> >
> > My goal is to display this particular file:
> > 44
> > 1 0.000000000 0.000000000 0.000000000
> > 2 0.100000001 0.000000000 0.000000000
> > 3 0.200000003 0.000000000 0.000000000
> > 4 0.300000012 0.000000000 0.000000000
> > 5 0.400000006 0.000000000 0.000000000
> > 6 0.500000000 0.000000000 0.000000000
> > 7 0.600000024 0.000000000 0.000000000
> > 8 0.699999988 0.000000000 0.000000000
> > 9 0.800000012 0.000000000 0.000000000
> > 10 0.900000036 0.000000000 0.000000000
> > 11 1.000000000 0.000000000 0.000000000
> > 12 0.000000000 0.066666670 0.000000000
> > 13 0.100000001 0.066666670 0.000000000
> > 14 0.200000003 0.066666670 0.000000000
> > 15 0.300000012 0.066666670 0.000000000
> > 16 0.400000006 0.066666670 0.000000000
> > 17 0.500000000 0.066666670 0.000000000
> > 18 0.600000024 0.066666670 0.000000000
> > 19 0.699999988 0.066666670 0.000000000
> > 20 0.800000012 0.066666670 0.000000000
> > 21 0.900000036 0.066666670 0.000000000
> > 22 1.000000000 0.066666670 0.000000000
> > 23 0.000000000 0.133333340 0.000000000
> > 24 0.100000001 0.133333340 0.000000000
> > 25 0.200000003 0.133333340 0.000000000
> > 26 0.300000012 0.133333340 0.000000000
> > 27 0.400000006 0.133333340 0.000000000
> > 28 0.500000000 0.133333340 0.000000000
> > 29 0.600000024 0.133333340 0.000000000
> > 30 0.699999988 0.133333340 0.000000000
> > 31 0.800000012 0.133333340 0.000000000
> > 32 0.900000036 0.133333340 0.000000000
> > 33 1.000000000 0.133333340 0.000000000
> > 34 0.000000000 0.200000018 0.000000000
> > 35 0.100000001 0.200000018 0.000000000
> > 36 0.200000003 0.200000018 0.000000000
> > 37 0.300000012 0.200000018 0.000000000
> > 38 0.400000006 0.200000018 0.000000000
> > 39 0.500000000 0.200000018 0.000000000
> > 40 0.600000024 0.200000018 0.000000000
> > 41 0.699999988 0.200000018 0.000000000
> > 42 0.800000012 0.200000018 0.000000000
> > 43 0.900000036 0.200000018 0.000000000
> > 44 1.000000000 0.200000018 0.000000000
> > 60
> > 1 3 1 2 13 0 1 0.00500
> > 2 3 2 3 14 0 1 0.00500
> > 3 3 3 4 15 0 1 0.00500
> > 4 3 4 5 16 0 1 0.00500
> > 5 3 5 6 17 0 1 0.00500
> > 6 3 6 7 18 0 1 0.00500
> > 7 3 7 8 19 0 1 0.00500
> > 8 3 8 9 20 0 1 0.00500
> > 9 3 9 10 21 0 1 0.00500
> > 10 3 10 11 22 0 1 0.00500
> > 11 3 1 13 12 0 1 0.00500
> > 12 3 2 14 13 0 1 0.00500
> > 13 3 3 15 14 0 1 0.00500
> > 14 3 4 16 15 0 1 0.00500
> > 15 3 5 17 16 0 1 0.00500
> > 16 3 6 18 17 0 1 0.00500
> > 17 3 7 19 18 0 1 0.00500
> > 18 3 8 20 19 0 1 0.00500
> > 19 3 9 21 20 0 1 0.00500
> > 20 3 10 22 21 0 1 0.00500
> > 21 3 12 13 24 0 1 0.00500
> > 22 3 13 14 25 0 1 0.00500
> > 23 3 14 15 26 0 1 0.00500
> > 24 3 15 16 27 0 1 0.00500
> > 25 3 16 17 28 0 1 0.00500
> > 26 3 17 18 29 0 1 0.00500
> > 27 3 18 19 30 0 1 0.00500
> > 28 3 19 20 31 0 1 0.00500
> > 29 3 20 21 32 0 1 0.00500
> > 30 3 21 22 33 0 1 0.00500
> > 31 3 12 24 23 0 1 0.00500
> > 32 3 13 25 24 0 1 0.00500
> > 33 3 14 26 25 0 1 0.00500
> > 34 3 15 27 26 0 1 0.00500
> > 35 3 16 28 27 0 1 0.00500
> > 36 3 17 29 28 0 1 0.00500
> > 37 3 18 30 29 0 1 0.00500
> > 38 3 19 31 30 0 1 0.00500
> > 39 3 20 32 31 0 1 0.00500
> > 40 3 21 33 32 0 1 0.00500
> > 41 3 23 24 35 0 1 0.00500
> > 42 3 24 25 36 0 1 0.00500
> > 43 3 25 26 37 0 1 0.00500
> > 44 3 26 27 38 0 1 0.00500
> > 45 3 27 28 39 0 1 0.00500
> > 46 3 28 29 40 0 1 0.00500
> > 47 3 29 30 41 0 1 0.00500
> > 48 3 30 31 42 0 1 0.00500
> > 49 3 31 32 43 0 1 0.00500
> > 50 3 32 33 44 0 1 0.00500
> > 51 3 23 35 34 0 1 0.00500
> > 52 3 24 36 35 0 1 0.00500
> > 53 3 25 37 36 0 1 0.00500
> > 54 3 26 38 37 0 1 0.00500
> > 55 3 27 39 38 0 1 0.00500
> > 56 3 28 40 39 0 1 0.00500
> > 57 3 29 41 40 0 1 0.00500
> > 58 3 30 42 41 0 1 0.00500
> > 59 3 31 43 42 0 1 0.00500
> > 60 3 32 44 43 0 1 0.00500
> > This however, runs into no errors in command line, and the render window
> > appears, but the actor is not displayed. A window pops up saying
> > "vtkpython.exe has stopped working, windows is checking for a solution to
> > the problem."
> > To better understand why this is happening, I wrote a simpler mesh file:
> > 7
> > 1 1.000000000 0.000000000 0.000000000
> > 2 3.000000000 0.000000000 0.000000000
> > 3 0.000000000 2.000000000 0.000000000
> > 4 2.000000000 2.000000000 0.000000000
> > 5 4.000000000 2.000000000 0.000000000
> > 6 1.000000000 4.000000000 0.000000000
> > 7 3.000000000 4.000000000 0.000000000
> > 6
> > 1 3 1 4 3 0 1 0.00500
> > 2 3 1 2 4 0 1 0.00500
> > 3 3 2 5 4 0 1 0.00500
> > 4 3 3 4 6 0 1 0.00500
> > 5 3 4 7 6 0 1 0.00500
> > 6 3 4 5 7 0 1 0.00500
> > When I run the code to display this mesh, it worked.
> > Mystery. I wonder why? Do you know?
> > Help much appreciated! : )
> > --
> > Helvin
> >
> > "Though the world may promise me more, I'm just made to be filled with
> the
> > Lord."
> >
> > _______________________________________________
> > 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://www.vtk.org/mailman/listinfo/vtkusers
> >
> >
>
--
Helvin
"Though the world may promise me more, I'm just made to be filled with the
Lord."
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20090824/4248b7d6/attachment.htm>
More information about the vtkusers
mailing list