Add Bonsai decorators toggle to Blender Viewport Overlays.

https://imgur.com/auQcp2Y
This commit is contained in:
Bruno Perdigão
2025-01-07 11:31:03 -03:00
parent 0983f812fd
commit dbf33283ab
3 changed files with 60 additions and 0 deletions
+1
View File
@@ -191,6 +191,7 @@ classes = [
# TODO: move this somewhere else and clean it up
ui.BIM_PT_section_plane,
ui.BIM_PT_section_with_cappings,
ui.BIM_PT_decorators_overlay,
]
for mod in modules.values():
@@ -25,6 +25,7 @@ from bonsai.bim.prop import ObjProperty
from bonsai.bim.module.model.data import AuthoringData
from bpy.types import PropertyGroup, NodeTree
from math import pi, radians
from bonsai.bim.module.model.decorator import WallAxisDecorator, SlabDirectionDecorator
def get_ifc_class(self, context):
@@ -82,6 +83,20 @@ def is_object_array_applicable(self, obj):
return ifcopenshell.util.element.get_pset(element, "BBIM_Array")
def update_wall_axis_decorator(self, context):
if self.show_wall_axis:
WallAxisDecorator.install(bpy.context)
else:
WallAxisDecorator.uninstall()
def update_slab_direction_decorator(self, context):
if self.show_slab_direction:
SlabDirectionDecorator.install(bpy.context)
else:
SlabDirectionDecorator.uninstall()
class BIMModelProperties(PropertyGroup):
ifc_class: bpy.props.EnumProperty(items=get_ifc_class, name="Construction Class", update=update_ifc_class)
relating_type_id: bpy.props.EnumProperty(
@@ -162,6 +177,16 @@ class BIMModelProperties(PropertyGroup):
description="It's a convention that affects the offset to reference line",
)
offset: bpy.props.FloatProperty(name="Offset", default=0.0, description="Material usage offset from reference line")
show_wall_axis: bpy.props.BoolProperty(
name="Show Wall Axis",
default=False,
update=update_wall_axis_decorator,
)
show_slab_direction: bpy.props.BoolProperty(
name="Show Slab Direction",
default=False,
update=update_slab_direction_decorator,
)
class BIMArrayProperties(PropertyGroup):
+34
View File
@@ -1190,3 +1190,37 @@ def draw_custom_context_menu(self: bpy.types.Menu, context: bpy.types.Context) -
layout.separator()
url_op = layout.operator("bim.open_uri", icon="URL", text="Online IFC Documentation")
url_op.uri = url
class BIM_PT_decorators_overlay(Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'HEADER'
bl_parent_id = 'VIEW3D_PT_overlay'
bl_label = "Bonsai Decorators"
@classmethod
def poll(cls, context):
return context.mode == 'OBJECT'
def draw(self, context):
layout = self.layout
view = context.space_data
overlay = view.overlay
geo_props = bpy.context.scene.BIMGeoreferenceProperties
agg_props = bpy.context.scene.BIMAggregateProperties
model_props = bpy.context.scene.BIMModelProperties
display_all = overlay.show_overlays
col = layout.column()
col.active = display_all
row = col.row(align=True)
row.prop(geo_props, "should_visualise", text="Georeference")
row.prop(geo_props, "visualization_scale", text="Size", slider=True)
row = col.row(align=True)
row.prop(agg_props, "aggregate_decorator", text="Aggregate")
row = col.row(align=True)
row.prop(model_props, "show_wall_axis", text="Wall Axis")
row = col.row(align=True)
row.prop(model_props, "show_slab_direction", text="Slab Direction")