mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 09:48:32 +00:00
Zones UI - add classification UI #6941
This commit is contained in:
@@ -48,6 +48,7 @@ classes = (
|
||||
ui.BIM_PT_classification_references,
|
||||
ui.BIM_PT_material_classifications,
|
||||
ui.BIM_PT_cost_classifications,
|
||||
ui.BIM_PT_zone_classifications,
|
||||
ui.BIM_UL_classifications,
|
||||
)
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ def refresh():
|
||||
ObjectClassificationsData.is_loaded = False
|
||||
MaterialClassificationsData.is_loaded = False
|
||||
CostClassificationsData.is_loaded = False
|
||||
ZoneClassificationsData.is_loaded = False
|
||||
|
||||
|
||||
class ClassificationsData:
|
||||
@@ -80,7 +81,7 @@ class ClassificationsData:
|
||||
class ReferencesData:
|
||||
data: dict[str, Any]
|
||||
is_loaded = False
|
||||
obj_type: Literal["Object", "Material", "Cost"]
|
||||
obj_type: Literal["Object", "Material", "Cost", "Zone"]
|
||||
|
||||
@classmethod
|
||||
def load(cls):
|
||||
@@ -150,3 +151,14 @@ class CostClassificationsData(ReferencesData):
|
||||
if cost_item := props.active_cost_item:
|
||||
return tool.Ifc.get().by_id(cost_item.ifc_definition_id)
|
||||
return None
|
||||
|
||||
|
||||
class ZoneClassificationsData(ReferencesData):
|
||||
obj_type = "Zone"
|
||||
|
||||
@classmethod
|
||||
def get_element(cls) -> Union[ifcopenshell.entity_instance, None]:
|
||||
props = tool.System.get_zone_props()
|
||||
if active_zone := props.active_zone:
|
||||
return tool.Ifc.get().by_id(active_zone.ifc_definition_id)
|
||||
return None
|
||||
|
||||
@@ -27,6 +27,7 @@ from bonsai.bim.module.classification.data import (
|
||||
ObjectClassificationsData,
|
||||
MaterialClassificationsData,
|
||||
CostClassificationsData,
|
||||
ZoneClassificationsData,
|
||||
)
|
||||
from typing import TYPE_CHECKING, Any, Union
|
||||
|
||||
@@ -118,6 +119,7 @@ class ReferenceUI:
|
||||
ObjectClassificationsData,
|
||||
MaterialClassificationsData,
|
||||
CostClassificationsData,
|
||||
ZoneClassificationsData,
|
||||
]
|
||||
]
|
||||
|
||||
@@ -322,6 +324,23 @@ class BIM_PT_cost_classifications(Panel, ReferenceUI):
|
||||
return bool(props.cost_items)
|
||||
|
||||
|
||||
class BIM_PT_zone_classifications(Panel, ReferenceUI):
|
||||
bl_label = "Zone Classifications"
|
||||
bl_idname = "BIM_PT_zone_classifications"
|
||||
bl_options = {"DEFAULT_CLOSED"}
|
||||
bl_space_type = "PROPERTIES"
|
||||
bl_region_type = "WINDOW"
|
||||
bl_context = "scene"
|
||||
bl_parent_id = "BIM_PT_zones"
|
||||
|
||||
data = ZoneClassificationsData
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
props = tool.System.get_zone_props()
|
||||
return bool(props.active_zone)
|
||||
|
||||
|
||||
class BIM_UL_classifications(UIList):
|
||||
def draw_item(
|
||||
self,
|
||||
|
||||
@@ -116,8 +116,10 @@ class BIMSystemProperties(PropertyGroup):
|
||||
|
||||
|
||||
def update_active_zone_index(self: "BIMZoneProperties", context: object) -> None:
|
||||
from bonsai.bim.module.classification.data import ZoneClassificationsData
|
||||
from bonsai.bim.module.pset.data import ZonePsetsData
|
||||
|
||||
ZoneClassificationsData.is_loaded = False
|
||||
ZonePsetsData.is_loaded = False
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user