From 428ebeda8dc3f6c60695bc704e572a86d41b71d0 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 12 Jan 2023 23:42:29 -0600 Subject: [PATCH 1/4] feat: added default attribute names, descriptions, and hide value to group inputs --- node_to_python.py | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/node_to_python.py b/node_to_python.py index c3e5988..120c7c4 100644 --- a/node_to_python.py +++ b/node_to_python.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Geometry Node Groups to a Python add-on", "author": "Brendan Parmer", - "version": (1, 2, 2), + "version": (1, 2, 4), "blender": (3, 0, 0), "location": "Node", "category": "Node", @@ -222,12 +222,14 @@ def process_node_group(node_group, level): f"name = \"{node_group.name}\")\n")) file.write("\n") + inputs_set = False + #initialize nodes file.write(f"{inner}#initialize {ng_name} nodes\n") for node in node_group.nodes: if node.bl_idname == 'GeometryNodeGroup': process_node_group(node.node_tree, level + 1) - elif node.bl_idname == 'NodeGroupInput': + elif node.bl_idname == 'NodeGroupInput' and not inputs_set: file.write(f"{inner}#{ng_name} inputs\n") for i, input in enumerate(node.outputs): if input.bl_idname != "NodeSocketVirtual": @@ -235,8 +237,8 @@ def process_node_group(node_group, level): file.write((f"{inner}{ng_name}.inputs.new" f"(\"{input.bl_idname}\", " f"\"{input.name}\")\n")) - if input.bl_idname in default_sockets: - socket = node_group.inputs[i] + socket = node_group.inputs[i] + if input.bl_idname in default_sockets: if input.bl_idname == 'NodeSocketColor': col = socket.default_value r, g, b, a = col[0], col[1], col[2], col[3] @@ -251,19 +253,42 @@ def process_node_group(node_group, level): file.write((f"{inner}{ng_name}" f".inputs[{i}]" f".default_value = {dv}\n")) - if input.bl_idname in value_sockets: - #min value + + #min value + if hasattr(socket, "min_value"): file.write((f"{inner}{ng_name}" f".inputs[{i}]" f".min_value = " f"{socket.min_value}\n")) - #max value + #max value + if hasattr(socket, "max_value"): file.write((f"{inner}{ng_name}" f".inputs[{i}]" f".max_value = " f"{socket.max_value}\n")) + #default attribute name + if hasattr(socket, "default_attribute_name"): + if socket.default_attribute_name != "": + file.write((f"{inner}{ng_name}" + f".inputs[{i}]" + f".default_attribute_name = \"" + f"{socket.default_attribute_name}" + f"\"\n")) + #description + if socket.description != "": + file.write((f"{inner}{ng_name}" + f".inputs[{i}]" + f".description = " + f"\"{socket.description}\"\n")) + #hide value + if socket.hide_value is True: + file.write((f"{inner}{ng_name}" + f".inputs[{i}]" + f".hide_value = " + f"{socket.hide_value}\n")) file.write("\n") file.write("\n") + inputs_set = True elif node.bl_idname == 'NodeGroupOutput': file.write(f"{inner}#{ng_name} outputs\n") for output in node.inputs: From 18c65605b0f8b7b5aae1decee94b381e2d5dc436 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 12 Jan 2023 23:45:37 -0600 Subject: [PATCH 2/4] feat: added descriptions and hide values to group outputs --- node_to_python.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/node_to_python.py b/node_to_python.py index 120c7c4..79c065b 100644 --- a/node_to_python.py +++ b/node_to_python.py @@ -223,7 +223,8 @@ def process_node_group(node_group, level): file.write("\n") inputs_set = False - + outputs_set = False + #initialize nodes file.write(f"{inner}#initialize {ng_name} nodes\n") for node in node_group.nodes: @@ -289,14 +290,31 @@ def process_node_group(node_group, level): file.write("\n") file.write("\n") inputs_set = True - elif node.bl_idname == 'NodeGroupOutput': + + elif node.bl_idname == 'NodeGroupOutput' and not outputs_set: file.write(f"{inner}#{ng_name} outputs\n") - for output in node.inputs: + for i, output in enumerate(node.inputs): if output.bl_idname != 'NodeSocketVirtual': file.write((f"{inner}{ng_name}.outputs" f".new(\"{output.bl_idname}\", " f"\"{output.name}\")\n")) + + socket = node_group.outputs[i] + #description + if socket.description != "": + file.write((f"{inner}{ng_name}" + f".inputs[{i}]" + f".description = " + f"\"{socket.description}\"\n")) + #hide value + if socket.hide_value is True: + file.write((f"{inner}{ng_name}" + f".inputs[{i}]" + f".hide_value = " + f"{socket.hide_value}\n")) + file.write("\n") + outputs_set = True #create node node_name = cleanup_string(node.name) From 553d7b61dcbfe760d6eb7b1619a69be079e55e2f Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 12 Jan 2023 23:52:54 -0600 Subject: [PATCH 3/4] feat: added default attribute names and attribute domains to outputs --- node_to_python.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/node_to_python.py b/node_to_python.py index 79c065b..a38f867 100644 --- a/node_to_python.py +++ b/node_to_python.py @@ -303,15 +303,30 @@ def process_node_group(node_group, level): #description if socket.description != "": file.write((f"{inner}{ng_name}" - f".inputs[{i}]" + f".outputs[{i}]" f".description = " f"\"{socket.description}\"\n")) #hide value if socket.hide_value is True: file.write((f"{inner}{ng_name}" - f".inputs[{i}]" + f".outputs[{i}]" f".hide_value = " f"{socket.hide_value}\n")) + + #default attribute name + if hasattr(socket, "default_attribute_name"): + if socket.default_attribute_name != "": + file.write((f"{inner}{ng_name}" + f".outputs[{i}]" + f".default_attribute_name = \"" + f"{socket.default_attribute_name}" + f"\"\n")) + #attribute domain + if hasattr(socket, "attribute_domain"): + file.write((f"{inner}{ng_name}" + f".outputs[{i}]" + f".attribute_domain = " + f"\'{socket.attribute_domain}\'\n")) file.write("\n") outputs_set = True From a42adbc29bd72354f4296922eb90eeb9f30283a7 Mon Sep 17 00:00:00 2001 From: BrendanParmer <51296046+BrendanParmer@users.noreply.github.com> Date: Thu, 12 Jan 2023 23:55:32 -0600 Subject: [PATCH 4/4] feat: updated versioning --- node_to_python.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node_to_python.py b/node_to_python.py index 55730e1..af8acac 100644 --- a/node_to_python.py +++ b/node_to_python.py @@ -2,7 +2,7 @@ "name": "Node to Python", "description": "Convert Geometry Node Groups to a Python add-on", "author": "Brendan Parmer", - "version": (1, 2, 4), + "version": (1, 3, 0), "blender": (3, 0, 0), "location": "Node", "category": "Node",