@@ -66,8 +66,8 @@ class NTP_Operator(Operator):
6666    def  __init__ (self ):
6767        super ().__init__ ()
6868
69-         # Call function  after all the writes, such as the menu switch node  and the menu socket  
70-         self ._write_after_link : list [Callable ] |   None   =   None 
69+         # Write functions  after nodes are mostly initialized  and linked up  
70+         self ._write_after_links : list [Callable ] =  [] 
7171
7272        # File (TextIO) or string (StringIO) the add-on/script is generated into 
7373        self ._file : TextIO  =  None 
@@ -541,16 +541,21 @@ def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket,
541541
542542            dv  =  socket_interface .default_value 
543543
544-             # notice that the Node Socket Menu should be assign value after link to a menu switch node 
545544            if  type (socket_interface ) is  bpy .types .NodeTreeInterfaceSocketMenu :
546-                 if  not  self ._write_after_link :
547-                     self ._write_after_link  =  []
548- 
549-                 self ._write_after_link .append (
550-                     lambda  _var = socket_var , _dv = dv : self ._write (f"{ _var }  .default_value = '{ _dv }  '" ))
545+                 if  dv  ==  "" :
546+                     self .report ({'WARNING' },
547+                         "NodeToPython: No menu found for socket " 
548+                         f"{ socket_interface .name }  " 
549+                     )
550+                     return 
551+ 
552+                 self ._write_after_links .append (
553+                     lambda  _socket_var = socket_var , _dv = enum_to_py_str (dv ): (
554+                         self ._write (f"{ _socket_var }  .default_value = { _dv }  " )
555+                     )
556+                 )
551557                return 
552- 
553-             if  type (socket_interface ) ==  bpy .types .NodeTreeInterfaceSocketColor :
558+             elif  type (socket_interface ) ==  bpy .types .NodeTreeInterfaceSocketColor :
554559                dv  =  vec4_to_py_str (dv )
555560            elif  type (dv ) in  {mathutils .Vector , mathutils .Euler }:
556561                dv  =  vec3_to_py_str (dv )
@@ -796,6 +801,8 @@ def _set_input_defaults(self, node: Node) -> None:
796801
797802                #menu 
798803                elif  input .bl_idname  ==  'NodeSocketMenu' :
804+                     if  input .default_value  ==  '' :
805+                         continue 
799806                    default_val  =  enum_to_py_str (input .default_value )
800807
801808                # images 
@@ -1341,9 +1348,10 @@ def _init_links(self, node_tree: NodeTree) -> None:
13411348                        f".outputs[{ input_idx }  ], " 
13421349                        f"{ out_node_var }  .inputs[{ output_idx }  ])" )
13431350
1344-         if  self ._write_after_link :
1345-             for  _func  in  self ._write_after_link :
1346-                 _func ()
1351+         for  _func  in  self ._write_after_links :
1352+             _func ()
1353+         self ._write_after_links  =  []
1354+             
13471355
13481356    def  _set_node_tree_properties (self , node_tree : NodeTree ) ->  None :
13491357        nt_var  =  self ._node_tree_vars [node_tree ]
0 commit comments