22
33from bpy .types import Node , CompositorNodeColorBalance , CompositorNodeTree
44
5- from ..ntp_operator import NTP_Operator
5+ from ..ntp_operator import NTP_Operator , INDEX
66from ..ntp_node_tree import NTP_NodeTree
77from ..utils import *
88from io import StringIO
99from .node_settings import compositor_node_settings
1010
11- SCENE_VAR = "scene"
12- BASE_NAME_VAR = "base_name"
13- END_NAME_VAR = "end_name"
11+ SCENE = "scene"
12+ BASE_NAME = "base_name"
13+ END_NAME = "end_name"
14+ NODE = "node"
1415
15- ntp_vars = {SCENE_VAR , BASE_NAME_VAR , END_NAME_VAR }
16+ comp_op_reserved_names = {SCENE , BASE_NAME , END_NAME , NODE }
1617
1718class NTPCompositorOperator (NTP_Operator ):
1819 bl_idname = "node.ntp_compositor"
@@ -33,42 +34,44 @@ class NTPCompositorOperator(NTP_Operator):
3334 def __init__ (self ):
3435 super ().__init__ ()
3536 self ._settings = compositor_node_settings
37+ for name in comp_op_reserved_names :
38+ self ._used_vars [name ] = 0
3639
3740
3841 def _create_scene (self , indent : str ):
3942 #TODO: wrap in more general unique name util function
4043 self ._write (f"# Generate unique scene name" , indent )
41- self ._write (f"{ BASE_NAME_VAR } = { str_to_py_str (self .compositor_name )} " ,
44+ self ._write (f"{ BASE_NAME } = { str_to_py_str (self .compositor_name )} " ,
4245 indent )
43- self ._write (f"{ END_NAME_VAR } = { BASE_NAME_VAR } " , indent )
44- self ._write (f"if bpy.data.scenes.get({ END_NAME_VAR } ) != None:" , indent )
46+ self ._write (f"{ END_NAME } = { BASE_NAME } " , indent )
47+ self ._write (f"if bpy.data.scenes.get({ END_NAME } ) != None:" , indent )
4548
4649 indent2 = f"{ indent } \t "
47- self ._write (f"i = 1" , indent2 )
48- self ._write (f"{ END_NAME_VAR } = { BASE_NAME_VAR } + f\" .{{i:03d}}\" " ,
50+ self ._write (f"{ INDEX } = 1" , indent2 )
51+ self ._write (f"{ END_NAME } = { BASE_NAME } + f\" .{{i:03d}}\" " ,
4952 indent2 )
50- self ._write (f"while bpy.data.scenes.get({ END_NAME_VAR } ) != None:" ,
53+ self ._write (f"while bpy.data.scenes.get({ END_NAME } ) != None:" ,
5154 indent2 )
5255
5356 indent3 = f"{ indent } \t \t "
54- self ._write (f"{ END_NAME_VAR } = { BASE_NAME_VAR } + f\" .{{i :03d}}\" " , indent3 )
55- self ._write (f"i += 1\n " , indent3 )
57+ self ._write (f"{ END_NAME } = { BASE_NAME } + f\" .{{{ INDEX } :03d}}\" " , indent3 )
58+ self ._write (f"{ INDEX } += 1\n " , indent3 )
5659
57- self ._write (f"{ SCENE_VAR } = bpy.context.window.scene.copy()\n " , indent )
58- self ._write (f"{ SCENE_VAR } .name = { END_NAME_VAR } " , indent )
59- self ._write (f"{ SCENE_VAR } .use_fake_user = True" , indent )
60- self ._write (f"bpy.context.window.scene = { SCENE_VAR } " , indent )
60+ self ._write (f"{ SCENE } = bpy.context.window.scene.copy()\n " , indent )
61+ self ._write (f"{ SCENE } .name = { END_NAME } " , indent )
62+ self ._write (f"{ SCENE } .use_fake_user = True" , indent )
63+ self ._write (f"bpy.context.window.scene = { SCENE } " , indent )
6164
6265 def _initialize_compositor_node_tree (self , ntp_nt , nt_name ):
6366 #initialize node group
6467 self ._write (f"#initialize { nt_name } node group" , self ._outer )
6568 self ._write (f"def { ntp_nt .var } _node_group():" , self ._outer )
6669
6770 if ntp_nt .node_tree == self ._base_node_tree :
68- self ._write (f"{ ntp_nt .var } = { SCENE_VAR } .node_tree" )
71+ self ._write (f"{ ntp_nt .var } = { SCENE } .node_tree" )
6972 self ._write (f"#start with a clean node tree" )
70- self ._write (f"for node in { ntp_nt .var } .nodes:" )
71- self ._write (f"\t { ntp_nt .var } .nodes.remove(node )" )
73+ self ._write (f"for { NODE } in { ntp_nt .var } .nodes:" )
74+ self ._write (f"\t { ntp_nt .var } .nodes.remove({ NODE } )" )
7275 else :
7376 self ._write ((f"{ ntp_nt .var } = bpy.data.node_groups.new("
7477 f"type = \' CompositorNodeTree\' , "
0 commit comments