my goal is to create a Geometry Node Setup for the currently selected object via Pythonscript looking like this:
While it's pretty easy to create and connect different nodes, I'm still having problems connecting Nodes to the Group-Input and Group-Output. The code I've created looks like this:
import bpy # Get the selected object selected_obj = bpy.context.object # Create a new geometry node tree geometry_node_tree = bpy.data.node_groups.new(name="Geometry Nodes", type='GeometryNodeTree') # Get the geometry node tree tree = geometry_node_tree.nodes # Create the nodes group_input_node = tree.new(type="NodeGroupInput") group_input_node.location = (-200,0) group_output_node = tree.new(type="NodeGroupOutput") group_output_node.location = (400,0) mesh_to_volume_node = tree.new(type="GeometryNodeMeshToVolume") mesh_to_volume_node.location = (0,0) # Set the settings for the nodes mesh_to_volume_node.resolution_mode = 'VOXEL_SIZE' # Connect the nodes from_node_1 = group_input_node to_node_1 = mesh_to_volume_node geometry_node_tree.links.new(from_node_1.outputs, to_node_1.inputs["Mesh"]) from_node_2 = mesh_to_volume_node to_node_2 = group_output_node geometry_node_tree.links.new(from_node_2.outputs["Volume"], to_node_2.inputs) # Create a new geometry nodes modifier and assign the node tree geometry_nodes_modifier = selected_obj.modifiers.new(name="Geometry Nodes", type='NODES') geometry_nodes_modifier.node_group = geometry_node_tree
The result I'm getting is this:
The problem is, as far as I understand it, that in comparison to usual Nodes like the Mesh to Volume Node, the Group Input and Group Output-Nodes determines its data type dynamically after being connected. If I connect them the way I did, their data type is empty and the connection to the Mesh to Volume Node doesn't work. Is there any way of determining the Input/Output type of those Nodes to Geometry?
Thanks in advance!