From 06e8e2b35c003b3e7bf9864a73bcd0bb24a4ad2d Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 15 Jan 2025 19:46:34 +1100 Subject: [PATCH] Remove obsolete separate_verts_layer when marking edge angles for roofs New roof system automatically handles this scenario (using poke operator) so no need to mark it. --- src/bonsai/bonsai/bim/module/cad/prop.py | 1 - src/bonsai/bonsai/bim/module/cad/workspace.py | 5 +---- src/bonsai/bonsai/bim/module/model/roof.py | 12 ------------ 3 files changed, 1 insertion(+), 17 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/cad/prop.py b/src/bonsai/bonsai/bim/module/cad/prop.py index 3d0c8f687e..9fd2dd4d3b 100644 --- a/src/bonsai/bonsai/bim/module/cad/prop.py +++ b/src/bonsai/bonsai/bim/module/cad/prop.py @@ -31,4 +31,3 @@ class BIMCadProperties(PropertyGroup): gable_roof_edge_angle: bpy.props.FloatProperty( name="Gable Roof Edge Angle", default=pi / 2, soft_min=0, soft_max=pi / 2, subtype="ANGLE" ) - gable_roof_separate_verts: bpy.props.BoolProperty(name="Separate Verts", default=True) diff --git a/src/bonsai/bonsai/bim/module/cad/workspace.py b/src/bonsai/bonsai/bim/module/cad/workspace.py index 7042c74ff3..51d39c68e2 100644 --- a/src/bonsai/bonsai/bim/module/cad/workspace.py +++ b/src/bonsai/bonsai/bim/module/cad/workspace.py @@ -222,7 +222,6 @@ class CadHotkey(bpy.types.Operator): and bpy.context.active_object.BIMRoofProperties.is_editing_path ): self.layout.row().prop(props, "gable_roof_edge_angle") - self.layout.row().prop(props, "gable_roof_separate_verts") elif self.hotkey == "S_V": if not tool.Geometry.is_profile_object_active(): @@ -271,9 +270,7 @@ class CadHotkey(bpy.types.Operator): and RoofData.data["pset_data"] and bpy.context.active_object.BIMRoofProperties.is_editing_path ): - bpy.ops.bim.set_gable_roof_edge_angle( - angle=self.props.gable_roof_edge_angle, separate_verts=self.props.gable_roof_separate_verts - ) + bpy.ops.bim.set_gable_roof_edge_angle(angle=self.props.gable_roof_edge_angle) def hotkey_S_T(self): bpy.ops.bim.cad_mitre() diff --git a/src/bonsai/bonsai/bim/module/model/roof.py b/src/bonsai/bonsai/bim/module/model/roof.py index cbc6ba9c93..7d8584b5f4 100644 --- a/src/bonsai/bonsai/bim/module/model/roof.py +++ b/src/bonsai/bonsai/bim/module/model/roof.py @@ -436,14 +436,12 @@ def update_roof_modifier_bmesh(obj: bpy.types.Object) -> None: RoofData.load() path_data = RoofData.data["path_data"] angle_layer_data = path_data.get("gable_roof_angles", None) - separate_verts_data = path_data.get("gable_roof_separate_verts", None) si_conversion = ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get()) # need to make sure we support edit mode # since users will probably be in edit mode when they'll be changing roof path bm = tool.Blender.get_bmesh_for_mesh(obj.data, clean=True) angle_layer = bm.edges.layers.float.new("BBIM_gable_roof_angles") - separate_verts_layer = bm.edges.layers.int.new("BBIM_gable_roof_separate_verts") # generating roof path new_verts = [bm.verts.new(Vector(v) * si_conversion) for v in path_data["verts"]] @@ -451,7 +449,6 @@ def update_roof_modifier_bmesh(obj: bpy.types.Object) -> None: e = path_data["edges"][i] edge = bm.edges.new((new_verts[e[0]], new_verts[e[1]])) edge[angle_layer] = angle_layer_data[i] if angle_layer_data else 0 - edge[separate_verts_layer] = separate_verts_data[i] if separate_verts_data else 0 if props.is_editing_path: tool.Blender.apply_bmesh(obj.data, bm) @@ -482,15 +479,12 @@ def get_path_data(obj: bpy.types.Object) -> Union[dict[str, Any], None]: bm_mesh_clean_up(bm) angle_layer = bm.edges.layers.float.get("BBIM_gable_roof_angles") - separate_verts_layer = bm.edges.layers.int.get("BBIM_gable_roof_separate_verts") path_data = dict() path_data["edges"] = [bm_get_indices(e.verts) for e in bm.edges] path_data["verts"] = [v.co / si_conversion for v in bm.verts] if angle_layer: path_data["gable_roof_angles"] = [e[angle_layer] for e in bm.edges] - if separate_verts_layer: - path_data["gable_roof_separate_verts"] = [e[separate_verts_layer] for e in bm.edges] if not path_data["edges"] or not path_data["verts"]: return None @@ -820,7 +814,6 @@ class SetGableRoofEdgeAngle(bpy.types.Operator): bl_label = "Set Gable Roof Edge Angle" bl_options = {"REGISTER", "UNDO"} angle: bpy.props.FloatProperty(name="Angle", default=90) - separate_verts: bpy.props.BoolProperty(name="Separate Verts", default=True) @classmethod def poll(cls, context): @@ -843,17 +836,12 @@ class SetGableRoofEdgeAngle(bpy.types.Operator): if "BBIM_gable_roof_angles" not in me.attributes: me.attributes.new("BBIM_gable_roof_angles", type="FLOAT", domain="EDGE") - if "BBIM_gable_roof_separate_verts" not in me.attributes: - me.attributes.new("BBIM_gable_roof_separate_verts", type="INT", domain="EDGE") - angles_layer = bm.edges.layers.float["BBIM_gable_roof_angles"] - separate_verts_layer = bm.edges.layers.int["BBIM_gable_roof_separate_verts"] for e in bm.edges: if not e.select: continue e[angles_layer] = self.angle - e[separate_verts_layer] = self.separate_verts tool.Blender.apply_bmesh(me, bm) return {"FINISHED"}