diff --git a/src/blenderbim/blenderbim/bim/module/patch/operator.py b/src/blenderbim/blenderbim/bim/module/patch/operator.py index f4c501f6f3..cbb805c912 100644 --- a/src/blenderbim/blenderbim/bim/module/patch/operator.py +++ b/src/blenderbim/blenderbim/bim/module/patch/operator.py @@ -41,6 +41,7 @@ class ExecuteIfcPatch(bpy.types.Operator): bl_idname = "bim.execute_ifc_patch" bl_label = "Execute IFCPatch" file_format: bpy.props.StringProperty() + use_json_for_args: bpy.props.BoolProperty() @classmethod def poll(cls, context): @@ -48,18 +49,7 @@ class ExecuteIfcPatch(bpy.types.Operator): return os.path.isfile(input_file) and "ifc" in os.path.splitext(input_file)[1] def execute(self, context): - if context.scene.BIMPatchProperties.ifc_patch_args_attr: - arguments = [] - for arg in context.scene.BIMPatchProperties.ifc_patch_args_attr: - if arg.data_type == "string": - arguments.append(arg.string_value) - if arg.data_type == "boolean": - arguments.append(arg.bool_value) - if arg.data_type == "integer": - arguments.append(arg.int_value) - if arg.data_type == "float": - arguments.append(arg.float_value) - else: + if self.use_json_for_args or not context.scene.BIMPatchProperties.ifc_patch_args_attr: arguments = json.loads(context.scene.BIMPatchProperties.ifc_patch_args or "[]") else: arguments = [arg.get_value() for arg in context.scene.BIMPatchProperties.ifc_patch_args_attr] diff --git a/src/blenderbim/blenderbim/bim/module/patch/ui.py b/src/blenderbim/blenderbim/bim/module/patch/ui.py index fd4362317c..3ec0cc43e2 100644 --- a/src/blenderbim/blenderbim/bim/module/patch/ui.py +++ b/src/blenderbim/blenderbim/bim/module/patch/ui.py @@ -51,3 +51,4 @@ class BIM_PT_patch(bpy.types.Panel): row = layout.row() op = row.operator("bim.execute_ifc_patch") + op.use_json_for_args = not bool(docs["inputs"])