Selva Compute API Reference - v1.1.2
    Preparing search index...

    Class TreeBuilder

    Standalone TreeBuilder class for constructing Grasshopper TreeBuilder structures. Does not depend on RhinoCompute library.

    const tree = new TreeBuilder('MyParam')
    .append([0], [1, 2, 3])
    .append([1], [4, 5])
    .toComputeFormat();
    Index

    Constructors

    Methods

    • Format a path array into TreeBuilder path string format.

      Parameters

      • path: number[]

        Path as number array

      Returns `{${string}}`

      Formatted path string like "{0;1;2}"

    • Extract a value from a TreeBuilder or InnerTree array by parameter name.

      Automatically unwraps single values for convenience. Works with both high-level DataTree[] instances and low-level InnerTree[] format.

      Architecture Note:

      • Use with DataTree[] to read builder instances
      • Use with InnerTree[] to read compute API responses
      • Return behavior is consistent across both formats

      Return Value Behavior:

      • Single value → unwrapped (returns 5 not [5])
      • Multiple values → array of values
      • Not found → null

      For TreeBuilder instances

      Parameters

      • trees: TreeBuilder[]

        Array of TreeBuilder instances to read from

      • paramName: string

        The parameter name to retrieve

      Returns DataTreeValue

      The unwrapped value, array of values, or null if parameter not found

      For compiled InnerTree

      // With TreeBuilder instances
      const trees = [new TreeBuilder('X'), new TreeBuilder('Y')];
      trees[0].appendFlat(42);
      const x = TreeBuilder.getTreeValue(trees, 'X'); // Returns 42
      // With InnerTree from compute results
      const result = await client.solve(definitionUrl, inputs);
      const x = TreeBuilder.getTreeValue(result, 'X'); // Returns 42 (not [42])
      const points = TreeBuilder.getTreeValue(result, 'Points'); // Returns [point1, point2, ...]
    • Extract a value from a TreeBuilder or InnerTree array by parameter name.

      Automatically unwraps single values for convenience. Works with both high-level DataTree[] instances and low-level InnerTree[] format.

      Architecture Note:

      • Use with DataTree[] to read builder instances
      • Use with InnerTree[] to read compute API responses
      • Return behavior is consistent across both formats

      Return Value Behavior:

      • Single value → unwrapped (returns 5 not [5])
      • Multiple values → array of values
      • Not found → null

      For TreeBuilder instances

      Parameters

      • trees: DataTree[]

        Array of TreeBuilder instances to read from

      • paramName: string

        The parameter name to retrieve

      Returns DataTreeValue

      The unwrapped value, array of values, or null if parameter not found

      For compiled InnerTree

      // With TreeBuilder instances
      const trees = [new TreeBuilder('X'), new TreeBuilder('Y')];
      trees[0].appendFlat(42);
      const x = TreeBuilder.getTreeValue(trees, 'X'); // Returns 42
      // With InnerTree from compute results
      const result = await client.solve(definitionUrl, inputs);
      const x = TreeBuilder.getTreeValue(result, 'X'); // Returns 42 (not [42])
      const points = TreeBuilder.getTreeValue(result, 'Points'); // Returns [point1, point2, ...]
    • Set or replace a parameter value within a TreeBuilder or InnerTree array.

      Supports both high-level DataTree[] instances and low-level InnerTree[] format.

      Architecture Note:

      • Use with DataTree[] when building/modifying before computation
      • Use with InnerTree[] when modifying compute API results
      • DataTree is the high-level builder; InnerTree is the Rhino Compute format

      For TreeBuilder instances (high-level builder)

      Parameters

      • trees: TreeBuilder[]

        Array of TreeBuilder instances to modify

      • paramName: string

        The parameter name to set or replace

      • newValue: DataTreeValue

        The new value (scalar, array, or TreeBuilder structure)

      Returns TreeBuilder[]

      A new/modified TreeBuilder array with the updated parameter

      For compiled InnerTree (low-level API format)

      // With TreeBuilder instances (high-level)
      let trees = [new TreeBuilder('X'), new TreeBuilder('Y')];
      trees = TreeBuilder.replaceTreeValue(trees, 'X', 42);
      const result = await client.solve(definitionUrl,
      trees.map(t => t.toComputeFormat())
      );
      // With InnerTree format (low-level, from API)
      let trees = await client.solve(definitionUrl, initialInputs);
      trees = TreeBuilder.replaceTreeValue(trees, 'X', 42);
      trees = TreeBuilder.replaceTreeValue(trees, 'Y', [1, 2, 3]);
    • Set or replace a parameter value within a TreeBuilder or InnerTree array.

      Supports both high-level DataTree[] instances and low-level InnerTree[] format.

      Architecture Note:

      • Use with DataTree[] when building/modifying before computation
      • Use with InnerTree[] when modifying compute API results
      • DataTree is the high-level builder; InnerTree is the Rhino Compute format

      For TreeBuilder instances (high-level builder)

      Parameters

      • trees: DataTree[]

        Array of TreeBuilder instances to modify

      • paramName: string

        The parameter name to set or replace

      • newValue: DataTreeValue

        The new value (scalar, array, or TreeBuilder structure)

      Returns DataTree[]

      A new/modified TreeBuilder array with the updated parameter

      For compiled InnerTree (low-level API format)

      // With TreeBuilder instances (high-level)
      let trees = [new TreeBuilder('X'), new TreeBuilder('Y')];
      trees = TreeBuilder.replaceTreeValue(trees, 'X', 42);
      const result = await client.solve(definitionUrl,
      trees.map(t => t.toComputeFormat())
      );
      // With InnerTree format (low-level, from API)
      let trees = await client.solve(definitionUrl, initialInputs);
      trees = TreeBuilder.replaceTreeValue(trees, 'X', 42);
      trees = TreeBuilder.replaceTreeValue(trees, 'Y', [1, 2, 3]);