mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-16 21:42:19 +00:00
Merge pull request #2605 from maxfb87/mapping_quantities
Mapping quantities (see #2533)
This commit is contained in:
@@ -65,10 +65,10 @@ mapper = {
|
|||||||
'GrossWeight' : None,
|
'GrossWeight' : None,
|
||||||
},
|
},
|
||||||
'Qto_DoorBaseQuantities' : {
|
'Qto_DoorBaseQuantities' : {
|
||||||
'Width' : None,
|
'Width' : { "function_name" : "get_length", "args" : ", main_axis = 'x'"},
|
||||||
'Height' : None,
|
'Height' : "get_height",
|
||||||
'Perimeter' : None,
|
'Perimeter' : "get_rectangular_perimeter",
|
||||||
'Area' : None,
|
'Area' : "get_net_side_area",
|
||||||
},
|
},
|
||||||
'Qto_DuctSegmentBaseQuantities' : {
|
'Qto_DuctSegmentBaseQuantities' : {
|
||||||
'Length' : None,
|
'Length' : None,
|
||||||
@@ -506,10 +506,10 @@ mapper = {
|
|||||||
'GrossWeight' : None,
|
'GrossWeight' : None,
|
||||||
},
|
},
|
||||||
'Qto_WindowBaseQuantities' : {
|
'Qto_WindowBaseQuantities' : {
|
||||||
'Width' : None,
|
'Width' : { "function_name" : "get_length", "args" : ", main_axis = 'x'"},
|
||||||
'Height' : None,
|
'Height' : "get_height",
|
||||||
'Perimeter' : None,
|
'Perimeter' : "get_rectangular_perimeter",
|
||||||
'Area' : None,
|
'Area' : "get_net_side_area",
|
||||||
},
|
},
|
||||||
'Qto_SanitaryTerminalBaseQuantities' : {
|
'Qto_SanitaryTerminalBaseQuantities' : {
|
||||||
'GrossWeight' : None,
|
'GrossWeight' : None,
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ This is in order to follow the native IFC approach.
|
|||||||
|
|
||||||
WALLS
|
WALLS
|
||||||
Walls quantities are calculated with the convention that the object main axis is the 'x'.
|
Walls quantities are calculated with the convention that the object main axis is the 'x'.
|
||||||
|
Also openings inside a wall have to main axis 'x'
|
||||||
|
|
||||||
SLAB THICKNESS
|
SLAB THICKNESS
|
||||||
The slab thickness is defined as Width, following the IFC definition
|
The slab thickness is defined as Width, following the IFC definition
|
||||||
@@ -17,6 +18,9 @@ LATERAL AREA
|
|||||||
All lateral areas are counted, so for example also the inside surfaces.
|
All lateral areas are counted, so for example also the inside surfaces.
|
||||||
It shouldn't be like that so we should find a method to only external lateral area.
|
It shouldn't be like that so we should find a method to only external lateral area.
|
||||||
|
|
||||||
|
DOORS AND WINDOWS
|
||||||
|
Doors and Windows have to have the main axis along 'x' and the height is measured along 'z' axis
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -161,6 +161,11 @@ class QtoCalculator:
|
|||||||
self.delete_obj(gross_obj)
|
self.delete_obj(gross_obj)
|
||||||
return gross_perimeter
|
return gross_perimeter
|
||||||
|
|
||||||
|
def get_rectangular_perimeter(self, obj):
|
||||||
|
length = self.get_length(obj, main_axis='x')
|
||||||
|
height = self.get_height(obj)
|
||||||
|
return (length+height)*2
|
||||||
|
|
||||||
def get_lowest_polygons(self, o):
|
def get_lowest_polygons(self, o):
|
||||||
lowest_polygons = []
|
lowest_polygons = []
|
||||||
lowest_z = None
|
lowest_z = None
|
||||||
@@ -408,7 +413,7 @@ class QtoCalculator:
|
|||||||
bl_OBB_opening_object = self.get_OBB_object(bl_opening_obj)
|
bl_OBB_opening_object = self.get_OBB_object(bl_opening_obj)
|
||||||
opening_area = self.get_lateral_area(
|
opening_area = self.get_lateral_area(
|
||||||
#self.get_OBB_object(bl_opening_obj), angle_z1=angle_z1, angle_z2=angle_z2, exclude_end_areas=True
|
#self.get_OBB_object(bl_opening_obj), angle_z1=angle_z1, angle_z2=angle_z2, exclude_end_areas=True
|
||||||
bl_OBB_opening_object, angle_z1=angle_z1, angle_z2=angle_z2, exclude_end_areas=True,
|
bl_OBB_opening_object, angle_z1=angle_z1, angle_z2=angle_z2, exclude_end_areas=True, main_axis = 'x',
|
||||||
)
|
)
|
||||||
if opening_area >= min_area:
|
if opening_area >= min_area:
|
||||||
total_opening_area += opening_area
|
total_opening_area += opening_area
|
||||||
|
|||||||
Reference in New Issue
Block a user