mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-20 23:36:20 +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]
|
pset = element.PartOfPset[0]
|
||||||
if pset.Name.startswith("Pset_") and pset.Name.endswith("Common"):
|
if pset.Name.startswith("Pset_") and pset.Name.endswith("Common"):
|
||||||
statuses.update(element.EnumerationValues)
|
statuses.update(element.EnumerationValues)
|
||||||
elif pset.Name == "EPset_Status": # Our secret sauce
|
elif pset.Name == "EPset_Status": # Our secret sauce
|
||||||
statuses.update(element.EnumerationValues)
|
statuses.update(element.EnumerationValues)
|
||||||
elif element.Name == "UserDefinedStatus":
|
elif element.Name == "UserDefinedStatus":
|
||||||
statuses.add(element.NominalValue)
|
statuses.add(element.NominalValue)
|
||||||
@@ -67,6 +67,7 @@ class EnableStatusFilters(bpy.types.Operator):
|
|||||||
class DisableStatusFilters(bpy.types.Operator):
|
class DisableStatusFilters(bpy.types.Operator):
|
||||||
bl_idname = "bim.disable_status_filters"
|
bl_idname = "bim.disable_status_filters"
|
||||||
bl_label = "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):
|
def execute(self, context):
|
||||||
props = context.scene.BIMStatusProperties
|
props = context.scene.BIMStatusProperties
|
||||||
@@ -77,6 +78,7 @@ class DisableStatusFilters(bpy.types.Operator):
|
|||||||
class ActivateStatusFilters(bpy.types.Operator):
|
class ActivateStatusFilters(bpy.types.Operator):
|
||||||
bl_idname = "bim.activate_status_filters"
|
bl_idname = "bim.activate_status_filters"
|
||||||
bl_label = "Activate Status Filters"
|
bl_label = "Activate Status Filters"
|
||||||
|
bl_description = "Filter and display objects based on currently selected IFC statuses"
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
props = context.scene.BIMStatusProperties
|
props = context.scene.BIMStatusProperties
|
||||||
@@ -92,6 +94,7 @@ class ActivateStatusFilters(bpy.types.Operator):
|
|||||||
query = " + ".join(query)
|
query = " + ".join(query)
|
||||||
|
|
||||||
if not query:
|
if not query:
|
||||||
|
self.report({"INFO"}, "No statuses selected.")
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
visible_elements = ifcopenshell.util.selector.filter_elements(tool.Ifc.get(), query)
|
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):
|
class SelectStatusFilter(bpy.types.Operator):
|
||||||
bl_idname = "bim.select_status_filter"
|
bl_idname = "bim.select_status_filter"
|
||||||
bl_label = "Select Status Filter"
|
bl_label = "Select Status Filter"
|
||||||
|
bl_description = "Select elements with currently selected status"
|
||||||
name: bpy.props.StringProperty()
|
name: bpy.props.StringProperty()
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
|
|||||||
@@ -405,7 +405,7 @@ class ISODuration(PropertyGroup):
|
|||||||
|
|
||||||
class IFCStatus(PropertyGroup):
|
class IFCStatus(PropertyGroup):
|
||||||
name: StringProperty(name="Name")
|
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):
|
class BIMStatusProperties(PropertyGroup):
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ class BIM_PT_status(Panel):
|
|||||||
return
|
return
|
||||||
|
|
||||||
row = self.layout.row(align=True)
|
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="")
|
row.operator("bim.disable_status_filters", icon="CANCEL", text="")
|
||||||
|
|
||||||
for status in self.props.statuses:
|
for status in self.props.statuses:
|
||||||
|
|||||||
Reference in New Issue
Block a user