22 "name" : "Node to Python" ,
33 "description" : "Convert Geometry Node Groups to a Python add-on" ,
44 "author" : "Brendan Parmer" ,
5- "version" : (1 , 2 , 2 ),
5+ "version" : (1 , 2 , 4 ),
66 "blender" : (3 , 0 , 0 ),
77 "location" : "Node" ,
88 "category" : "Node" ,
@@ -222,21 +222,23 @@ def process_node_group(node_group, level):
222222 f"name = \" { node_group .name } \" )\n " ))
223223 file .write ("\n " )
224224
225+ inputs_set = False
226+
225227 #initialize nodes
226228 file .write (f"{ inner } #initialize { ng_name } nodes\n " )
227229 for node in node_group .nodes :
228230 if node .bl_idname == 'GeometryNodeGroup' :
229231 process_node_group (node .node_tree , level + 1 )
230- elif node .bl_idname == 'NodeGroupInput' :
232+ elif node .bl_idname == 'NodeGroupInput' and not inputs_set :
231233 file .write (f"{ inner } #{ ng_name } inputs\n " )
232234 for i , input in enumerate (node .outputs ):
233235 if input .bl_idname != "NodeSocketVirtual" :
234236 file .write (f"{ inner } #input { input .name } \n " )
235237 file .write ((f"{ inner } { ng_name } .inputs.new"
236238 f"(\" { input .bl_idname } \" , "
237239 f"\" { input .name } \" )\n " ))
238- if input . bl_idname in default_sockets :
239- socket = node_group . inputs [ i ]
240+ socket = node_group . inputs [ i ]
241+ if input . bl_idname in default_sockets :
240242 if input .bl_idname == 'NodeSocketColor' :
241243 col = socket .default_value
242244 r , g , b , a = col [0 ], col [1 ], col [2 ], col [3 ]
@@ -251,19 +253,42 @@ def process_node_group(node_group, level):
251253 file .write ((f"{ inner } { ng_name } "
252254 f".inputs[{ i } ]"
253255 f".default_value = { dv } \n " ))
254- if input .bl_idname in value_sockets :
255- #min value
256+
257+ #min value
258+ if hasattr (socket , "min_value" ):
256259 file .write ((f"{ inner } { ng_name } "
257260 f".inputs[{ i } ]"
258261 f".min_value = "
259262 f"{ socket .min_value } \n " ))
260- #max value
263+ #max value
264+ if hasattr (socket , "max_value" ):
261265 file .write ((f"{ inner } { ng_name } "
262266 f".inputs[{ i } ]"
263267 f".max_value = "
264268 f"{ socket .max_value } \n " ))
269+ #default attribute name
270+ if hasattr (socket , "default_attribute_name" ):
271+ if socket .default_attribute_name != "" :
272+ file .write ((f"{ inner } { ng_name } "
273+ f".inputs[{ i } ]"
274+ f".default_attribute_name = \" "
275+ f"{ socket .default_attribute_name } "
276+ f"\" \n " ))
277+ #description
278+ if socket .description != "" :
279+ file .write ((f"{ inner } { ng_name } "
280+ f".inputs[{ i } ]"
281+ f".description = "
282+ f"\" { socket .description } \" \n " ))
283+ #hide value
284+ if socket .hide_value is True :
285+ file .write ((f"{ inner } { ng_name } "
286+ f".inputs[{ i } ]"
287+ f".hide_value = "
288+ f"{ socket .hide_value } \n " ))
265289 file .write ("\n " )
266290 file .write ("\n " )
291+ inputs_set = True
267292 elif node .bl_idname == 'NodeGroupOutput' :
268293 file .write (f"{ inner } #{ ng_name } outputs\n " )
269294 for output in node .inputs :
0 commit comments