def doNonLinear(self, ghosts, ncells): pts = vtk.vtkPoints() pts.SetNumberOfPoints(10) pts.InsertPoint(0, (0, 0, 0)) pts.InsertPoint(1, (1, 0, 0)) pts.InsertPoint(2, (0.5, 1, 0)) pts.InsertPoint(3, (0.5, 0.5, 1)) pts.InsertPoint(4, (0.5, 0, 0)) pts.InsertPoint(5, (0.25, 0.5, 0)) pts.InsertPoint(6, (0.75, 0.5, 0)) pts.InsertPoint(7, (0.25, 0.25, 0.5)) pts.InsertPoint(8, (0.75, 0.25, 0.5)) pts.InsertPoint(9, (0.5, 0.75, 0.5)) te = vtk.vtkQuadraticTetra() ptIds = te.GetPointIds() for i in range(10): ptIds.SetId(i, i) grid = vtk.vtkUnstructuredGrid() grid.Allocate(1, 1) grid.InsertNextCell(te.GetCellType(), te.GetPointIds()) grid.SetPoints(pts) grid.GetPointData().AddArray(ghosts) ugg = vtk.vtkUnstructuredGridGeometryFilter() ugg.SetInputData(grid) dss = vtk.vtkDataSetSurfaceFilter() dss.SetNonlinearSubdivisionLevel(2) dss.SetInputConnection(ugg.GetOutputPort()) dss.Update() self.assertEqual(dss.GetOutput().GetNumberOfCells(), ncells)
def create_node_labels(point_id_filter: vtk.vtkIdFilter, grid: vtk.vtkUnstructuredGrid, rend: vtk.vtkRenderer, label_size: float = 10.0): """creates the node labels""" # filter inner points, so only surface points will be available geo = vtk.vtkUnstructuredGridGeometryFilter() geo.SetInputData(grid) # points vertex_filter = vtk.vtkVertexGlyphFilter() vertex_filter.SetInputConnection(geo.GetOutputPort()) vertex_filter.Update() points_mapper = vtk.vtkPolyDataMapper() points_mapper.SetInputConnection(vertex_filter.GetOutputPort()) points_mapper.ScalarVisibilityOn() points_actor = vtk.vtkActor() points_actor.SetMapper(points_mapper) points_actor.GetProperty().SetPointSize(label_size) # point labels label_mapper = vtk.vtkLabeledDataMapper() label_mapper.SetInputConnection(point_id_filter.GetOutputPort()) label_mapper.SetLabelModeToLabelFieldData() label_actor = vtk.vtkActor2D() label_actor.SetMapper(label_mapper) return label_actor
def ug_geometry(self): print('setting unstructured grid geometry') geometry = vtk.vtkUnstructuredGridGeometryFilter() print(geometry.GetDuplicateGhostCellClipping()) geometry.SetInputConnection(self.mesh.GetOutputPort()) geometry.Update() self.mesh = geometry
def doNonLinear(self, ghosts, ncells): pts = vtk.vtkPoints() pts.SetNumberOfPoints(10) pts.InsertPoint(0, (0, 0, 0)) pts.InsertPoint(1, (1, 0, 0)) pts.InsertPoint(2, (0.5, 1, 0)) pts.InsertPoint(3, (0.5, 0.5, 1)) pts.InsertPoint(4, (0.5, 0, 0)) pts.InsertPoint(5, (1.25, 0.5, 0)) pts.InsertPoint(6, (0.25, 0.5, 0)) pts.InsertPoint(7, (0.25, 0.25, 0.5)) pts.InsertPoint(8, (0.75, 0.25, 0.5)) pts.InsertPoint(9, (0.5, 0.75, 0.5)) te = vtk.vtkQuadraticTetra() ptIds = te.GetPointIds() for i in range(10): ptIds.SetId(i, i) grid = vtk.vtkUnstructuredGrid() grid.Allocate(1, 1) grid.InsertNextCell(te.GetCellType(), te.GetPointIds()) grid.SetPoints(pts) grid.GetPointData().AddArray(ghosts) ugg = vtk.vtkUnstructuredGridGeometryFilter() ugg.SetInputData(grid) dss = vtk.vtkDataSetSurfaceFilter() dss.SetNonlinearSubdivisionLevel(2) dss.SetInputConnection(ugg.GetOutputPort()) dss.Update() self.assertEqual(dss.GetOutput().GetNumberOfCells(), ncells)
def __init__(self, module_manager): SimpleVTKClassModuleBase.__init__( self, module_manager, vtk.vtkUnstructuredGridGeometryFilter(), 'Processing.', ('vtkUnstructuredGrid',), ('vtkUnstructuredGrid',), replaceDoc=True, inputFunctions=None, outputFunctions=None)
def loadUnStructuredGrid(filename): # not tested '''Load a vtkunStructuredGrid object from file and return a vtkActor.''' reader = vtk.vtkUnstructuredGridReader() reader.SetFileName(filename) reader.Update() gf = vtk.vtkUnstructuredGridGeometryFilter() gf.SetInputConnection(reader.GetOutputPort()) gf.Update() return Actor(gf.GetOutput())
def __init__(self, module_manager): SimpleVTKClassModuleBase.__init__( self, module_manager, vtk.vtkUnstructuredGridGeometryFilter(), 'Processing.', ('vtkUnstructuredGrid', ), ('vtkUnstructuredGrid', ), replaceDoc=True, inputFunctions=None, outputFunctions=None)
reader = vtk.vtkUnstructuredGridReader() reader.SetFileName("bg.vtk") reader.Update() root = Tkinter.Tk() frame = Tkinter.Frame(root) frame.pack(fill=Tkinter.BOTH, expand=1, side=Tkinter.TOP) ren = vtk.vtkRenderer() renwin = vtk.vtkRenderWindow() renwin.AddRenderer(ren) ugrid = reader.GetOutput() geoFilter = vtk.vtkUnstructuredGridGeometryFilter() geoFilter.SetInputConnection(reader.GetOutputPort()) geoFilter.Update() mapper = vtk.vtkDataSetMapper() mapper.SetInputConnection(geoFilter.GetOutputPort()) mapper.SetScalarVisibility(0) #mapper.GetInput().GetCellData().SetActiveScalars("oga_cell_status") actor = vtk.vtkActor() actor.SetMapper(mapper) actor.GetProperty().EdgeVisibilityOn() ren.AddActor(actor)
def main(): inputFilename = '3_cells.vtk' assert os.path.exists(inputFilename) # read file. reader = vtk.vtkUnstructuredGridReader() reader.SetFileName(inputFilename) reader.ReadAllScalarsOn() reader.SetScalarsName(reader.GetScalarsNameInFile(0)) reader.Update() ncell = reader.GetOutput().GetNumberOfCells() assert ncell > 0 # get attributes. ugrid = reader.GetOutput() cellData = ugrid.GetCellData() data = cellData.GetScalars(reader.GetScalarsNameInFile(0)) # validate that attributes are read correctly. #for (int i=0 i<ncell i++) #{ #std::cout<< i << ": " << data.GetComponent(i,0)<< std::endl #} data = cellData.GetScalars(reader.GetScalarsNameInFile(1)) #for (int i=0 i<ncell i++) #{ #std::cout<< i << ": " << data.GetComponent(i,0)<< std::endl #} data = cellData.GetScalars(reader.GetScalarsNameInFile(0)) # geometry filter. geometryFilter = vtk.vtkUnstructuredGridGeometryFilter() geometryFilter.SetInputConnection(reader.GetOutputPort()) geometryFilter.Update() # Generate data arrays containing point and cell ids ids = vtk.vtkIdFilter() ids.SetInputConnection(geometryFilter.GetOutputPort()) ids.PointIdsOff() ids.CellIdsOff() ids.FieldDataOn() # Create labels for cells cc = vtk.vtkCellCenters() cc.SetInputConnection(ids.GetOutputPort()) # lut lut = vtk.vtkLookupTable() lut.SetNumberOfTableValues(ncell) lut.Build() lut.SetTableValue(0, 1, 0, 0, 1) # red. lut.SetTableValue(1, 0, 1, 0, 1) # green. lut.SetTableValue(2, 0, 0, 1, 1) # blue. # mapper. mapper = vtk.vtkDataSetMapper() mapper.SetInputConnection(geometryFilter.GetOutputPort()) mapper.SetLookupTable(lut) mapper.SetScalarVisibility(1) mapper.SetScalarModeToUseCellData() mapper.SetScalarRange(11, 13) mapper.GetInput().GetCellData().SetActiveScalars("cell_tag") # label mapper. label_mapper = vtk.vtkLabeledDataMapper() label_mapper.SetInputConnection(cc.GetOutputPort()) label_mapper.SetLabelModeToLabelScalars() # actor. actor = vtk.vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetRepresentationToWireframe() # label actor. label_actor = vtk.vtkActor2D() label_actor.SetMapper(label_mapper) # renderer. renderer = vtk.vtkRenderer() renderWindow = vtk.vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindowInteractor = vtk.vtkRenderWindowInteractor() renderWindowInteractor.SetRenderWindow(renderWindow) renderer.AddActor(actor) renderer.AddActor(label_actor) renderWindow.Render() renderWindowInteractor.Start()
def main(): inputFilename = 'element_labels_input.vtk' # read file reader = vtk.vtkUnstructuredGridReader() reader.SetFileName(inputFilename) reader.ReadAllScalarsOn() reader.SetScalarsName(reader.GetScalarsNameInFile(0)) reader.Update() ncells = reader.GetOutput().GetNumberOfCells() npoints = reader.GetOutput().GetNumberOfPoints() # get attributes ugrid = reader.GetOutput() cell_data = ugrid.GetCellData() point_data = ugrid.GetPointData() cell_scalars = cell_data.GetScalars(reader.GetScalarsNameInFile(0)) # validate that attributes are read correctly print('name0:') for i in range(ncells): print(i, ": ", cell_scalars.GetComponent(i, 0)) cell_scalars = cell_data.GetScalars(reader.GetScalarsNameInFile(1)) print('\nname1:') for i in range(ncells): print(i, ": ", cell_scalars.GetComponent(i, 0)) point_scalars = point_data.GetScalars(reader.GetScalarsNameInFile(0)) print(point_scalars) print('\nname2:') for i in range(npoints): print(i, ": ", point_scalars.GetComponent(i, 0)) #point_scalars = cell_data.GetScalars(reader.GetScalarsNameInFile(2)) #print(point_scalars) # geometry filter geometry_filter = vtk.vtkUnstructuredGridGeometryFilter() geometry_filter.SetInputConnection(reader.GetOutputPort()) geometry_filter.Update() # Generate data arrays containing point and cell ids ids = vtk.vtkIdFilter() ids.SetInputConnection(geometry_filter.GetOutputPort()) ids.PointIdsOff() ids.CellIdsOff() ids.FieldDataOn() # Create labels for cells cell_centers = vtk.vtkCellCenters() cell_centers.SetInputConnection(ids.GetOutputPort()) node_points = vtk.vtkVertexGlyphFilter() node_points.SetInputConnection(ids.GetOutputPort()) node_points.Update() #node_points = vtk.vtkPointCentered() #node_points.SetInputConnection(ids.GetOutputPort()) # lut lut = vtk.vtkLookupTable() lut.SetNumberOfTableValues(ncells) lut.Build() lut.SetTableValue(0, 1, 0, 0, 1) # red. lut.SetTableValue(1, 0, 1, 0, 1) # green. lut.SetTableValue(2, 0, 0, 1, 1) # blue. # mapper mapper = vtk.vtkDataSetMapper() mapper.SetInputConnection(geometry_filter.GetOutputPort()) mapper.SetScalarVisibility(1) if apply_colors: mapper.SetLookupTable(lut) mapper.SetScalarModeToUseCellData() mapper.SetScalarRange(11, 13) mapper.GetInput().GetCellData().SetActiveScalars("cell_tag") # label mapper cell_label_mapper = vtk.vtkLabeledDataMapper() cell_label_mapper.SetInputConnection(cell_centers.GetOutputPort()) cell_label_mapper.SetLabelModeToLabelScalars() #point_label_mapper = vtk.vtkLabeledDataMapper() #point_label_mapper.SetInputConnection(node_points.GetOutputPort()) #point_label_mapper.SetLabelModeToLabelScalars() # actor actor = vtk.vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetRepresentationToWireframe() # label actor cell_label_actor = vtk.vtkActor2D() cell_label_actor.SetMapper(cell_label_mapper) #point_label_actor = vtk.vtkActor2D() #point_label_actor.SetMapper(point_label_mapper) # renderer renderer = vtk.vtkRenderer() renderWindow = vtk.vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindowInteractor = vtk.vtkRenderWindowInteractor() renderWindowInteractor.SetRenderWindow(renderWindow) renderer.AddActor(actor) renderer.AddActor(cell_label_actor) #renderer.AddActor(point_label_actor) renderWindow.Render() renderWindowInteractor.Start()
def smoothUnstructuredGridSurface(vtkGrid): assert isinstance(vtkGrid, vtk.vtkUnstructuredGrid) ugGeometryFilter = vtk.vtkUnstructuredGridGeometryFilter() ugGeometryFilter.PassThroughPointIdsOn() ugGeometryFilter.MergingOff() try: ugGeometryFilter.SetInputData(vtkGrid) except AttributeError: ugGeometryFilter.SetInput(vtkGrid) ugGeometryFilter.Update() surfaceUnstructuredGrid = ugGeometryFilter.GetOutput() assert isinstance(surfaceUnstructuredGrid, vtk.vtkUnstructuredGrid) originalPointsIdsName = ugGeometryFilter.GetOriginalPointIdsName() cellData = surfaceUnstructuredGrid.GetCellData() numCellArrays = cellData.GetNumberOfArrays() for i in range(0, numCellArrays): cellArrayName = cellData.GetArrayName(i) print("CellArray(" + str(i) + ") '" + cellArrayName + "')") pointData = surfaceUnstructuredGrid.GetPointData() assert isinstance(pointData, vtk.vtkPointData) numPointArrays = pointData.GetNumberOfArrays() for i in range(0, numPointArrays): pointArrayName = pointData.GetArrayName(i) print("PointArray(" + str(i) + ") '" + pointArrayName + "'") geometryFilter = vtk.vtkGeometryFilter() assert isinstance(geometryFilter, vtk.vtkGeometryFilter) try: geometryFilter.SetInputData(surfaceUnstructuredGrid) except AttributeError: geometryFilter.SetInput(surfaceUnstructuredGrid) geometryFilter.Update() polyData = geometryFilter.GetOutput() assert isinstance(polyData, vtk.vtkPolyData) filter = vtk.vtkWindowedSincPolyDataFilter() try: filter.SetInputData(polyData) except AttributeError: filter.SetInput(polyData) filter.SetNumberOfIterations(15) filter.BoundarySmoothingOff() filter.FeatureEdgeSmoothingOff() filter.SetFeatureAngle(120.0) filter.SetPassBand(0.001) filter.NonManifoldSmoothingOff() filter.NormalizeCoordinatesOn() filter.Update() smoothedPolydata = filter.GetOutput() smoothedPoints = smoothedPolydata.GetPoints() assert isinstance(smoothedPoints, vtk.vtkPoints) smoothedPointData = smoothedPolydata.GetPointData() assert isinstance(smoothedPointData, vtk.vtkPointData) pointIdsArray = smoothedPointData.GetArray(originalPointsIdsName) assert isinstance(pointIdsArray, vtk.vtkIdTypeArray) pointsIdsArraySize = pointIdsArray.GetSize() origPoints = vtkGrid.GetPoints() for i in range(0, pointsIdsArraySize): pointId = pointIdsArray.GetValue(i) smoothedPoint = smoothedPoints.GetPoint(i) origPoints.SetPoint(pointId, smoothedPoint) return vtkGrid