2
2
"name" : "Node to Python" ,
3
3
"description" : "Convert Geometry Node Groups to a Python add-on" ,
4
4
"author" : "Brendan Parmer" ,
5
- "version" : (1 , 2 , 4 ),
5
+ "version" : (1 , 3 , 0 ),
6
6
"blender" : (3 , 0 , 0 ),
7
7
"location" : "Node" ,
8
8
"category" : "Node" ,
@@ -223,7 +223,8 @@ def process_node_group(node_group, level):
223
223
file .write ("\n " )
224
224
225
225
inputs_set = False
226
-
226
+ outputs_set = False
227
+
227
228
#initialize nodes
228
229
file .write (f"{ inner } #initialize { ng_name } nodes\n " )
229
230
for node in node_group .nodes :
@@ -237,8 +238,8 @@ def process_node_group(node_group, level):
237
238
file .write ((f"{ inner } { ng_name } .inputs.new"
238
239
f"(\" { input .bl_idname } \" , "
239
240
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 :
242
243
if input .bl_idname == 'NodeSocketColor' :
243
244
col = socket .default_value
244
245
r , g , b , a = col [0 ], col [1 ], col [2 ], col [3 ]
@@ -253,28 +254,82 @@ def process_node_group(node_group, level):
253
254
file .write ((f"{ inner } { ng_name } "
254
255
f".inputs[{ i } ]"
255
256
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" ):
258
260
file .write ((f"{ inner } { ng_name } "
259
261
f".inputs[{ i } ]"
260
262
f".min_value = "
261
263
f"{ socket .min_value } \n " ))
262
- #max value
264
+ #max value
265
+ if hasattr (socket , "max_value" ):
263
266
file .write ((f"{ inner } { ng_name } "
264
267
f".inputs[{ i } ]"
265
268
f".max_value = "
266
269
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 " ))
267
290
file .write ("\n " )
268
291
file .write ("\n " )
269
292
inputs_set = True
270
- elif node .bl_idname == 'NodeGroupOutput' :
293
+
294
+ elif node .bl_idname == 'NodeGroupOutput' and not outputs_set :
271
295
file .write (f"{ inner } #{ ng_name } outputs\n " )
272
- for output in node .inputs :
296
+ for i , output in enumerate ( node .inputs ) :
273
297
if output .bl_idname != 'NodeSocketVirtual' :
274
298
file .write ((f"{ inner } { ng_name } .outputs"
275
299
f".new(\" { output .bl_idname } \" , "
276
300
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
+
277
331
file .write ("\n " )
332
+ outputs_set = True
278
333
279
334
#create node
280
335
node_name = cleanup_string (node .name )
0 commit comments