diff --git a/src/blenderbim/blenderbim/bim/module/covering/prop.py b/src/blenderbim/blenderbim/bim/module/covering/prop.py index d66aac26cd..330632ab05 100644 --- a/src/blenderbim/blenderbim/bim/module/covering/prop.py +++ b/src/blenderbim/blenderbim/bim/module/covering/prop.py @@ -38,3 +38,4 @@ import ifcopenshell class BIMCoveringProperties(PropertyGroup): pass # depth: bpy.props.FloatProperty(name="Depth", default=0.1, subtype="DISTANCE", description="Flooring depth") + depth: bpy.props.FloatProperty(name="ceiling_height", default=2.7, subtype="DISTANCE", description="Ceiling height") diff --git a/src/blenderbim/blenderbim/bim/module/covering/workspace.py b/src/blenderbim/blenderbim/bim/module/covering/workspace.py index 336d3bc2ef..9989d7caea 100644 --- a/src/blenderbim/blenderbim/bim/module/covering/workspace.py +++ b/src/blenderbim/blenderbim/bim/module/covering/workspace.py @@ -93,8 +93,32 @@ class CoveringToolUI: row.label(text="", icon="EVENT_A") active_obj = bpy.context.active_object element = tool.Ifc.get_entity(active_obj) - if element and bpy.context.selected_objects and element.is_a("IfcWall"): - op = row.operator("bim.add_instance_flooring_coverings_from_walls") + + if AuthoringData.data["predefined_type"] == "FLOORING": + if element and bpy.context.selected_objects and element.is_a("IfcWall"): + op = row.operator("bim.add_instance_flooring_coverings_from_walls") +# elif element and bpy.context.selected_objects and element.is_a("IfcSpace"): +# op. = row.operator("bim.add_istance_flooring_from_spaces"): + else: +# op = row.operator("bim.add_instance_flooring_from_cursor") + op = row.operator("bim.add_constr_type_instance", text="Add") + op.from_invoke = True + if cls.props.relating_type_id.isnumeric(): + op.relating_type_id = int(cls.props.relating_type_id) + +# elif AuthoringData.data["predefined_type"] == "CEILING": +# row = cls.layout.row(align=True) +# row.prop(data=cls.props, property="ceiling_height", text="ceiling height") +# if element and bpy.context.selected_objects and element.is_a("IfcWall"): +# op = row.operator("bim.add_instance_ceiling_coverings_from_walls") +# elif element and bpy.context.selected_objects and element.is_a("IfcSpace"): +# op. = row.operator("bim.add_istance_flooring_from_spaces"): +# else: +# op = row.operator("bim.add_instance_ceiling_from_cursor") +# op = row.operator("bim.add_constr_type_instance", text="Add") +# op.from_invoke = True +# if cls.props.relating_type_id.isnumeric(): +# op.relating_type_id = int(cls.props.relating_type_id) else: op = row.operator("bim.add_constr_type_instance", text="Add") op.from_invoke = True diff --git a/src/blenderbim/blenderbim/bim/module/model/covering.py b/src/blenderbim/blenderbim/bim/module/model/covering.py index da5f09cb06..3f9f0f4b2d 100644 --- a/src/blenderbim/blenderbim/bim/module/model/covering.py +++ b/src/blenderbim/blenderbim/bim/module/model/covering.py @@ -25,7 +25,7 @@ import blenderbim.core.covering as core class AddInstanceFlooringCoveringsFromWalls(bpy.types.Operator, tool.Ifc.Operator): bl_idname = "bim.add_instance_flooring_coverings_from_walls" - bl_label = "Add Typed Covering From Walls" + bl_label = "Add Covering From Walls" bl_options = {"REGISTER", "UNDO"} bl_description = "Add instance flooring coverings from selected walls. The active object must be a wall and layered vertically" diff --git a/src/blenderbim/blenderbim/bim/module/model/data.py b/src/blenderbim/blenderbim/bim/module/model/data.py index b1ad345e75..c9fde070e8 100644 --- a/src/blenderbim/blenderbim/bim/module/model/data.py +++ b/src/blenderbim/blenderbim/bim/module/model/data.py @@ -53,6 +53,7 @@ class AuthoringData: cls.data["ifc_element_type"] = cls.ifc_element_type cls.data["ifc_classes"] = cls.ifc_classes() cls.data["relating_type_id"] = cls.relating_type_id() # only after .ifc_classes() + cls.data["predefined_type"] = cls.predefined_type() cls.data["type_class"] = cls.type_class() # only after .type_class() @@ -247,6 +248,13 @@ class AuthoringData: return [(str(e.id()), e.Name or "Unnamed", e.Description or "") for e in results] return [] + @classmethod + def predefined_type(cls): + relating_type_id = cls.props.relating_type_id + relating_type = tool.Ifc.get().by_id(int(relating_type_id)) + predefined_type = relating_type.PredefinedType + return predefined_type + @classmethod def selected_material_usages(cls): selected_usages = {}