[vtkusers] Import Mesh Mystery (UnstructuredGrid) -Help!
Bill Lorensen
bill.lorensen at gmail.com
Sun Aug 23 11:42:50 EDT 2009
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
>
>
More information about the vtkusers
mailing list