diff --git a/src/ifcblenderexport/blenderbim/bim/import_ifc.py b/src/ifcblenderexport/blenderbim/bim/import_ifc.py index 9b8d3963f5..e751d88d42 100644 --- a/src/ifcblenderexport/blenderbim/bim/import_ifc.py +++ b/src/ifcblenderexport/blenderbim/bim/import_ifc.py @@ -335,8 +335,6 @@ class IfcImporter: self.profile_code("Create project") self.create_spatial_hierarchy() self.profile_code("Create spatial hierarchy") - self.create_type_products() - self.profile_code("Create type products") self.create_aggregates() self.profile_code("Create aggregates") self.create_openings_collection() @@ -347,14 +345,16 @@ class IfcImporter: # self.parse_native_elements() # self.profile_code("Parsing native elements") self.create_grids() - self.profile_code("Creating grids") + self.profile_code("Create grids") # TODO: Deprecate # self.create_native_products() - # self.profile_code("Creating native products") + # self.profile_code("Create native products") self.create_products() - self.profile_code("Creating meshified products") + self.profile_code("Create products") + self.create_type_products() + self.profile_code("Create type products") self.create_annotation() - self.profile_code("Creating annotation") + self.profile_code("Create annotation") self.place_objects_in_spatial_tree() self.profile_code("Placing objects in spatial tree") if self.ifc_import_settings.should_merge_by_class: @@ -633,16 +633,17 @@ class IfcImporter: return representation_map = self.get_type_product_body_representation_map(element) mesh = None - if self.ifc_import_settings.should_import_type_representations and representation_map: - try: - shape = ifcopenshell.geom.create_shape(self.settings, representation_map.MappedRepresentation) - mesh_name = self.get_mesh_name(shape) - mesh = self.meshes.get(mesh_name) - if mesh is None: + if representation_map: + representation = representation_map.MappedRepresentation + mesh_name = "{}/{}".format(representation.ContextOfItems.id(), representation.id()) + mesh = self.meshes.get(mesh_name) + if mesh is None: + try: + shape = ifcopenshell.geom.create_shape(self.settings, representation_map.MappedRepresentation) mesh = self.create_mesh(element, shape) self.meshes[mesh_name] = mesh - except: - self.ifc_import_settings.logger.error("Failed to generate shape for %s", element) + except: + self.ifc_import_settings.logger.error("Failed to generate shape for %s", element) obj = bpy.data.objects.new(self.get_name(element), mesh) obj.BIMObjectProperties.ifc_definition_id = element.id() self.material_creator.create(element, obj, mesh) @@ -1576,7 +1577,6 @@ class IfcImportSettings: self.logger = None self.input_file = None self.diff_file = None - self.should_import_type_representations = False self.should_import_spaces = False self.should_auto_set_workarounds = True self.should_use_cpu_multiprocessing = True diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py index 556e176c05..268c03bdb7 100644 --- a/src/ifcblenderexport/blenderbim/bim/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/operator.py @@ -111,7 +111,6 @@ class ImportIFC(bpy.types.Operator, ImportHelper): filename_ext = ".ifc" filter_glob: bpy.props.StringProperty(default="*.ifc;*.ifczip;*.ifcxml", options={"HIDDEN"}) - should_import_type_representations: bpy.props.BoolProperty(name="Import Type Representations", default=False) should_import_spaces: bpy.props.BoolProperty(name="Import Spaces", default=False) should_auto_set_workarounds: bpy.props.BoolProperty(name="Automatically Set Vendor Workarounds", default=True) should_use_cpu_multiprocessing: bpy.props.BoolProperty(name="Import with CPU Multiprocessing", default=True) @@ -138,7 +137,6 @@ class ImportIFC(bpy.types.Operator, ImportHelper): ) settings = import_ifc.IfcImportSettings.factory(context, self.filepath, logger) - settings.should_import_type_representations = self.should_import_type_representations settings.should_import_spaces = self.should_import_spaces settings.should_auto_set_workarounds = self.should_auto_set_workarounds settings.should_use_cpu_multiprocessing = self.should_use_cpu_multiprocessing