diff --git a/python/damask/_grid.py b/python/damask/_grid.py index 68e93d81c..7fef8be6f 100644 --- a/python/damask/_grid.py +++ b/python/damask/_grid.py @@ -17,6 +17,7 @@ from . import util from . import grid_filters from . import Rotation from . import Table +from . import Colormap from ._typehints import FloatSequence, IntSequence class Grid: @@ -681,11 +682,20 @@ class Grid: header='\n'.join(header), fmt=format_string, comments='') - def show(self) -> None: - """Show on screen.""" + def show(self, + colormap: Colormap = Colormap.from_predefined('viridis')) -> None: + """ + Show on screen. + + Parameters + ---------- + colormap : damask.Colormap + Colors used to map material IDs. + + """ v = VTK.from_image_data(self.cells,self.size,self.origin) v.add(self.material.flatten(),'material') - v.show('material') + v.show('material',colormap) def add_primitive(self, diff --git a/python/damask/_vtk.py b/python/damask/_vtk.py index ff989ff1a..ff04560ac 100644 --- a/python/damask/_vtk.py +++ b/python/damask/_vtk.py @@ -205,7 +205,7 @@ class VTK: VTK-based geometry from file. """ - if not os.path.isfile(fname): # vtk has a strange error handling + if not os.path.isfile(os.path.expanduser(fname)): # vtk has a strange error handling raise FileNotFoundError(f'No such file: {fname}') if (ext := Path(fname).suffix) == '.vtk' or dataset_type is not None: reader = vtk.vtkGenericDataObjectReader() @@ -437,7 +437,9 @@ class VTK: return writer.GetOutputString() - def show(self,label=None,colormap=Colormap.from_predefined('strain')): + def show(self, + label: str = None, + colormap: Colormap = Colormap.from_predefined('viridis')): """ Render. @@ -476,7 +478,15 @@ class VTK: ren = vtk.vtkRenderer() ren.AddActor(actor) - ren.SetBackground(67/255,128/255,208/255) + if label is None: + ren.SetBackground(67/255,128/255,208/255) + else: + colormap = vtk.vtkScalarBarActor() + colormap.SetLookupTable(lut) + colormap.SetTitle(label) + colormap.SetMaximumWidthInPixels(width//100) + ren.AddActor2D(colormap) + ren.SetBackground(0.3,0.3,0.3) window = vtk.vtkRenderWindow() window.AddRenderer(ren)