Revert "style: format src/bonsai/bonsai/bim/module/qto/calculator.py with Black"

This reverts commit 0c62118152.
This commit is contained in:
Ryan Schultz
2025-10-31 09:53:40 -05:00
parent 0c62118152
commit 215fac4458
+41 -13
View File
@@ -25,11 +25,11 @@ import ifcopenshell
import ifcopenshell.geom import ifcopenshell.geom
import ifcopenshell.util.element import ifcopenshell.util.element
import ifc5d.qto import ifc5d.qto
from mathutils import Matrix, Vector from mathutils import Vector, Matrix
from mathutils.bvhtree import BVHTree from mathutils.bvhtree import BVHTree
from shapely.geometry import Polygon from shapely.geometry import Polygon
from shapely.ops import unary_union from shapely.ops import unary_union
from typing import Literal, Optional, Union, assert_never from typing import Literal, Union, Optional, assert_never
AxisType = Literal["x", "y", "z"] AxisType = Literal["x", "y", "z"]
@@ -79,10 +79,8 @@ def get_length(o: bpy.types.Object, vg_index: Optional[int] = None) -> float:
e e
for e in o.data.edges for e in o.data.edges
if ( if (
vg_index vg_index in [g.group for g in o.data.vertices[e.vertices[0]].groups]
in [g.group for g in o.data.vertices[e.vertices[0]].groups] and vg_index in [g.group for g in o.data.vertices[e.vertices[1]].groups]
and vg_index
in [g.group for g in o.data.vertices[e.vertices[1]].groups]
) )
] ]
for e in edges: for e in edges:
@@ -782,9 +780,7 @@ def get_lateral_area(
assert_never(main_axis_guess) assert_never(main_axis_guess)
area = 0 area = 0
total_opening_area = 0 if subtract_openings else get_opening_area( total_opening_area = 0 if subtract_openings else get_opening_area(obj, angle_z1=angle_z1, angle_z2=angle_z2)
obj, angle_z1=angle_z1, angle_z2=angle_z2
)
assert isinstance(obj.data, bpy.types.Mesh) assert isinstance(obj.data, bpy.types.Mesh)
polygons = obj.data.polygons polygons = obj.data.polygons
@@ -808,9 +804,7 @@ def get_gross_side_area(obj: bpy.types.Object) -> float:
if not has_openings(obj): if not has_openings(obj):
return get_net_side_area(obj) return get_net_side_area(obj)
gross_side_area = get_lateral_area( gross_side_area = get_lateral_area(obj, exclude_end_areas=True, subtract_openings=False, main_axis="x") / 2
obj, exclude_end_areas=True, subtract_openings=False, main_axis="x"
) / 2
return gross_side_area return gross_side_area
@@ -877,6 +871,7 @@ def get_gross_top_area(obj: bpy.types.Object, angle: float = 45) -> float:
area += polygon.area area += polygon.area
return area + opening_area return area + opening_area
# curently net top area is larger then projected area, because its taking into account internal polygons, or window sills # curently net top area is larger then projected area, because its taking into account internal polygons, or window sills
def get_net_top_area(obj: bpy.types.Object, angle: float = 45, ignore_internal: bool = True) -> float: def get_net_top_area(obj: bpy.types.Object, angle: float = 45, ignore_internal: bool = True) -> float:
"""_summary_: Returns the net top area of the object. """_summary_: Returns the net top area of the object.
@@ -1208,7 +1203,7 @@ def get_intersection_between_polygons(
# touching polygons should be coplanar: # touching polygons should be coplanar:
plane_intersection = mathutils.geometry.intersect_plane_plane(center1, normal1, center2, normal2) plane_intersection = mathutils.geometry.intersect_plane_plane(center1, normal1, center2, normal2)
# sometimes coplanar planes will interesct far off into the distance. This is a crude way of filtering out those intersections. # sometimes coplanar planes will interesect far off into the distance. This is a crude way of filtering out those intersections.
if plane_intersection[0] is None or (plane_intersection[0] - center1).magnitude > 20: if plane_intersection[0] is None or (plane_intersection[0] - center1).magnitude > 20:
return 0 return 0
@@ -1305,3 +1300,36 @@ def delete_mesh(mesh: bpy.types.Mesh) -> None:
def delete_obj(obj: bpy.types.Object) -> None: def delete_obj(obj: bpy.types.Object) -> None:
bpy.data.objects.remove(obj, do_unlink=True) bpy.data.objects.remove(obj, do_unlink=True)
# # Following code is here temporarily to test newly created functions:
# qto = QtoCalculator()
# o = bpy.context.active_object
# sel = bpy.context.selected_objects
#
# nl = '\n'
# print(
# f"get_linear_length: {qto.get_linear_length(o)}{nl}{nl}"
# f"get_width: {qto.get_width(o)}{nl}{nl}"
# f"get_height: {qto.get_height(o)}{nl}{nl}"
# f"get_perimeter: {qto.get_perimeter(o)}{nl}{nl}"
# f"get_lowest_polygons: {qto.get_lowest_polygons(o)}{nl}{nl}"
# f"get_highest_polygons: {qto.get_highest_polygons(o)}{nl}{nl}"
# f"get_net_footprint_area: {qto.get_net_footprint_area(o)}{nl}{nl}"
# f"get_net_roofprint_area: {qto.get_net_roofprint_area(o)}{nl}{nl}"
# f"get_side_area: {qto.get_side_area(o)}{nl}{nl}"
# f"get_gross_surface_area: {qto.get_gross_surface_area(o)}{nl}{nl}"
# f"get_volume: {qto.get_volume(o)}{nl}{nl}"
# f"get_opening_area(o, angle_z1=45, angle_z2=135, min_area=0, ignore_recesses=False): {qto.get_opening_area(o, angle_z1=45, angle_z2=135, min_area=0, ignore_recesses=False)}{nl}{nl}"
# f"get_lateral_area(o, subtract_openings=True, exclude_end_areas=False, exclude_side_areas=False, angle_z1=45, angle_z2=135): {qto.get_lateral_area(o, subtract_openings=True, exclude_end_areas=False, exclude_side_areas=False, angle_z1=45, angle_z2=135)}{nl}{nl}"
# f"get_gross_top_area: {qto.get_gross_top_area(o, angle=45)}{nl}{nl}"
# f"get_net_top_area(o, angle=45, ignore_internal=True): {qto.get_net_top_area(o, angle=45, ignore_internal=True)}{nl}{nl}"
# f"get_projected_area(o, projection_axis='z', is_gross=True): {qto.get_projected_area(o, projection_axis='z', is_gross=True)}{nl}{nl}"
# f"get_OBB_object: {qto.get_OBB_object(o)}{nl}{nl}"
# f"get_AABB_object: {qto.get_AABB_object(o)}{nl}{nl}"
# f"get_bisected_obj(o, plane_co_pos=(0,0,1), plane_no_pos=(0,0,1), plane_co_neg=(0,0,1), plane_no_neg=(0,0,1)): {qto.get_bisected_obj(o, plane_co_pos=(0,0,1), plane_no_pos=(0,0,1), plane_co_neg=(0,0,1), plane_no_neg=(0,0,1))}{nl}{nl}"
# f"get_total_contact_area(o, class_filter=['IfcWall', 'IfcSlab']): {qto.get_total_contact_area(o, class_filter=['IfcWall', 'IfcSlab'])}{nl}{nl}"
# f"get_touching_objects(o, ['IfcElement']): {qto.get_touching_objects(o, ['IfcElement'])}{nl}{nl}"
# #f"get_contact_area: {qto.get_contact_area(o)}{nl}{nl}"
# )