mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-27 10:51:13 +00:00
Implement #3083
This commit is contained in:
@@ -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":
|
||||||
|
|||||||
Reference in New Issue
Block a user