mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-16 13:46:54 +00:00
New create shape debugging tool to help determine broken or crashing elements
This commit is contained in:
@@ -3,6 +3,7 @@ from . import ui, prop, operator
|
|||||||
|
|
||||||
classes = (
|
classes = (
|
||||||
operator.ProfileImportIFC,
|
operator.ProfileImportIFC,
|
||||||
|
operator.CreateAllShapes,
|
||||||
operator.CreateShapeFromStepId,
|
operator.CreateShapeFromStepId,
|
||||||
operator.SelectHighPolygonMeshes,
|
operator.SelectHighPolygonMeshes,
|
||||||
operator.InspectFromStepId,
|
operator.InspectFromStepId,
|
||||||
|
|||||||
@@ -21,6 +21,33 @@ class ProfileImportIFC(bpy.types.Operator):
|
|||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
|
class CreateAllShapes(bpy.types.Operator):
|
||||||
|
bl_idname = "bim.create_all_shapes"
|
||||||
|
bl_label = "Create All Shapes"
|
||||||
|
|
||||||
|
def execute(self, context):
|
||||||
|
self.file = IfcStore.get_file()
|
||||||
|
elements = self.file.by_type("IfcElement") + self.file.by_type("IfcSpace")
|
||||||
|
total = len(elements)
|
||||||
|
settings = ifcopenshell.geom.settings()
|
||||||
|
failures = []
|
||||||
|
excludes = () # For the developer to debug with
|
||||||
|
for i, element in enumerate(elements):
|
||||||
|
if element.GlobalId in excludes:
|
||||||
|
continue
|
||||||
|
print(f'{i}/{total}:', element)
|
||||||
|
try:
|
||||||
|
shape = ifcopenshell.geom.create_shape(settings, element)
|
||||||
|
print("Success", len(shape.geometry.verts), len(shape.geometry.edges), len(shape.geometry.faces))
|
||||||
|
except:
|
||||||
|
failures.append(element)
|
||||||
|
print('***** FAILURE *****')
|
||||||
|
print('Failures:')
|
||||||
|
for failure in failures:
|
||||||
|
print(failure)
|
||||||
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
class CreateShapeFromStepId(bpy.types.Operator):
|
class CreateShapeFromStepId(bpy.types.Operator):
|
||||||
bl_idname = "bim.create_shape_from_step_id"
|
bl_idname = "bim.create_shape_from_step_id"
|
||||||
bl_label = "Create Shape From STEP ID"
|
bl_label = "Create Shape From STEP ID"
|
||||||
|
|||||||
@@ -20,6 +20,9 @@ class BIM_PT_debug(Panel):
|
|||||||
row.operator("bim.validate_ifc_file", icon="CHECKMARK", text="")
|
row.operator("bim.validate_ifc_file", icon="CHECKMARK", text="")
|
||||||
row.operator("bim.select_ifc_file", icon="FILE_FOLDER", text="")
|
row.operator("bim.select_ifc_file", icon="FILE_FOLDER", text="")
|
||||||
|
|
||||||
|
row = layout.row()
|
||||||
|
row.operator("bim.create_all_shapes")
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.operator("bim.profile_import_ifc")
|
row.operator("bim.profile_import_ifc")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user