diff --git a/src/Mod/Fem/femguiobjects/_ViewProviderFemMaterial.py b/src/Mod/Fem/femguiobjects/_ViewProviderFemMaterial.py index 90ddbfc3f3..02e7c4d2be 100644 --- a/src/Mod/Fem/femguiobjects/_ViewProviderFemMaterial.py +++ b/src/Mod/Fem/femguiobjects/_ViewProviderFemMaterial.py @@ -204,6 +204,9 @@ class _TaskPanelFemMaterial: ref_shty = '' for ref in self.references: r = FemMeshTools.get_element(ref[0], ref[1]) # the method getElement(element) does not return Solid elements + if not r: + FreeCAD.Console.PrintError('Problem in retrieving element: {} \n'.format(ref[1])) + continue # print(' ReferenceShape : ', r.ShapeType, ', ', ref[0].Name, ', ', ref[0].Label, ' --> ', ref[1]) if not ref_shty: ref_shty = r.ShapeType diff --git a/src/Mod/Fem/femmesh/meshtools.py b/src/Mod/Fem/femmesh/meshtools.py index 82be44a50f..30fa2bd477 100644 --- a/src/Mod/Fem/femmesh/meshtools.py +++ b/src/Mod/Fem/femmesh/meshtools.py @@ -1449,7 +1449,12 @@ def is_same_geometry(shape1, shape2): def get_element(part, element): if element.startswith('Solid'): - return part.Shape.Solids[int(element.lstrip('Solid')) - 1] # Solid + index = int(element.lstrip('Solid')) - 1 + if index >= len(part.Shape.Solids): + FreeCAD.Console.PrintError('Index out of range. This Solid does not exist in the Shape!\n') + return None + else: + return part.Shape.Solids[index] # Solid else: return part.Shape.getElement(element) # Face, Edge, Vertex