mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-28 19:27:10 +00:00
Improve Debug Panel UI (#1621)
* Inline parameters with their respective operator * Restrict min number of polygons to 0 * Simplify high poly mesh operator execution * Clear debug attributes when purging ifc * Poll if ifc file exists in operators * Poll if ifc filepath exists before import * Delete leftover whitespaces
This commit is contained in:
@@ -12,6 +12,10 @@ class PrintIfcFile(bpy.types.Operator):
|
|||||||
bl_idname = "bim.print_ifc_file"
|
bl_idname = "bim.print_ifc_file"
|
||||||
bl_label = "Print IFC File"
|
bl_label = "Print IFC File"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def poll(cls, context):
|
||||||
|
return IfcStore.get_file()
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
print(IfcStore.get_file().wrapped_data.to_string())
|
print(IfcStore.get_file().wrapped_data.to_string())
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
@@ -30,6 +34,7 @@ class PurgeIfcLinks(bpy.types.Operator):
|
|||||||
for material in bpy.data.materials:
|
for material in bpy.data.materials:
|
||||||
material.BIMMaterialProperties.ifc_style_id = False
|
material.BIMMaterialProperties.ifc_style_id = False
|
||||||
context.scene.BIMProperties.ifc_file = ""
|
context.scene.BIMProperties.ifc_file = ""
|
||||||
|
context.scene.BIMDebugProperties.attributes.clear()
|
||||||
IfcStore.purge()
|
IfcStore.purge()
|
||||||
blenderbim.bim.handler.purge_module_data()
|
blenderbim.bim.handler.purge_module_data()
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
@@ -39,6 +44,10 @@ class ValidateIfcFile(bpy.types.Operator):
|
|||||||
bl_idname = "bim.validate_ifc_file"
|
bl_idname = "bim.validate_ifc_file"
|
||||||
bl_label = "Validate IFC File"
|
bl_label = "Validate IFC File"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def poll(cls, context):
|
||||||
|
return IfcStore.get_file()
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
import ifcopenshell.validate
|
import ifcopenshell.validate
|
||||||
|
|
||||||
@@ -52,6 +61,10 @@ class ProfileImportIFC(bpy.types.Operator):
|
|||||||
bl_idname = "bim.profile_import_ifc"
|
bl_idname = "bim.profile_import_ifc"
|
||||||
bl_label = "Profile Import IFC"
|
bl_label = "Profile Import IFC"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def poll(cls, context):
|
||||||
|
return IfcStore.get_file() and context.scene.BIMProperties.ifc_file
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
import cProfile
|
import cProfile
|
||||||
import pstats
|
import pstats
|
||||||
@@ -69,6 +82,10 @@ class CreateAllShapes(bpy.types.Operator):
|
|||||||
bl_idname = "bim.create_all_shapes"
|
bl_idname = "bim.create_all_shapes"
|
||||||
bl_label = "Create All Shapes"
|
bl_label = "Create All Shapes"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def poll(cls, context):
|
||||||
|
return IfcStore.get_file()
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
self.file = IfcStore.get_file()
|
self.file = IfcStore.get_file()
|
||||||
elements = self.file.by_type("IfcElement") + self.file.by_type("IfcSpace")
|
elements = self.file.by_type("IfcElement") + self.file.by_type("IfcSpace")
|
||||||
@@ -97,6 +114,10 @@ class CreateShapeFromStepId(bpy.types.Operator):
|
|||||||
bl_label = "Create Shape From STEP ID"
|
bl_label = "Create Shape From STEP ID"
|
||||||
bl_options = {"REGISTER", "UNDO"}
|
bl_options = {"REGISTER", "UNDO"}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def poll(cls, context):
|
||||||
|
return IfcStore.get_file()
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
return IfcStore.execute_ifc_operator(self, context)
|
return IfcStore.execute_ifc_operator(self, context)
|
||||||
|
|
||||||
@@ -122,17 +143,9 @@ class SelectHighPolygonMeshes(bpy.types.Operator):
|
|||||||
bl_options = {"REGISTER", "UNDO"}
|
bl_options = {"REGISTER", "UNDO"}
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
results = {}
|
[o.select_set(True) for o in context.view_layer.objects
|
||||||
for obj in bpy.data.objects:
|
if o.type == 'MESH'
|
||||||
if not isinstance(obj.data, bpy.types.Mesh) or len(obj.data.polygons) < int(
|
and len(o.data.polygons) > context.scene.BIMDebugProperties.number_of_polygons]
|
||||||
context.scene.BIMDebugProperties.number_of_polygons
|
|
||||||
):
|
|
||||||
continue
|
|
||||||
try:
|
|
||||||
obj.select_set(True)
|
|
||||||
except:
|
|
||||||
# If it is not in the view layer
|
|
||||||
pass
|
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
@@ -157,6 +170,10 @@ class InspectFromStepId(bpy.types.Operator):
|
|||||||
bl_label = "Inspect From STEP ID"
|
bl_label = "Inspect From STEP ID"
|
||||||
step_id: bpy.props.IntProperty()
|
step_id: bpy.props.IntProperty()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def poll(cls, context):
|
||||||
|
return IfcStore.get_file()
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
self.file = IfcStore.get_file()
|
self.file = IfcStore.get_file()
|
||||||
context.scene.BIMDebugProperties.active_step_id = self.step_id
|
context.scene.BIMDebugProperties.active_step_id = self.step_id
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ from bpy.props import (
|
|||||||
|
|
||||||
class BIMDebugProperties(PropertyGroup):
|
class BIMDebugProperties(PropertyGroup):
|
||||||
step_id: IntProperty(name="STEP ID")
|
step_id: IntProperty(name="STEP ID")
|
||||||
number_of_polygons: IntProperty(name="Number of Polygons")
|
number_of_polygons: IntProperty(name="Number of Polygons", min=0)
|
||||||
active_step_id: IntProperty(name="STEP ID")
|
active_step_id: IntProperty(name="STEP ID")
|
||||||
step_id_breadcrumb: CollectionProperty(name="STEP ID Breadcrumb", type=StrProperty)
|
step_id_breadcrumb: CollectionProperty(name="STEP ID Breadcrumb", type=StrProperty)
|
||||||
attributes: CollectionProperty(name="Attributes", type=Attribute)
|
attributes: CollectionProperty(name="Attributes", type=Attribute)
|
||||||
|
|||||||
@@ -32,15 +32,13 @@ class BIM_PT_debug(Panel):
|
|||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.operator("bim.profile_import_ifc")
|
row.operator("bim.profile_import_ifc")
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.split(factor=0.7, align=True)
|
||||||
row.prop(props, "step_id", text="")
|
|
||||||
row = layout.row()
|
|
||||||
row.operator("bim.create_shape_from_step_id")
|
row.operator("bim.create_shape_from_step_id")
|
||||||
|
row.prop(props, "step_id", text="")
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.split(factor=0.7, align=True)
|
||||||
row.prop(props, "number_of_polygons", text="")
|
|
||||||
row = layout.row()
|
|
||||||
row.operator("bim.select_high_polygon_meshes")
|
row.operator("bim.select_high_polygon_meshes")
|
||||||
|
row.prop(props, "number_of_polygons", text="")
|
||||||
|
|
||||||
layout.label(text="Inspector:")
|
layout.label(text="Inspector:")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user