Modular is a module project designed to import node graphs created in Nodi in JSON format, enabling the extraction of geometric data generated based on the node graph structure.
import init, { Modular } from "nodi-modular"; // Initialize the WebAssembly module await init(); // Create a new instance of the Modular const modular = Modular.new(); // Load a node graph in JSON format as a string modular.loadGraph(JSON.stringify({ nodes: { ... }, })); // Evaluate the node graph to get the result const result = modular.evaluate(); // Geometry identifiers are the keys of the geometries in the result const { geometryIdentifiers } = result; geometryIdentifiers.forEach((identifier) => { // Get the geometry variant by identifier // variants are curve, surface, mesh, and etc. const geometry = modular.findGeometryById(identifier); // Get the geometry interop by identifier // geometry interop has the data that can be rendered as a polygonalized data (polyline or triangle mesh) const interop = modular.findGeometryInteropById(identifier); }); // Get the nodes of the node graph const nodes = modular.getNodes(); // Find the node by the variant and label const numberOfGrid = nodes.find((n) => n.variant === "Number" && n.label === 'number of grid'); // Each nodes have the properties that can be changed // What properties can be changed depends on the node variant, so you need to check the node variant's properties (numberGrid["properties"]) modular.changeNodeProperty(numberOfGrid.id, { name: "value", value: { type: "Number", content: 30, } }); // re-evaluate the node graph to get the result after the property change const resultAfterPropertyChange = await modular.evaluate();