From 2053c4f4c970032e275d72535341e70254230055 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Tue, 14 Nov 2023 16:13:06 +0800 Subject: [PATCH 1/3] fix the subset name not changing acoordingly after the subset changes --- openpype/hosts/max/api/lib.py | 3 +-- openpype/hosts/max/api/plugin.py | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/openpype/hosts/max/api/lib.py b/openpype/hosts/max/api/lib.py index cbaf8a0c336..0a848cb3225 100644 --- a/openpype/hosts/max/api/lib.py +++ b/openpype/hosts/max/api/lib.py @@ -42,6 +42,7 @@ def imprint(node_name: str, data: dict) -> bool: rt.SetUserProp(node, k, f"{JSON_PREFIX}{json.dumps(v)}") else: rt.SetUserProp(node, k, v) + print(k) return True @@ -359,8 +360,6 @@ def reset_colorspace(): colorspace_mgr.Mode = rt.Name("OCIO_Custom") colorspace_mgr.OCIOConfigPath = ocio_config_path - colorspace_mgr.OCIOConfigPath = ocio_config_path - def check_colorspace(): parent = get_main_window() diff --git a/openpype/hosts/max/api/plugin.py b/openpype/hosts/max/api/plugin.py index fa6db073dba..2874cfc1ce4 100644 --- a/openpype/hosts/max/api/plugin.py +++ b/openpype/hosts/max/api/plugin.py @@ -204,6 +204,8 @@ class MaxCreator(Creator, MaxCreatorBase): def create(self, subset_name, instance_data, pre_create_data): if pre_create_data.get("use_selection"): self.selected_nodes = rt.GetCurrentSelection() + if rt.getNodeByName(subset_name): + raise CreatorError(f"'{subset_name}' is already created..") instance_node = self.create_instance_node(subset_name) instance_data["instance_node"] = instance_node.name @@ -246,14 +248,25 @@ def collect_instances(self): def update_instances(self, update_list): for created_inst, changes in update_list: instance_node = created_inst.get("instance_node") - new_values = { key: changes[key].new_value for key in changes.changed_keys } + subset = new_values.get("subset", "") + if subset: + if instance_node != subset: + node = rt.getNodeByName(instance_node) + new_subset_name = new_values["subset"] + if rt.getNodeByName(new_subset_name): + raise CreatorError( + "The subset '{}' already exists.".format( + new_subset_name)) + created_inst["instance_node"] = new_values["subset"] + node.name = created_inst["instance_node"] + imprint( - instance_node, - new_values, + created_inst["instance_node"], + created_inst.data_to_store(), ) def remove_instances(self, instances): From 68c3ef37ef358ac71d80c993392e6bbe865ee2f0 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Wed, 15 Nov 2023 14:43:39 +0800 Subject: [PATCH 2/3] code tweaks --- openpype/hosts/max/api/plugin.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/openpype/hosts/max/api/plugin.py b/openpype/hosts/max/api/plugin.py index 2874cfc1ce4..2cf0d691461 100644 --- a/openpype/hosts/max/api/plugin.py +++ b/openpype/hosts/max/api/plugin.py @@ -253,19 +253,19 @@ def update_instances(self, update_list): for key in changes.changed_keys } subset = new_values.get("subset", "") - if subset: - if instance_node != subset: - node = rt.getNodeByName(instance_node) - new_subset_name = new_values["subset"] - if rt.getNodeByName(new_subset_name): - raise CreatorError( - "The subset '{}' already exists.".format( - new_subset_name)) - created_inst["instance_node"] = new_values["subset"] - node.name = created_inst["instance_node"] + if subset and instance_node != subset: + node = rt.getNodeByName(instance_node) + new_subset_name = new_values["subset"] + if rt.getNodeByName(new_subset_name): + raise CreatorError( + "The subset '{}' already exists.".format( + new_subset_name)) + instance_node = new_subset_name + created_inst["instance_node"] = instance_node + node.name = instance_node imprint( - created_inst["instance_node"], + instance_node, created_inst.data_to_store(), ) From ca21655c18d7163cfe77ec74a26fe86af2817ad4 Mon Sep 17 00:00:00 2001 From: Kayla Man Date: Wed, 15 Nov 2023 17:02:37 +0800 Subject: [PATCH 3/3] remove print debug function --- openpype/hosts/max/api/lib.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openpype/hosts/max/api/lib.py b/openpype/hosts/max/api/lib.py index 0a848cb3225..298084a4e88 100644 --- a/openpype/hosts/max/api/lib.py +++ b/openpype/hosts/max/api/lib.py @@ -42,7 +42,6 @@ def imprint(node_name: str, data: dict) -> bool: rt.SetUserProp(node, k, f"{JSON_PREFIX}{json.dumps(v)}") else: rt.SetUserProp(node, k, v) - print(k) return True