Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion __init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "Node to Python",
"description": "Convert Blender node groups to a Python add-on!",
"author": "Brendan Parmer",
"version": (3, 1, 0),
"version": (3, 2, 0),
"blender": (3, 0, 0),
"location": "Node",
"category": "Node",
Expand Down
22 changes: 22 additions & 0 deletions blender_manifest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
schema_version = "1.0.0"

id = "node_to_python"
version = "3.2.0"
name = "Node To Python"
tagline = "Turn node groups into Python code"
maintainer = "Brendan Parmer <brendanparmer+nodetopython@gmail.com>"
type = "add-on"

# In add-on mode, NodeToPython will create and write to files at a specified directory
permissions = ["files"]

website = "https://github.com/BrendanParmer/NodeToPython"

tags = ["Development", "Compositing", "Geometry Nodes", "Material", "Node"]

blender_version_min = "4.2.0"
blender_version_max = "4.3.0"

license = [
"SPDX:MIT",
]
16 changes: 11 additions & 5 deletions compositor/operator.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from ..ntp_operator import NTP_Operator, INDEX
from ..ntp_node_tree import NTP_NodeTree
from ..utils import *
from ..node_settings import NTPNodeSetting, ST
from io import StringIO
from ..node_settings import node_settings

Expand Down Expand Up @@ -33,7 +34,7 @@ class NTPCompositorOperator(NTP_Operator):

def __init__(self):
super().__init__()
self._settings = node_settings
self._node_infos = node_settings
for name in COMP_OP_RESERVED_NAMES:
self._used_vars[name] = 0

Expand Down Expand Up @@ -86,7 +87,7 @@ def _initialize_compositor_node_tree(self, ntp_nt, nt_name):
if not hasattr(ntp_nt.node_tree, enum):
continue
setting = getattr(ntp_nt.node_tree, enum)
if setting is not None and setting is not "":
if setting != None and setting != "":
py_str = enum_to_py_str(setting)
self._write(f"{ntp_nt.var}.{enum} = {py_str}")

Expand Down Expand Up @@ -119,7 +120,7 @@ def _set_color_balance_settings(self, node: CompositorNodeColorBalance
NTPNodeSetting("power", ST.COLOR),
NTPNodeSetting("slope", ST.COLOR)]

self._settings['CompositorNodeColorBalance'] = lst
self._node_infos['CompositorNodeColorBalance'].attributes_ = lst

def _process_node(self, node: Node, ntp_nt: NTP_NodeTree):
"""
Expand Down Expand Up @@ -167,6 +168,8 @@ def _process_node_tree(self, node_tree: CompositorNodeTree):
ntp_nt = NTP_NodeTree(node_tree, nt_var)
self._initialize_compositor_node_tree(ntp_nt, nt_name)

self._set_node_tree_properties(node_tree)

if bpy.app.version >= (4, 0, 0):
self._tree_interface_settings(ntp_nt)

Expand All @@ -175,15 +178,18 @@ def _process_node_tree(self, node_tree: CompositorNodeTree):

for node in node_tree.nodes:
self._process_node(node, ntp_nt)


#set look of nodes
self._set_parents(node_tree)
self._set_locations(node_tree)
self._set_dimensions(node_tree)


#create connections
self._init_links(node_tree)

self._write(f"return {nt_var}\n")

#create node group
self._write(f"{nt_var} = {nt_var}_node_group()\n", self._outer)

def execute(self, context):
Expand Down
8 changes: 4 additions & 4 deletions geometry/operator.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class NTPGeoNodesOperator(NTP_Operator):

def __init__(self):
super().__init__()
self._settings = node_settings
self._node_infos = node_settings
for name in GEO_OP_RESERVED_NAMES:
self._used_vars[name] = 0

Expand Down Expand Up @@ -133,17 +133,17 @@ def _process_node_tree(self, node_tree: GeometryNodeTree) -> None:
f"type = \'GeometryNodeTree\', "
f"name = {str_to_py_str(node_tree.name)})\n")

self._set_node_tree_properties(node_tree)
if bpy.app.version >= (4, 0, 0):
self._set_geo_tree_properties(node_tree)

#initialize nodes
self._write(f"#initialize {nt_var} nodes")

ntp_nt = NTP_GeoNodeTree(node_tree, nt_var)

if bpy.app.version >= (4, 0, 0):
self._tree_interface_settings(ntp_nt)

#initialize nodes
self._write(f"#initialize {nt_var} nodes")
for node in node_tree.nodes:
self._process_node(node, ntp_nt)

Expand Down
Loading