22 "name" : "Node to Python" ,
33 "description" : "Convert Geometry Node Groups to a Python add-on" ,
44 "author" : "Brendan Parmer" ,
5- "version" : (1 , 2 , 1 ),
5+ "version" : (1 , 2 , 2 ),
66 "blender" : (3 , 0 , 0 ),
77 "location" : "Node" ,
88 "category" : "Node" ,
153153 'ShaderNodeVectorCurve' ,
154154 'ShaderNodeRGBCurve' }
155155
156+ def cleanup_string (string : str ):
157+ return string .lower ().replace (' ' , '_' ).replace ('.' , '_' )
158+
156159class NodeToPython (bpy .types .Operator ):
157160 bl_idname = "object.node_to_python"
158161 bl_label = "Node to Python"
@@ -164,8 +167,8 @@ def execute(self, context):
164167 if self .node_group_name not in bpy .data .node_groups :
165168 return {'FINISHED' }
166169 ng = bpy .data .node_groups [self .node_group_name ]
167- ng_name = ng .name . lower (). replace ( ' ' , '_' )
168- class_name = ng .name .replace (" " , "" )
170+ ng_name = cleanup_string ( ng .name )
171+ class_name = ng .name .replace (" " , "" ). replace ( '.' , "" )
169172 dir = bpy .path .abspath ("//" )
170173 if not dir or dir == "" :
171174 self .report ({'ERROR' },
@@ -205,7 +208,7 @@ def init_class():
205208 file .write ("\t def execute(self, context):\n " )
206209
207210 def process_node_group (node_group , level ):
208- ng_name = node_group .name . lower (). replace ( ' ' , '_' )
211+ ng_name = cleanup_string ( node_group .name )
209212
210213 outer = "\t " * level #outer indentation
211214 inner = "\t " * (level + 1 ) #inner indentation
@@ -271,8 +274,7 @@ def process_node_group(node_group, level):
271274 file .write ("\n " )
272275
273276 #create node
274- node_name = node .name .lower ()
275- node_name = node_name .replace (' ' , '_' ).replace ('.' , '_' )
277+ node_name = cleanup_string (node .name )
276278 file .write (f"{ inner } #node { node .name } \n " )
277279 file .write ((f"{ inner } { node_name } "
278280 f"= { ng_name } .nodes.new(\" { node .bl_idname } \" )\n " ))
@@ -387,8 +389,7 @@ def process_node_group(node_group, level):
387389 if node_group .links :
388390 file .write (f"{ inner } #initialize { ng_name } links\n " )
389391 for link in node_group .links :
390- input_node = link .from_node .name .lower ()
391- input_node = input_node .replace (' ' , '_' ).replace ('.' , '_' )
392+ input_node = cleanup_string (link .from_node .name )
392393 input_socket = link .from_socket
393394
394395 """
@@ -402,8 +403,7 @@ def process_node_group(node_group, level):
402403 input_idx = i
403404 break
404405
405- output_node = link .to_node .name .lower ()
406- output_node = output_node .replace (' ' , '_' ).replace ('.' , '_' )
406+ output_node = cleanup_string (link .to_node .name )
407407 output_socket = link .to_socket
408408
409409 for i , item in enumerate (link .to_node .inputs .items ()):
0 commit comments