Skip to content

Commit 4769eef

Browse files
Merge pull request #31 from BrendanParmer/v1.3.0
V1.3.0
2 parents d70c05e + a42adbc commit 4769eef

File tree

1 file changed

+64
-9
lines changed

1 file changed

+64
-9
lines changed

node_to_python.py

Lines changed: 64 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "Node to Python",
33
"description": "Convert Geometry Node Groups to a Python add-on",
44
"author": "Brendan Parmer",
5-
"version": (1, 2, 4),
5+
"version": (1, 3, 0),
66
"blender": (3, 0, 0),
77
"location": "Node",
88
"category": "Node",
@@ -223,7 +223,8 @@ def process_node_group(node_group, level):
223223
file.write("\n")
224224

225225
inputs_set = False
226-
226+
outputs_set = False
227+
227228
#initialize nodes
228229
file.write(f"{inner}#initialize {ng_name} nodes\n")
229230
for node in node_group.nodes:
@@ -237,8 +238,8 @@ def process_node_group(node_group, level):
237238
file.write((f"{inner}{ng_name}.inputs.new"
238239
f"(\"{input.bl_idname}\", "
239240
f"\"{input.name}\")\n"))
240-
if input.bl_idname in default_sockets:
241-
socket = node_group.inputs[i]
241+
socket = node_group.inputs[i]
242+
if input.bl_idname in default_sockets:
242243
if input.bl_idname == 'NodeSocketColor':
243244
col = socket.default_value
244245
r, g, b, a = col[0], col[1], col[2], col[3]
@@ -253,28 +254,82 @@ def process_node_group(node_group, level):
253254
file.write((f"{inner}{ng_name}"
254255
f".inputs[{i}]"
255256
f".default_value = {dv}\n"))
256-
if input.bl_idname in value_sockets:
257-
#min value
257+
258+
#min value
259+
if hasattr(socket, "min_value"):
258260
file.write((f"{inner}{ng_name}"
259261
f".inputs[{i}]"
260262
f".min_value = "
261263
f"{socket.min_value}\n"))
262-
#max value
264+
#max value
265+
if hasattr(socket, "max_value"):
263266
file.write((f"{inner}{ng_name}"
264267
f".inputs[{i}]"
265268
f".max_value = "
266269
f"{socket.max_value}\n"))
270+
#default attribute name
271+
if hasattr(socket, "default_attribute_name"):
272+
if socket.default_attribute_name != "":
273+
file.write((f"{inner}{ng_name}"
274+
f".inputs[{i}]"
275+
f".default_attribute_name = \""
276+
f"{socket.default_attribute_name}"
277+
f"\"\n"))
278+
#description
279+
if socket.description != "":
280+
file.write((f"{inner}{ng_name}"
281+
f".inputs[{i}]"
282+
f".description = "
283+
f"\"{socket.description}\"\n"))
284+
#hide value
285+
if socket.hide_value is True:
286+
file.write((f"{inner}{ng_name}"
287+
f".inputs[{i}]"
288+
f".hide_value = "
289+
f"{socket.hide_value}\n"))
267290
file.write("\n")
268291
file.write("\n")
269292
inputs_set = True
270-
elif node.bl_idname == 'NodeGroupOutput':
293+
294+
elif node.bl_idname == 'NodeGroupOutput' and not outputs_set:
271295
file.write(f"{inner}#{ng_name} outputs\n")
272-
for output in node.inputs:
296+
for i, output in enumerate(node.inputs):
273297
if output.bl_idname != 'NodeSocketVirtual':
274298
file.write((f"{inner}{ng_name}.outputs"
275299
f".new(\"{output.bl_idname}\", "
276300
f"\"{output.name}\")\n"))
301+
302+
socket = node_group.outputs[i]
303+
#description
304+
if socket.description != "":
305+
file.write((f"{inner}{ng_name}"
306+
f".outputs[{i}]"
307+
f".description = "
308+
f"\"{socket.description}\"\n"))
309+
#hide value
310+
if socket.hide_value is True:
311+
file.write((f"{inner}{ng_name}"
312+
f".outputs[{i}]"
313+
f".hide_value = "
314+
f"{socket.hide_value}\n"))
315+
316+
#default attribute name
317+
if hasattr(socket, "default_attribute_name"):
318+
if socket.default_attribute_name != "":
319+
file.write((f"{inner}{ng_name}"
320+
f".outputs[{i}]"
321+
f".default_attribute_name = \""
322+
f"{socket.default_attribute_name}"
323+
f"\"\n"))
324+
#attribute domain
325+
if hasattr(socket, "attribute_domain"):
326+
file.write((f"{inner}{ng_name}"
327+
f".outputs[{i}]"
328+
f".attribute_domain = "
329+
f"\'{socket.attribute_domain}\'\n"))
330+
277331
file.write("\n")
332+
outputs_set = True
278333

279334
#create node
280335
node_name = cleanup_string(node.name)

0 commit comments

Comments
 (0)