diff --git a/src/blenderbim/blenderbim/bim/module/model/product.py b/src/blenderbim/blenderbim/bim/module/model/product.py index 9b5d3e93d4..bfb7349391 100644 --- a/src/blenderbim/blenderbim/bim/module/model/product.py +++ b/src/blenderbim/blenderbim/bim/module/model/product.py @@ -6,6 +6,7 @@ import ifcopenshell.util.representation from . import wall, slab from blenderbim.bim.ifc import IfcStore from ifcopenshell.api.pset.data import Data as PsetData +from mathutils import Vector class AddTypeInstance(bpy.types.Operator): diff --git a/src/blenderbim/blenderbim/bim/module/model/slab.py b/src/blenderbim/blenderbim/bim/module/model/slab.py index 22a7f241b5..ba7ceb2997 100644 --- a/src/blenderbim/blenderbim/bim/module/model/slab.py +++ b/src/blenderbim/blenderbim/bim/module/model/slab.py @@ -150,7 +150,7 @@ class DumbSlabPlaner: def regenerate_from_type(self, usecase_path, ifc_file, settings): self.unit_scale = ifcopenshell.util.unit.calculate_unit_scale(ifc_file) new_material = ifcopenshell.util.element.get_material(settings["relating_type"]) - if not new_material.is_a("IfcMaterialLayerSet"): + if not new_material or not new_material.is_a("IfcMaterialLayerSet"): return new_thickness = sum([l.LayerThickness for l in new_material.MaterialLayers]) self.change_thickness(settings["related_object"], new_thickness) diff --git a/src/blenderbim/blenderbim/bim/module/model/wall.py b/src/blenderbim/blenderbim/bim/module/model/wall.py index b235f77441..0a1963185a 100644 --- a/src/blenderbim/blenderbim/bim/module/model/wall.py +++ b/src/blenderbim/blenderbim/bim/module/model/wall.py @@ -819,7 +819,7 @@ class DumbWallPlaner: def regenerate_from_type(self, usecase_path, ifc_file, settings): self.unit_scale = ifcopenshell.util.unit.calculate_unit_scale(ifc_file) new_material = ifcopenshell.util.element.get_material(settings["relating_type"]) - if not new_material.is_a("IfcMaterialLayerSet"): + if not new_material or not new_material.is_a("IfcMaterialLayerSet"): return new_thickness = sum([l.LayerThickness for l in new_material.MaterialLayers]) self.change_thickness(settings["related_object"], new_thickness) diff --git a/src/ifcopenshell-python/ifcopenshell/api/type/assign_type.py b/src/ifcopenshell-python/ifcopenshell/api/type/assign_type.py index d11fb8f3ae..e79319377e 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/type/assign_type.py +++ b/src/ifcopenshell-python/ifcopenshell/api/type/assign_type.py @@ -84,6 +84,8 @@ class Usecase: def map_material_usages(self): type_material = ifcopenshell.util.element.get_material(self.settings["relating_type"]) + if not type_material: + return if type_material.is_a("IfcMaterialLayerSet"): ifcopenshell.api.run( "material.assign_material",