Skip to content

Commit 0166ed8

Browse files
Merge pull request #82 from BrendanParmer/NameConflicts
Name conflicts
2 parents 6f1bf76 + 50729ab commit 0166ed8

File tree

5 files changed

+126
-86
lines changed

5 files changed

+126
-86
lines changed

compositor/operator.py

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,18 @@
22

33
from bpy.types import Node, CompositorNodeColorBalance, CompositorNodeTree
44

5-
from ..ntp_operator import NTP_Operator
5+
from ..ntp_operator import NTP_Operator, INDEX
66
from ..ntp_node_tree import NTP_NodeTree
77
from ..utils import *
88
from io import StringIO
99
from .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

1718
class 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\', "

geometry/operator.py

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,22 @@
22
from bpy.types import GeometryNode, GeometryNodeTree
33
from bpy.types import Node
44

5-
if bpy.app.version >= (3, 6, 0):
6-
from bpy.types import GeometryNodeSimulationInput
7-
from bpy.types import GeometryNodeSimulationOutput
8-
if bpy.app.version >= (4, 0, 0):
9-
from bpy.types import GeometryNodeRepeatInput
10-
from bpy.types import GeometryNodeRepeatOutput
11-
125
from io import StringIO
136

147
from ..ntp_operator import NTP_Operator
158
from ..utils import *
169
from .node_tree import NTP_GeoNodeTree
1710
from .node_settings import geo_node_settings
1811

12+
ITEM = "item"
13+
OBJECT_NAME = "name"
14+
OBJECT = "obj"
15+
MODIFIER = "mod"
16+
geo_op_reserved_names = {ITEM,
17+
OBJECT_NAME,
18+
OBJECT,
19+
MODIFIER}
20+
1921
class NTPGeoNodesOperator(NTP_Operator):
2022
bl_idname = "node.ntp_geo_nodes"
2123
bl_label = "Geo Nodes to Python"
@@ -34,6 +36,8 @@ class NTPGeoNodesOperator(NTP_Operator):
3436
def __init__(self):
3537
super().__init__()
3638
self._settings = geo_node_settings
39+
for name in geo_op_reserved_names:
40+
self._used_vars[name] = 0
3741

3842
if bpy.app.version >= (3, 6, 0):
3943
def _process_zone_output_node(self, node: GeometryNode) -> None:
@@ -50,15 +54,14 @@ def _process_zone_output_node(self, node: GeometryNode) -> None:
5054
node_var = self._node_vars[node]
5155

5256
self._write(f"# Remove generated {items}")
53-
self._write(f"for item in {node_var}.{items}:")
57+
self._write(f"for {ITEM} in {node_var}.{items}:")
5458
self._write(f"\t{node_var}.{items}.remove(item)")
5559

5660
for i, item in enumerate(getattr(node, items)):
5761
socket_type = enum_to_py_str(item.socket_type)
5862
name = str_to_py_str(item.name)
5963
self._write(f"# Create item {name}")
60-
self._write(f"{node_var}.{items}.new"
61-
f"({socket_type}, {name})")
64+
self._write(f"{node_var}.{items}.new({socket_type}, {name})")
6265
if is_sim:
6366
item_var = f"{node_var}.{items}[{i}]"
6467
ad = enum_to_py_str(item.attribute_domain)
@@ -199,14 +202,14 @@ def _process_node_tree(self, node_tree: GeometryNodeTree) -> None:
199202

200203
def _apply_modifier(self, nt: GeometryNodeTree, nt_var: str):
201204
#get object
202-
self._write(f"name = bpy.context.object.name", self._outer)
203-
self._write(f"obj = bpy.data.objects[name]", self._outer)
205+
self._write(f"{OBJECT_NAME} = bpy.context.object.name", self._outer)
206+
self._write(f"{OBJECT} = bpy.data.objects[{OBJECT_NAME}]", self._outer)
204207

205208
#set modifier to the one we just created
206209
mod_name = str_to_py_str(nt.name)
207-
self._write(f"mod = obj.modifiers.new(name = {mod_name}, "
210+
self._write(f"{MODIFIER} = obj.modifiers.new(name = {mod_name}, "
208211
f"type = 'NODES')", self._outer)
209-
self._write(f"mod.node_group = {nt_var}", self._outer)
212+
self._write(f"{MODIFIER}.node_group = {nt_var}", self._outer)
210213

211214

212215
def execute(self, context):

material/operator.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
from .node_settings import shader_node_settings
1111

1212
MAT_VAR = "mat"
13+
NODE = "node"
14+
shader_op_reserved_names = {MAT_VAR, NODE}
1315

1416
class NTPMaterialOperator(NTP_Operator):
1517
bl_idname = "node.ntp_material"
@@ -22,6 +24,8 @@ class NTPMaterialOperator(NTP_Operator):
2224
def __init__(self):
2325
super().__init__()
2426
self._settings = shader_node_settings
27+
for name in shader_op_reserved_names:
28+
self._used_vars[name] = 0
2529

2630
def _create_material(self, indent: str):
2731
self._write(f"{MAT_VAR} = bpy.data.materials.new("
@@ -44,8 +48,8 @@ def _initialize_shader_node_tree(self, ntp_node_tree: NTP_NodeTree,
4448
if ntp_node_tree.node_tree == self._base_node_tree:
4549
self._write(f"{ntp_node_tree.var} = {MAT_VAR}.node_tree")
4650
self._write(f"#start with a clean node tree")
47-
self._write(f"for node in {ntp_node_tree.var}.nodes:")
48-
self._write(f"\t{ntp_node_tree.var}.nodes.remove(node)")
51+
self._write(f"for {NODE} in {ntp_node_tree.var}.nodes:")
52+
self._write(f"\t{ntp_node_tree.var}.nodes.remove({NODE})")
4953
else:
5054
self._write((f"{ntp_node_tree.var} = bpy.data.node_groups.new("
5155
f"type = \'ShaderNodeTree\', "

0 commit comments

Comments
 (0)