This commit is contained in:
Bruno Perdigão
2024-11-08 16:25:21 -03:00
parent f08959aaa9
commit 23c30e7642
3 changed files with 25 additions and 0 deletions
@@ -105,6 +105,7 @@ classes = (
slab.EditSketchExtrusionProfile, slab.EditSketchExtrusionProfile,
slab.EnableEditingExtrusionProfile, slab.EnableEditingExtrusionProfile,
slab.EnableEditingSketchExtrusionProfile, slab.EnableEditingSketchExtrusionProfile,
slab.RecalculateSlab,
slab.ResetVertex, slab.ResetVertex,
slab.SetArcIndex, slab.SetArcIndex,
space.GenerateSpace, space.GenerateSpace,
@@ -34,6 +34,7 @@ from mathutils import Vector, Matrix
from bonsai.bim.module.geometry.helper import Helper from bonsai.bim.module.geometry.helper import Helper
from bonsai.bim.module.model.decorator import ProfileDecorator, PolylineDecorator, ProductDecorator from bonsai.bim.module.model.decorator import ProfileDecorator, PolylineDecorator, ProductDecorator
from bonsai.bim.module.model.polyline import PolylineOperator from bonsai.bim.module.model.polyline import PolylineOperator
from bonsai.bim.module.model.wall import DumbWallRecalculator
from typing import Optional from typing import Optional
@@ -821,3 +822,24 @@ class DrawPolylineSlab(bpy.types.Operator, PolylineOperator):
self.tool_state.use_default_container = True self.tool_state.use_default_container = True
self.tool_state.plane_method = "XY" self.tool_state.plane_method = "XY"
return {"RUNNING_MODAL"} return {"RUNNING_MODAL"}
class RecalculateSlab(bpy.types.Operator, tool.Ifc.Operator):
bl_idname = "bim.recalculate_slab"
bl_label = "Recalculate Slab"
bl_options = {"REGISTER", "UNDO"}
@classmethod
def poll(cls, context):
return context.selected_objects
def _execute(self, context):
walls = []
for obj in context.selected_objects:
element = tool.Ifc.get_entity(obj)
if element.is_a("IfcSlab"):
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"}
@@ -1086,6 +1086,8 @@ class Hotkey(bpy.types.Operator, tool.Ifc.Operator):
return return
if self.active_material_usage == "LAYER2": if self.active_material_usage == "LAYER2":
bpy.ops.bim.recalculate_wall() bpy.ops.bim.recalculate_wall()
elif self.active_material_usage == "LAYER3":
bpy.ops.bim.recalculate_slab()
elif tool.System.get_ports(element): elif tool.System.get_ports(element):
bpy.ops.bim.regenerate_distribution_element() bpy.ops.bim.regenerate_distribution_element()
elif self.active_material_usage == "PROFILE": elif self.active_material_usage == "PROFILE":