diff --git a/src/blenderbim/blenderbim/bim/module/pset/calc_quantity_function_mapper.py b/src/blenderbim/blenderbim/bim/module/pset/calc_quantity_function_mapper.py index e02e0f8332..2d22c5ae09 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/calc_quantity_function_mapper.py +++ b/src/blenderbim/blenderbim/bim/module/pset/calc_quantity_function_mapper.py @@ -243,14 +243,14 @@ mapper = { 'GrossWeight' : None, }, 'Qto_SlabBaseQuantities' : { - 'Width' : None, - 'Length' : None, - 'Depth' : "get_height", - 'Perimeter' : None, - 'GrossArea' : None, - 'NetArea' : None, - 'GrossVolume' : None, - 'NetVolume' : None, + 'Width' : "get_height", + 'Length' : "get_length", + 'Depth' : "get_width", + 'Perimeter' : "get_gross_perimeter", + 'GrossArea' : "get_gross_footprint_area", + 'NetArea' : "get_net_footprint_area", + 'GrossVolume' : "get_gross_volume", + 'NetVolume' : "get_net_volume", 'GrossWeight' : None, 'NetWeight' : None, }, diff --git a/src/blenderbim/blenderbim/bim/module/pset/qto_calculator.py b/src/blenderbim/blenderbim/bim/module/pset/qto_calculator.py index 4ce8272c90..2e5c6a4cad 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/qto_calculator.py +++ b/src/blenderbim/blenderbim/bim/module/pset/qto_calculator.py @@ -69,7 +69,7 @@ class QtoCalculator: elif "height" in prop_name or "depth" in prop_name: return self.get_height(obj) elif "perimeter" in prop_name: - return self.get_perimeter(obj) + return self.get_net_perimeter(obj) elif "area" in prop_name and ("footprint" in prop_name or "section" in prop_name or "floor" in prop_name): return self.get_net_footprint_area(obj) elif "area" in prop_name and "side" in prop_name: @@ -131,7 +131,7 @@ class QtoCalculator: """ return (Vector(o.bound_box[1]) - Vector(o.bound_box[0])).length - def get_perimeter(self, o): + def get_net_perimeter(self, o): parsed_edges = [] shared_edges = [] perimeter = 0 @@ -146,6 +146,14 @@ class QtoCalculator: perimeter -= self.get_edge_key_distance(o, edge_key) return perimeter + def get_gross_perimeter(self, o): + element = tool.Ifc.get_entity(o) + mesh = self.get_gross_element_mesh(element) + gross_obj = bpy.data.objects.new("GrossObj", mesh) + gross_perimeter = self.get_net_perimeter(gross_obj) + self.delete_obj(gross_obj) + return gross_perimeter + def get_lowest_polygons(self, o): lowest_polygons = [] lowest_z = None