You can now delete a type when managing types

This commit is contained in:
Dion Moult
2022-10-11 15:31:31 +11:00
parent 38f563d4f4
commit dff35c173d
6 changed files with 27 additions and 6 deletions
@@ -439,6 +439,7 @@ class LoadTypeThumbnails(bpy.types.Operator, tool.Ifc.Operator):
y_offset = (size / 2) - (height / 2)
draw.rectangle([x_offset, y_offset, width + x_offset, height + y_offset], outline="white", width=2)
current_thickness = 0
del thicknesses[-1]
for thickness in thicknesses:
current_thickness += thickness
if element.is_a("IfcSlabType"):
@@ -76,12 +76,16 @@ class LaunchTypeManager(bpy.types.Operator):
row = box.row()
row.template_icon(icon_value=relating_type["icon_id"], scale=4)
row = box.row()
row = box.row(align=True)
op = row.operator("bim.add_constr_type_instance", icon="ADD")
op.from_invoke = True
op.ifc_class = relating_type["ifc_class"]
op.relating_type_id = relating_type["id"]
op = row.operator("bim.remove_type", icon="X", text="")
op.element = relating_type["id"]
class BIM_PT_authoring(Panel):
bl_label = "Architectural"
@@ -21,12 +21,13 @@ from . import ui, prop, operator
classes = (
operator.AssignType,
operator.UnassignType,
operator.EnableEditingType,
operator.DisableEditingType,
operator.EnableEditingType,
operator.RemoveType,
operator.SelectSimilarType,
operator.SelectTypeObjects,
operator.SelectType,
operator.SelectTypeObjects,
operator.UnassignType,
prop.BIMTypeProperties,
ui.BIM_PT_type,
)
@@ -166,3 +166,19 @@ class SelectTypeObjects(bpy.types.Operator):
if obj:
obj.select_set(True)
return {"FINISHED"}
class RemoveType(bpy.types.Operator, tool.Ifc.Operator):
bl_idname = "bim.remove_type"
bl_label = "Remove Type"
bl_options = {"REGISTER"}
element: bpy.props.IntProperty()
def _execute(self, context):
element = tool.Ifc.get().by_id(self.element)
obj = tool.Ifc.get_object(element)
ifcopenshell.api.run("root.remove_product", tool.Ifc.get(), product=element)
if obj:
tool.Ifc.unlink(obj=obj)
bpy.data.objects.remove(obj)
return {"FINISHED"}
+1 -1
View File
@@ -112,7 +112,7 @@ class Cad:
p3 = p3.to_3d()
p4 = p4.to_3d()
results = mathutils.geometry.intersect_line_line(p1, p2, p3, p4)
if is_2d:
if is_2d and results:
r1, r2 = results
return r1.to_2d() if r1 else r1, r2.to_2d() if r2 else r2
return results
@@ -158,7 +158,6 @@ class Usecase:
return self.added_elements[element.id()]
new = self.file.add(element)
self.added_elements[element.id()] = new
self.check_inverses(element)
for subelement in self.settings["library"].traverse(element):
self.check_inverses(subelement)
return new