mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-11 10:06:47 +00:00
Update status visibility automatically #3721
This commit is contained in:
@@ -51,7 +51,7 @@ class EnableStatusFilters(bpy.types.Operator):
|
||||
pset = element.PartOfPset[0]
|
||||
if pset.Name.startswith("Pset_") and pset.Name.endswith("Common"):
|
||||
statuses.update(element.EnumerationValues)
|
||||
elif pset.Name == "EPset_Status": # Our secret sauce
|
||||
elif pset.Name == "EPset_Status": # Our secret sauce
|
||||
statuses.update(element.EnumerationValues)
|
||||
elif element.Name == "UserDefinedStatus":
|
||||
statuses.add(element.NominalValue)
|
||||
@@ -67,6 +67,7 @@ class EnableStatusFilters(bpy.types.Operator):
|
||||
class DisableStatusFilters(bpy.types.Operator):
|
||||
bl_idname = "bim.disable_status_filters"
|
||||
bl_label = "Disable Status Filters"
|
||||
bl_description = "Deactivate status filters panel.\nCan be used to refresh the displayed statuses"
|
||||
|
||||
def execute(self, context):
|
||||
props = context.scene.BIMStatusProperties
|
||||
@@ -77,6 +78,7 @@ class DisableStatusFilters(bpy.types.Operator):
|
||||
class ActivateStatusFilters(bpy.types.Operator):
|
||||
bl_idname = "bim.activate_status_filters"
|
||||
bl_label = "Activate Status Filters"
|
||||
bl_description = "Filter and display objects based on currently selected IFC statuses"
|
||||
|
||||
def execute(self, context):
|
||||
props = context.scene.BIMStatusProperties
|
||||
@@ -92,6 +94,7 @@ class ActivateStatusFilters(bpy.types.Operator):
|
||||
query = " + ".join(query)
|
||||
|
||||
if not query:
|
||||
self.report({"INFO"}, "No statuses selected.")
|
||||
return {"FINISHED"}
|
||||
|
||||
visible_elements = ifcopenshell.util.selector.filter_elements(tool.Ifc.get(), query)
|
||||
@@ -107,6 +110,7 @@ class ActivateStatusFilters(bpy.types.Operator):
|
||||
class SelectStatusFilter(bpy.types.Operator):
|
||||
bl_idname = "bim.select_status_filter"
|
||||
bl_label = "Select Status Filter"
|
||||
bl_description = "Select elements with currently selected status"
|
||||
name: bpy.props.StringProperty()
|
||||
|
||||
def execute(self, context):
|
||||
|
||||
@@ -405,7 +405,7 @@ class ISODuration(PropertyGroup):
|
||||
|
||||
class IFCStatus(PropertyGroup):
|
||||
name: StringProperty(name="Name")
|
||||
is_visible: BoolProperty(name="Is Visible", default=True)
|
||||
is_visible: BoolProperty(name="Is Visible", default=True, update=lambda x, y: bpy.ops.bim.activate_status_filters())
|
||||
|
||||
|
||||
class BIMStatusProperties(PropertyGroup):
|
||||
|
||||
@@ -52,7 +52,7 @@ class BIM_PT_status(Panel):
|
||||
return
|
||||
|
||||
row = self.layout.row(align=True)
|
||||
row.operator("bim.activate_status_filters", icon="TIME")
|
||||
row.label(text="Statuses found in the project:")
|
||||
row.operator("bim.disable_status_filters", icon="CANCEL", text="")
|
||||
|
||||
for status in self.props.statuses:
|
||||
|
||||
Reference in New Issue
Block a user