From 9512075506057857a2e2ea8e6d8c2f5a0caf1db5 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Fri, 19 Aug 2022 12:41:08 +1000 Subject: [PATCH] Minor fix --- src/blenderbim/blenderbim/bim/import_ifc.py | 6 ++++- .../blenderbim/bim/module/pset/prop.py | 4 +-- src/blenderbim/test/bim/feature/pset.feature | 27 ++++++++++++++++++- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/import_ifc.py b/src/blenderbim/blenderbim/bim/import_ifc.py index 85cf80cc63..741f09b5da 100644 --- a/src/blenderbim/blenderbim/bim/import_ifc.py +++ b/src/blenderbim/blenderbim/bim/import_ifc.py @@ -326,7 +326,11 @@ class IfcImporter: self.elements = [e for e in self.elements if e.Representation and not e.is_a("IfcFeatureElement")] self.elements = set(self.elements[offset:offset_limit]) - self.element_types = set([ifcopenshell.util.element.get_type(e) for e in self.elements]) + + if self.ifc_import_settings.has_filter or offset or offset_limit < len(self.elements): + self.element_types = set([ifcopenshell.util.element.get_type(e) for e in self.elements]) + else: + self.element_types = set(self.file.by_type("IfcElementType")) if self.ifc_import_settings.has_filter and self.ifc_import_settings.should_filter_spatial_elements: self.spatial_elements = self.get_spatial_elements_filtered_by_elements(self.elements) diff --git a/src/blenderbim/blenderbim/bim/module/pset/prop.py b/src/blenderbim/blenderbim/bim/module/pset/prop.py index 6d0d419157..97d6677629 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/prop.py +++ b/src/blenderbim/blenderbim/bim/module/pset/prop.py @@ -169,14 +169,14 @@ class MaterialPsetProperties(PropertyGroup): class TaskPsetProperties(PropertyGroup): active_pset_id: IntProperty(name="Active Pset ID") active_pset_name: StringProperty(name="Pset Name") - properties: CollectionProperty(name="Properties", type=Attribute) + properties: CollectionProperty(name="Properties", type=IfcProperty) qto_name: EnumProperty(items=getTaskQtoNames, name="Qto Name") class ResourcePsetProperties(PropertyGroup): active_pset_id: IntProperty(name="Active Pset ID") active_pset_name: StringProperty(name="Pset Name") - properties: CollectionProperty(name="Properties", type=Attribute) + properties: CollectionProperty(name="Properties", type=IfcProperty) pset_name: EnumProperty(items=getResourcePsetNames, name="Pset Name") qto_name: EnumProperty(items=getResourceQtoNames, name="Qto Name") diff --git a/src/blenderbim/test/bim/feature/pset.feature b/src/blenderbim/test/bim/feature/pset.feature index 48bdc9ac88..4101822d3b 100644 --- a/src/blenderbim/test/bim/feature/pset.feature +++ b/src/blenderbim/test/bim/feature/pset.feature @@ -63,7 +63,7 @@ Scenario: Enable pset editing - work schedule And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()" When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='WorkSchedule')" -Scenario: Enable pset editing - resource +Scenario: Enable pset editing - resource with time series properties Given an empty IFC project And I press "bim.load_resources" And I press "bim.add_resource(ifc_class='IfcSubContractResource', resource=0)" @@ -73,6 +73,31 @@ Scenario: Enable pset editing - resource When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Resource')" Then nothing happens +Scenario: Enable pset editing - resource with regular single properties + Given an empty IFC project + And I press "bim.load_resources" + And I press "bim.add_resource(ifc_class='IfcCrewResource', resource=0)" + And the variable "resource" is "{ifc}.by_type('IfcCrewResource')[-1].id()" + And I press "bim.add_resource(ifc_class='IfcLaborResource', resource={resource})" + And I set "scene.BIMResourceProperties.active_resource_index" to "1" + And I set "scene.ResourcePsetProperties.pset_name" to "EPset_Productivity" + And I press "bim.add_pset(obj_type='Resource')" + And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()" + When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Resource')" + Then nothing happens + +Scenario: Enable pset editing - task + Given an empty IFC project + And I press "bim.add_work_schedule" + And the variable "work_schedule" is "IfcStore.get_file().by_type('IfcWorkSchedule')[0].id()" + And I press "bim.enable_editing_tasks(work_schedule={work_schedule})" + And I press "bim.add_summary_task(work_schedule={work_schedule})" + And I set "scene.TaskPsetProperties.qto_name" to "Qto_TaskBaseQuantities" + And I press "bim.add_qto(obj_type='Task')" + And the variable "pset" is "{ifc}.by_type('IfcElementQuantity')[-1].id()" + When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Task')" + Then nothing happens + Scenario: Copy property to selected - copy property Given an empty IFC project And I add a cube