import bpy import json import pathlib import sys arguments = sys.argv[sys.argv.index("--") + 1:] destination = pathlib.Path(arguments[0]) tree = bpy.data.node_groups[arguments[1] if len(arguments) > 1 else "Web Authored Geometry"] transform = next((node for node in tree.nodes if node.bl_idname == "GeometryNodeTransform"), None) destination.write_text(json.dumps({ "name": tree.name, "treeCount": len(bpy.data.node_groups), "nodes": sorted(node.bl_idname for node in tree.nodes), "links": len(tree.links), "interfaceSockets": len([item for item in tree.interface.items_tree if item.item_type == "SOCKET"]), "translation": list(transform.inputs["Translation"].default_value) if transform else None, "owners": sorted(obj.name for obj in bpy.data.objects if any( modifier.type == "NODES" and modifier.node_group == tree for modifier in obj.modifiers)), }, indent=2) + "\n")