77 lines
1.7 KiB
Python
Executable File
77 lines
1.7 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
import sys
|
|
import re
|
|
|
|
pts = []
|
|
tet = []
|
|
tets = []
|
|
tet_no = 0
|
|
fh = open ( sys.argv[1] )
|
|
|
|
def append_tet ( tet ):
|
|
if tet == []:
|
|
return
|
|
if len(tet) != 4:
|
|
print tet
|
|
print ( "Wrong number of points in tet %d!" % len ( tets ) )
|
|
sys.exit ( 1 )
|
|
tets.append ( tet )
|
|
|
|
def write_vtk_header ():
|
|
print "# vtk DataFile Version 2.0"
|
|
print "VTK LEGACY FILE FORMAT ASCII - tetrahedral sample file for H5FED test"
|
|
print "ASCII"
|
|
print "DATASET UNSTRUCTURED_GRID"
|
|
print
|
|
|
|
def write_vtk_points_double ( pts ):
|
|
print "POINTS %d DOUBLE" % ( len(pts) )
|
|
for pt in pts:
|
|
print "%s %s %s" % ( pt[0], pt[1], pt[2] )
|
|
print
|
|
|
|
def write_vtk_cells ( cells ):
|
|
num_cells = len ( cells )
|
|
size = num_cells
|
|
for cell in cells:
|
|
size += len ( cell )
|
|
print "CELLS %d %d" % ( num_cells, size )
|
|
for cell in cells:
|
|
print "%d\t" % (len(cell)),
|
|
for el in cell:
|
|
print "%d " % (el),
|
|
print
|
|
print
|
|
|
|
def write_vtk_cell_types ( cells ):
|
|
print "CELL_TYPES %d" % ( len(cells) )
|
|
for cell in cells:
|
|
print "10"
|
|
print
|
|
|
|
def write_vtk_fooder ( cells ):
|
|
print "CELL_DATA %d" % ( len(cells) )
|
|
print "SCALARS cell_attribute_data float 1"
|
|
print "LOOKUP_TABLE default"
|
|
for i in range(len(cells)):
|
|
print "%d" % (i)
|
|
|
|
for line in fh:
|
|
line = line.rstrip('\n')
|
|
if line[0:3] == "TET":
|
|
append_tet ( tet )
|
|
tet = []
|
|
else:
|
|
pt = re.sub ( ' ', '', line).split(',')
|
|
if not pt in pts:
|
|
pts.append ( pt )
|
|
tet.append ( pts.index ( pt ) )
|
|
|
|
append_tet ( tet )
|
|
write_vtk_header()
|
|
write_vtk_points_double ( pts )
|
|
write_vtk_cells ( tets )
|
|
write_vtk_cell_types ( tets )
|
|
write_vtk_fooder ( tets )
|