diff --git a/src/bonsai/bonsai/bim/module/model/data.py b/src/bonsai/bonsai/bim/module/model/data.py index 30ad2bf486..3a6eda5033 100644 --- a/src/bonsai/bonsai/bim/module/model/data.py +++ b/src/bonsai/bonsai/bim/module/model/data.py @@ -228,7 +228,7 @@ class AuthoringData: results.extend([(c, c, "") for c in sorted(classes)]) return results - @classmethod + @classmethod def ifc_class_current(cls): ifc_classes = cls.data["ifc_classes"] if not ifc_classes: @@ -248,7 +248,7 @@ class AuthoringData: return [(str(e.id()), e.Name or "Unnamed", e.Description or "") for e in results] return [] - @classmethod + @classmethod def relating_type_id_current(cls): relating_type_id = tool.Blender.get_enum_safe(cls.props, "relating_type_id") relating_type_id_data = cls.data["relating_type_id"] diff --git a/src/bonsai/bonsai/bim/module/model/decorator.py b/src/bonsai/bonsai/bim/module/model/decorator.py index 6b04e0510f..96a2acc8f2 100644 --- a/src/bonsai/bonsai/bim/module/model/decorator.py +++ b/src/bonsai/bonsai/bim/module/model/decorator.py @@ -41,6 +41,7 @@ def transparent_color(color, alpha=0.1): color[3] = alpha return color + def highlight_color(color, alpha=0.1): color = [i + (1 - i) * 0.5 for i in color] return color @@ -641,20 +642,38 @@ class PolylineDecorator: axis2 = None if self.tool_state.plane_method == "XY": projection_point = [Vector((snap_prop.x, snap_prop.y, self.tool_state.plane_origin.z))] - axis1 = [(plane_origin.x - 10000, plane_origin.y, plane_origin.z), (plane_origin.x + 10000, plane_origin.y, plane_origin.z)] - axis2 = [(plane_origin.x, plane_origin.y - 10000, plane_origin.z), (plane_origin.x, plane_origin.y + 100000, plane_origin.z)] + axis1 = [ + (plane_origin.x - 10000, plane_origin.y, plane_origin.z), + (plane_origin.x + 10000, plane_origin.y, plane_origin.z), + ] + axis2 = [ + (plane_origin.x, plane_origin.y - 10000, plane_origin.z), + (plane_origin.x, plane_origin.y + 100000, plane_origin.z), + ] axis_color1 = decorator_color_x_axis axis_color2 = decorator_color_y_axis elif self.tool_state.plane_method == "XZ": projection_point = [Vector((snap_prop.x, self.tool_state.plane_origin.y, snap_prop.z))] - axis1 = [(plane_origin.x - 10000, plane_origin.y, plane_origin.z), (plane_origin.x + 10000, plane_origin.y, plane_origin.z)] - axis2 = [(plane_origin.x, plane_origin.y, plane_origin.z - 10000), (plane_origin.x, plane_origin.y, plane_origin.z + 100000)] + axis1 = [ + (plane_origin.x - 10000, plane_origin.y, plane_origin.z), + (plane_origin.x + 10000, plane_origin.y, plane_origin.z), + ] + axis2 = [ + (plane_origin.x, plane_origin.y, plane_origin.z - 10000), + (plane_origin.x, plane_origin.y, plane_origin.z + 100000), + ] axis_color1 = decorator_color_x_axis axis_color2 = decorator_color_z_axis elif self.tool_state.plane_method == "YZ": projection_point = [Vector((self.tool_state.plane_origin.x, snap_prop.y, snap_prop.z))] - axis1 = [(plane_origin.x, plane_origin.y - 10000, plane_origin.z), (plane_origin.x, plane_origin.y + 10000, plane_origin.z)] - axis2 = [(plane_origin.x, plane_origin.y, plane_origin.z - 10000), (plane_origin.x, plane_origin.y, plane_origin.z + 100000)] + axis1 = [ + (plane_origin.x, plane_origin.y - 10000, plane_origin.z), + (plane_origin.x, plane_origin.y + 10000, plane_origin.z), + ] + axis2 = [ + (plane_origin.x, plane_origin.y, plane_origin.z - 10000), + (plane_origin.x, plane_origin.y, plane_origin.z + 100000), + ] axis_color1 = decorator_color_y_axis axis_color2 = decorator_color_z_axis else: @@ -668,12 +687,11 @@ class PolylineDecorator: self.draw_batch("POINTS", projection_point, decorator_color_unselected) edges = [[0, 1]] self.draw_batch("LINES", mouse_point + projection_point, decorator_color_unselected, edges) - + if axis1 and axis2: self.line_shader.uniform_float("lineWidth", 1.5) self.draw_batch("LINES", axis1, highlight_color(axis_color1), [(0, 1)]) self.draw_batch("LINES", axis2, highlight_color(axis_color2), [(0, 1)]) - # Create polyline with selected points polyline_data = context.scene.BIMPolylineProperties.insertion_polyline diff --git a/src/bonsai/bonsai/bim/module/model/slab.py b/src/bonsai/bonsai/bim/module/model/slab.py index 9edce5fd8f..f2f92db979 100644 --- a/src/bonsai/bonsai/bim/module/model/slab.py +++ b/src/bonsai/bonsai/bim/module/model/slab.py @@ -823,6 +823,7 @@ class DrawPolylineSlab(bpy.types.Operator, PolylineOperator): self.tool_state.plane_method = "XY" return {"RUNNING_MODAL"} + class RecalculateSlab(bpy.types.Operator, tool.Ifc.Operator): bl_idname = "bim.recalculate_slab" bl_label = "Recalculate Slab" @@ -840,6 +841,6 @@ class RecalculateSlab(bpy.types.Operator, tool.Ifc.Operator): for rel in element.ConnectedTo: if rel.is_a() == "IfcRelConnectsElements" and rel.RelatedElement.is_a("IfcWall"): walls.append(tool.Ifc.get_object(rel.RelatedElement)) - + DumbWallRecalculator().recalculate(walls) return {"FINISHED"} diff --git a/src/bonsai/bonsai/bim/module/model/wall.py b/src/bonsai/bonsai/bim/module/model/wall.py index 66eb5f03ad..7b4c37886c 100644 --- a/src/bonsai/bonsai/bim/module/model/wall.py +++ b/src/bonsai/bonsai/bim/module/model/wall.py @@ -338,7 +338,7 @@ class DrawPolylineWall(bpy.types.Operator, PolylineOperator): PolylineDecorator.update(event, self.tool_state, self.input_ui, self.snapping_points[0]) tool.Blender.update_viewport() - self.handle_lock_axis(context, event) # Must come before "PASS_TRHOUGH" + self.handle_lock_axis(context, event) # Must come before "PASS_TRHOUGH" if event.type in {"MIDDLEMOUSE", "WHEELUPMOUSE", "WHEELDOWNMOUSE"}: self.handle_mouse_move(context, event) diff --git a/src/bonsai/bonsai/tool/snap.py b/src/bonsai/bonsai/tool/snap.py index bd03f9f74c..a45b00523e 100644 --- a/src/bonsai/bonsai/tool/snap.py +++ b/src/bonsai/bonsai/tool/snap.py @@ -404,7 +404,7 @@ class Snap(bonsai.core.tool.Snap): elevation = tool.Ifc.get_object(tool.Root.get_default_container()).location.z plane_origin, plane_normal = select_plane_method() - tool_state.plane_origin = plane_origin # This will be used along with plane method + tool_state.plane_origin = plane_origin # This will be used along with plane method intersection = tool.Raycast.ray_cast_to_plane(context, event, plane_origin, plane_normal)