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.EnableEditingExtrusionProfile,
slab.EnableEditingSketchExtrusionProfile,
slab.RecalculateSlab,
slab.ResetVertex,
slab.SetArcIndex,
space.GenerateSpace,
@@ -34,6 +34,7 @@ from mathutils import Vector, Matrix
from bonsai.bim.module.geometry.helper import Helper
from bonsai.bim.module.model.decorator import ProfileDecorator, PolylineDecorator, ProductDecorator
from bonsai.bim.module.model.polyline import PolylineOperator
from bonsai.bim.module.model.wall import DumbWallRecalculator
from typing import Optional
@@ -821,3 +822,24 @@ class DrawPolylineSlab(bpy.types.Operator, PolylineOperator):
self.tool_state.use_default_container = True
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"
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
if self.active_material_usage == "LAYER2":
bpy.ops.bim.recalculate_wall()
elif self.active_material_usage == "LAYER3":
bpy.ops.bim.recalculate_slab()
elif tool.System.get_ports(element):
bpy.ops.bim.regenerate_distribution_element()
elif self.active_material_usage == "PROFILE":