def read(casePath, time, debug=False): """Read the case from a given path to .foam file. Parameters ---------- casePath : str The path to the .foam file. time : float The time step to load, default to latest time debug : bool Debug switch Returns ------- The reader updated with the read case. Raises ------ ValueError If the path is not valid. """ # Check that paths are valid if not os.path.exists(casePath): raise ValueError("Provided path to .foam file invalid!") if debug: print(" Opening the case") # Case reader reader = vtk.vtkOpenFOAMReader() reader.SetFileName(casePath) reader.Update() if debug: print(" Changing reader parameters") reader.CreateCellToPointOff() reader.DisableAllPointArrays() reader.EnableAllPatchArrays() reader.DecomposePolyhedraOn() reader.Update() reader.UpdateInformation() info = reader.GetExecutive().GetOutputInformation(0) if debug: print("The available timesteps are", vtk_to_numpy(reader.GetTimeValues())) if time is None: print("Selecting the latest available time step") info.Set(vtk.vtkStreamingDemandDrivenPipeline.UPDATE_TIME_STEP(), vtk_to_numpy(reader.GetTimeValues())[-1]) else: print("Selecting the time step", time) info.Set(vtk.vtkStreamingDemandDrivenPipeline.UPDATE_TIME_STEP(), time) reader.Update() reader.UpdateInformation() return reader
def __init__(self, module_manager): SimpleVTKClassModuleBase.__init__( self, module_manager, vtk.vtkOpenFOAMReader(), 'Reading vtkOpenFOAM.', (), ('vtkOpenFOAM',), replaceDoc=True, inputFunctions=None, outputFunctions=None)
def openFile(self): #ここでファイルを開くを実行.開けるファイルは「.foam」形式に限定 fileName = QFileDialog.getOpenFileName( self, 'Open file', os.path.expanduser('~') + '/Desktop', "OpenFOAM File (*.foam)") print(fileName) reader = vtk.vtkOpenFOAMReader() reader.SetFileName( str(fileName[0]) ) #パス+ファイル名が格納されるのは[0]番.「1]にはファイルの形式「OpenFOAM File (*.foam)」が格納される. reader.CreateCellToPointOn() reader.DecomposePolyhedraOn() reader.EnableAllCellArrays() reader.Update() filter2 = vtk.vtkGeometryFilter() filter2.SetInputConnection(reader.GetOutputPort()) mapper = vtk.vtkCompositePolyDataMapper2() mapper.SetInputConnection(filter2.GetOutputPort()) actor = vtk.vtkActor() actor.SetMapper(mapper) ren = vtk.vtkRenderer() ##背景色の設定 ren.GradientBackgroundOn() #グラデーション背景を設定 ren.SetBackground2(0.2, 0.4, 0.6) #上面の色 ren.SetBackground(1, 1, 1) #下面の色 self.widget.GetRenderWindow().AddRenderer(ren) ren.AddActor(actor)
def __init__(self, module_manager): SimpleVTKClassModuleBase.__init__(self, module_manager, vtk.vtkOpenFOAMReader(), 'Reading vtkOpenFOAM.', (), ('vtkOpenFOAM', ), replaceDoc=True, inputFunctions=None, outputFunctions=None)
def __init__(self, fileName, **kwargs): self.reader = vtk.vtkOpenFOAMReader() self.reader.SetFileName(fileName) self.reader.UpdateInformation() self.timeValues = self.reader.GetTimeValues() self.Nt = self.timeValues.GetNumberOfTuples() # Default options (read everything) self.reader.DecomposePolyhedraOn() self.reader.CacheMeshOn() self.reader.EnableAllCellArrays() self.reader.EnableAllPointArrays() self.reader.CreateCellToPointOff() self.reader.EnableAllPatchArrays() self.reader.EnableAllLagrangianArrays() # Read options for k, v in kwargs.items(): print k, ' => ', v if k == 'cellArrays': self.reader.DisableAllCellArrays() if v: for cellArray in v: self.reader.SetCellArrayStatus(cellArray, 1) elif k == 'patchArrays': self.reader.DisableAllPatchArrays() if v: for patchArray in v: self.reader.SetPatchArrayStatus(patchArray, 1) elif k == 'pointArrays': self.reader.DisableAllPointArrays() if v: for pointArray in v: self.reader.SetPointArrayStatus(pointArray, 1) elif k == 'lagrangianArrays': self.reader.DisableAllLagrangianArrays() if v: for lagrangianArray in v: self.reader.SetLagrangianArrayStatus( lagrangianArray, 1) elif k == 'decomposePolyhedra': if v: self.reader.DecomposePolyhedraOn() else: self.reader.DecomposePolyhedraOff() elif k == 'cellToPoint': if v: self.reader.CreateCellToPointOn() else: self.reader.CreateCellToPointOff() elif k == 'cacheMesh': if v: self.reader.CacheMeshOn() else: self.reader.CacheMeshOff() else: raise ValueError('Invalid argument ' + k)
def load_vtk_structured(self, file_name): self.fname = file_name reader = vtk.vtkOpenFOAMReader() reader.SetFileName(file_name) reader.Update() self.output = reader.GetOutput().GetBlock(0) # vtkUnstructuredGrid self.vtk_n_pts = self.output.GetNumberOfPoints() self.vtk_pts = self.output.GetPointData() self.vtk_n_cells = self.output.GetNumberOfCells() self.vtk_n_props = self.vtk_pts.GetNumberOfArrays() self.vtk_n_props = reader.GetNumberOfCellArrays() self.reader = reader print " [Vtk_unstructured_reader]:" print " Cells: %d" % (self.vtk_n_cells) print " Point: %d" % (self.vtk_n_pts) print " Props: ", for i in range(self.vtk_n_props): print "\'%s\'" % (reader.GetCellArrayName(i)), print self.vtk_n_patch = reader.GetNumberOfPatchArrays() print " Patch: ", for i in range(self.vtk_n_patch): print " \'%s\'" % ( reader.GetPatchArrayName(i)) Vtu = self.output vtu = vtk.vtkAppendFilter() vtu.SetInput(Vtu) vtu.Update() writer = vtk.vtkXMLUnstructuredGridWriter() writer.SetFileName("xxx.vtu") writer.SetInput(vtu) writer.Write()
def __init__(self, parent=None): QWidget.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.reader = vtk.vtkOpenFOAMReader() self.filter2 = vtk.vtkGeometryFilter() self.mapper = vtk.vtkCompositePolyDataMapper2() self.actor = vtk.vtkActor() self.widget = QVTKRenderWindowInteractor(self) self.widget.Initialize() ##背景色の設定 self.ren = vtk.vtkRenderer() self.widget.GetRenderWindow().AddRenderer(self.ren) self.widget.Start() self.widget.show() self.setCentralWidget(self.widget) #UIのインスタンスを介してアイコンと実体(関数)をつなげる self.ui.actionOpenFile.triggered.connect(self.openFile) self.ui.actionResetFile.triggered.connect(self.resetFile) self.setupInitView()
def _load_file(filename, c, alpha, threshold, spacing, unpack): fl = filename.lower() ################################################################# other formats: if fl.endswith(".xml") or fl.endswith(".xml.gz") or fl.endswith(".xdmf"): # Fenics tetrahedral file actor = loadDolfin(filename) elif fl.endswith(".neutral") or fl.endswith(".neu"): # neutral tetrahedral file actor = loadNeutral(filename) elif fl.endswith(".gmsh"): # gmesh file actor = loadGmesh(filename) elif fl.endswith(".pcd"): # PCL point-cloud format actor = loadPCD(filename) actor.GetProperty().SetPointSize(2) elif fl.endswith(".off"): actor = loadOFF(filename) elif fl.endswith(".3ds"): # 3ds format actor = load3DS(filename) elif fl.endswith(".wrl"): importer = vtk.vtkVRMLImporter() importer.SetFileName(filename) importer.Read() importer.Update() actors = importer.GetRenderer().GetActors() #vtkActorCollection actors.InitTraversal() wacts = [] for i in range(actors.GetNumberOfItems()): act = actors.GetNextActor() wacts.append(act) actor = Assembly(wacts) ################################################################# volumetric: elif fl.endswith(".tif") or fl.endswith(".slc") or fl.endswith(".vti") \ or fl.endswith(".mhd") or fl.endswith(".nrrd") or fl.endswith(".nii") \ or fl.endswith(".dem"): img = loadImageData(filename, spacing) if threshold is False: if c is None and alpha == 1: c = ['b','lb','lg','y','r'] # good for blackboard background alpha = (0.0, 0.0, 0.2, 0.4, 0.8, 1) actor = Volume(img, c, alpha) else: actor = Volume(img).isosurface(threshold=threshold) actor.color(c).alpha(alpha) ################################################################# 2D images: elif fl.endswith(".png") or fl.endswith(".jpg") or fl.endswith(".bmp") or fl.endswith(".jpeg"): if ".png" in fl: picr = vtk.vtkPNGReader() elif ".jpg" in fl or ".jpeg" in fl: picr = vtk.vtkJPEGReader() elif ".bmp" in fl: picr = vtk.vtkBMPReader() picr.SetFileName(filename) picr.Update() actor = Picture() # object derived from vtk.vtkImageActor() actor.SetInputData(picr.GetOutput()) if alpha is None: alpha = 1 actor.SetOpacity(alpha) ################################################################# multiblock: elif fl.endswith(".vtm") or fl.endswith(".vtmb"): read = vtk.vtkXMLMultiBlockDataReader() read.SetFileName(filename) read.Update() mb = read.GetOutput() if unpack: acts = [] for i in range(mb.GetNumberOfBlocks()): b = mb.GetBlock(i) if isinstance(b, (vtk.vtkPolyData, vtk.vtkImageData, vtk.vtkUnstructuredGrid, vtk.vtkStructuredGrid, vtk.vtkRectilinearGrid)): acts.append(b) return acts else: return mb ################################################################# numpy: elif fl.endswith(".npy"): acts = loadNumpy(filename) if unpack == False: return Assembly(acts) return acts elif fl.endswith(".geojson") or fl.endswith(".geojson.gz"): return loadGeoJSON(fl) ################################################################# polygonal mesh: else: if fl.endswith(".vtk"): # read all legacy vtk types #output can be: # PolyData, StructuredGrid, StructuredPoints, UnstructuredGrid, RectilinearGrid reader = vtk.vtkDataSetReader() reader.ReadAllScalarsOn() reader.ReadAllVectorsOn() reader.ReadAllTensorsOn() reader.ReadAllFieldsOn() reader.ReadAllNormalsOn() reader.ReadAllColorScalarsOn() elif fl.endswith(".ply"): reader = vtk.vtkPLYReader() elif fl.endswith(".obj"): reader = vtk.vtkOBJReader() elif fl.endswith(".stl"): reader = vtk.vtkSTLReader() elif fl.endswith(".byu") or fl.endswith(".g"): reader = vtk.vtkBYUReader() elif fl.endswith(".foam"): # OpenFoam reader = vtk.vtkOpenFOAMReader() elif fl.endswith(".pvd"): reader = vtk.vtkXMLGenericDataObjectReader() elif fl.endswith(".vtp"): reader = vtk.vtkXMLPolyDataReader() elif fl.endswith(".vts"): reader = vtk.vtkXMLStructuredGridReader() elif fl.endswith(".vtu"): reader = vtk.vtkXMLUnstructuredGridReader() elif fl.endswith(".vtr"): reader = vtk.vtkXMLRectilinearGridReader() elif fl.endswith(".pvtk"): reader = vtk.vtkPDataSetReader() elif fl.endswith(".pvtr"): reader = vtk.vtkXMLPRectilinearGridReader() elif fl.endswith("pvtu"): reader = vtk.vtkXMLPUnstructuredGridReader() elif fl.endswith(".txt") or fl.endswith(".xyz"): reader = vtk.vtkParticleReader() # (format is x, y, z, scalar) elif fl.endswith(".facet"): reader = vtk.vtkFacetReader() else: return None reader.SetFileName(filename) reader.Update() routput = reader.GetOutput() if not routput: colors.printc("~noentry Unable to load", filename, c=1) return None actor = Actor(routput, c, alpha) if fl.endswith(".txt") or fl.endswith(".xyz"): actor.GetProperty().SetPointSize(4) actor.filename = filename return actor
def __init__(self, fileName, **kwargs): self.reader = vtk.vtkOpenFOAMReader() self.reader.SetFileName(fileName) self.reader.UpdateInformation() self.timeValues = self.reader.GetTimeValues() self.Nt = self.timeValues.GetNumberOfTuples() self.caseFolder = os.path.dirname(fileName) # Default options (read everything) self.reader.DecomposePolyhedraOn() self.reader.CacheMeshOn() self.reader.EnableAllCellArrays() self.reader.EnableAllPointArrays() self.reader.CreateCellToPointOff() self.reader.EnableAllPatchArrays() self.reader.EnableAllLagrangianArrays() # Time dictionary for the current timestep self.__timeDict = None # Lazy evaluation # Read options for k, v in list(kwargs.items()): #print k, ' => ', v if k == 'cellArrays': self.reader.DisableAllCellArrays() if v: for cellArray in v: self.reader.SetCellArrayStatus(cellArray, 1) elif k == 'patchArrays': patches = self.getPatchNames() self.reader.DisableAllPatchArrays() if v: for patchArray in v: if not patchArray in patches: print('Available patches') for patch in patches: print(' ' + patch) raise RuntimeError("Unknown patch name " + patchArray) self.reader.SetPatchArrayStatus(patchArray, 1) elif k == 'pointArrays': self.reader.DisableAllPointArrays() if v: for pointArray in v: self.reader.SetPointArrayStatus(pointArray, 1) elif k == 'lagrangianArrays': self.reader.DisableAllLagrangianArrays() if v: for lagrangianArray in v: self.reader.SetLagrangianArrayStatus( lagrangianArray, 1) elif k == 'decomposePolyhedra': if v: self.reader.DecomposePolyhedraOn() else: self.reader.DecomposePolyhedraOff() elif k == 'cellToPoint': if v: self.reader.CreateCellToPointOn() else: self.reader.CreateCellToPointOff() elif k == 'cacheMesh': if v: self.reader.CacheMeshOn() else: self.reader.CacheMeshOff() else: raise ValueError('Invalid argument ' + k)
#!/usr/bin/env python # -*- coding: utf-8 -*- import os import vtk as vtk import numpy as np from vtk.util.numpy_support import vtk_to_numpy rootDir = "pitzDaily" fileName = rootDir + "/system/controlDict" # reader reader = vtk.vtkOpenFOAMReader() reader.SetFileName(fileName) reader.CreateCellToPointOn() reader.DecomposePolyhedraOn() reader.EnableAllCellArrays() reader.Update() tArray = vtk_to_numpy(reader.GetTimeValues()) #出力ファイルの時間を格納 print(tArray) #output-> [ 0. 100. 200. 300. 400. 406.] reader.UpdateTimeStep(tArray[-1]) #最新の時間406を出力設定 reader.Update() filter = vtk.vtkGeometryFilter() filter.SetInputConnection(reader.GetOutputPort()) #filterにreaderを設定 # mapper mapper = vtk.vtkCompositePolyDataMapper2() mapper.SetInputConnection(filter.GetOutputPort()) #mapperにfilterを設定 ##スカラー値の設定