[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