diff --git a/src/bonsai/bonsai/bim/module/profile/operator.py b/src/bonsai/bonsai/bim/module/profile/operator.py index 06c99711d4..f94f711f7d 100644 --- a/src/bonsai/bonsai/bim/module/profile/operator.py +++ b/src/bonsai/bonsai/bim/module/profile/operator.py @@ -234,9 +234,15 @@ class EnableEditingArbitraryProfile(bpy.types.Operator): props = tool.Profile.get_profile_props() active_profile = props.profiles[props.active_profile_index] profile_id = active_profile.ifc_definition_id - props.active_arbitrary_profile_id = profile_id profile = tool.Ifc.get().by_id(profile_id) - obj = tool.Model.import_profile(profile) + + try: + obj = tool.Model.import_profile(profile) + except tool.Model.UnsupportedCurveForConversion as e: + self.report({"ERROR"}, str(e)) + return {"CANCELLED"} + + props.active_arbitrary_profile_id = profile_id tool.Ifc.link(profile, obj) bpy.context.scene.collection.objects.link(obj) tool.Blender.select_and_activate_single_object(context, obj) diff --git a/src/bonsai/bonsai/tool/model.py b/src/bonsai/bonsai/tool/model.py index bccb9d4ec3..2a191bde76 100644 --- a/src/bonsai/bonsai/tool/model.py +++ b/src/bonsai/bonsai/tool/model.py @@ -486,6 +486,9 @@ class Model(bonsai.core.tool.Model): return obj + class UnsupportedCurveForConversion(Exception): + pass + @classmethod def convert_curve_to_mesh( cls, @@ -550,6 +553,8 @@ class Model(bonsai.core.tool.Model): ) cls.circles.append([offset, offset + 1]) cls.edges.append((offset, offset + 1)) + else: + raise cls.UnsupportedCurveForConversion(f"Profile has unsupported curve type: {curve}.") @classmethod def import_rectangle(cls, obj: bpy.types.Object, position: Matrix, profile: ifcopenshell.entity_instance) -> None: