{
  "Uuid": "61a56316-efa2-4b39-bb21-571989baf45b",
  "IsCustomNode": false,
  "Description": "",
  "Name": "Flood Volume Analysis",
  "ElementResolver": {
    "ResolutionMap": {
      "ColorRange.B": {
        "Key": "DSCore.ColorRange",
        "Value": "DSCoreNodes.dll"
      },
      "Math": {
        "Key": "DSCore.Math",
        "Value": "DSCoreNodes.dll"
      }
    }
  },
  "Inputs": [
    {
      "Id": "4e56faa5347741568e0316bc42ec4f26",
      "Name": "Select Terrain",
      "Type": "string",
      "Type2": "string",
      "Value": "{\"ConcreteType\":\"FormaDataSource\",\"ProposalUrn\":\"urn:adsk-forma-elements:proposal:pro_8ihn9lbcsh:fda7ae4b-658b-4ea4-a852-5ec836f674de:1790943228482\",\"Elements\":[{\"Urn\":\"urn:adsk-forma-elements:terrain:pro_8ihn9lbcsh:8dfcb4e7-dfa3-484e-9996-fa4436be733d:1790943129297\",\"Path\":\"root/f94af9d5-a802-4bb8-a71e-415341af56b2\",\"WorldTransform\":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}],\"Region\":\"EMEA\",\"FileUrn\":\"pro_8ihn9lbcsh\"}",
      "Description": "Select elements from Forma projects in Forma/ACC hubs."
    },
    {
      "Id": "0a1597e817d9436eaef0031cc07a6776",
      "Name": "Select Water Body Flow Path",
      "Type": "string",
      "Type2": "string",
      "Value": "{\"ConcreteType\":\"FormaDataSource\",\"ProposalUrn\":\"urn:adsk-forma-elements:proposal:pro_8ihn9lbcsh:fda7ae4b-658b-4ea4-a852-5ec836f674de:1790945578062\",\"Elements\":[{\"Urn\":\"urn:adsk-forma-elements:basic:pro_8ihn9lbcsh:fda7ae4b-658b-4ea4-a852-5ec836f674de\\u002B9b3b02619b81d8:1790945578061\",\"Path\":\"root/db329b7\",\"WorldTransform\":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}],\"Region\":\"EMEA\",\"FileUrn\":\"pro_8ihn9lbcsh\"}",
      "Description": "Select elements from Forma projects in Forma/ACC hubs."
    }
  ],
  "Outputs": [],
  "Nodes": [
    {
      "ConcreteType": "Forma.NodeModels.SelectElementsHttp, DynamoForma.NodeModels",
      "Id": "4e56faa5347741568e0316bc42ec4f26",
      "NodeType": "ExtensionNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "d466068a770c441496ae54b3d46b8375",
          "Name": "elements",
          "Description": "Forma Elements",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Select elements from Forma projects in Forma/ACC hubs.",
      "InputValue": "{\"ConcreteType\":\"FormaDataSource\",\"ProposalUrn\":\"urn:adsk-forma-elements:proposal:pro_8ihn9lbcsh:fda7ae4b-658b-4ea4-a852-5ec836f674de:1790943228482\",\"Elements\":[{\"Urn\":\"urn:adsk-forma-elements:terrain:pro_8ihn9lbcsh:8dfcb4e7-dfa3-484e-9996-fa4436be733d:1790943129297\",\"Path\":\"root/f94af9d5-a802-4bb8-a71e-415341af56b2\",\"WorldTransform\":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}],\"Region\":\"EMEA\",\"FileUrn\":\"pro_8ihn9lbcsh\"}"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "8d56fb7c9d774220b1439a46a60c9be3",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "862e3113a65e442dacde6fe1f06cb080",
          "Name": "elements",
          "Description": "The elements from which to generate the volume mesh.\n\nElement[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "94a7b802c6074884ad40bfa2c86782b7",
          "Name": "vertices",
          "Description": "List of vertex coordinates (XYZ) for the mesh geometry.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "3eb2dd40901a4472bb14f8798ad751a8",
          "Name": "indices",
          "Description": "List of integer index triples defining each mesh face, based on the vertices list.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Forma.Elements.Element.MeshRepresentation@Forma.Elements.Element[]",
      "Replication": "Auto",
      "Description": "Gets a visual volume mesh from the given elements. Returns vertex coordinates and face indices that define the mesh. Use MeshToolkit for simple mesh operations.\n\nElement.MeshRepresentation (elements: Element[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "0f3029df17d34f33a3b8b3bb9fe33dc7",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "b2e53f8bcdf049baad745f1a97613b5d",
          "Name": "points",
          "Description": "List of points\n\nPoint[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "a789fbaa2e194de3a4626dac41388ad2",
          "Name": "indices",
          "Description": "Flat list of point indices\n\nint[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "dc58bbba1e75468ab0568b117ffd9789",
          "Name": "Mesh",
          "Description": "Mesh",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Mesh.ByPointsIndices@Autodesk.DesignScript.Geometry.Point[],int[]",
      "Replication": "Auto",
      "Description": "Create a new Mesh from supplied points and indices. Points should not overlap. Indices should be sets of three integers indicating the three locations in the points array of the three points of a triangle\n\nMesh.ByPointsIndices (points: Point[], indices: int[]): Mesh"
    },
    {
      "ConcreteType": "Forma.NodeModels.SelectElementsHttp, DynamoForma.NodeModels",
      "Id": "0a1597e817d9436eaef0031cc07a6776",
      "NodeType": "ExtensionNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "1630a5c81b934c32855c601b152402ae",
          "Name": "elements",
          "Description": "Forma Elements",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Select elements from Forma projects in Forma/ACC hubs.",
      "InputValue": "{\"ConcreteType\":\"FormaDataSource\",\"ProposalUrn\":\"urn:adsk-forma-elements:proposal:pro_8ihn9lbcsh:fda7ae4b-658b-4ea4-a852-5ec836f674de:1790945578062\",\"Elements\":[{\"Urn\":\"urn:adsk-forma-elements:basic:pro_8ihn9lbcsh:fda7ae4b-658b-4ea4-a852-5ec836f674de\\u002B9b3b02619b81d8:1790945578061\",\"Path\":\"root/db329b7\",\"WorldTransform\":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}],\"Region\":\"EMEA\",\"FileUrn\":\"pro_8ihn9lbcsh\"}"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "886184ce6f1f4c959855e279a7b78b7c",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "0b52b64c85214a20b1cca7eba11c52c3",
          "Name": "elements",
          "Description": "The list of Forma Elements whose terrain footprint will be calculated.\n\nElement[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "9963dff9b0ba47a18ff6b20d6ce589d9",
          "Name": "footprint",
          "Description": "A list of curves representing the overlapping footprint of the elements on the terrain.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Forma.Elements.Element.Footprint@Forma.Elements.Element[]",
      "Replication": "Auto",
      "Description": "Get the footprint of one or more Forma Elements projected onto the terrain surface.\n\nElement.Footprint (elements: Element[]): Curve[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "83735af3b60e4dac934ed7b45ad94f86",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "03e9a4d9c23047768efdb28f7146cef3",
          "Name": "list",
          "Description": "List to get the first item from.\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "5f0e1c53345646f48195816d398c2cf6",
          "Name": "item",
          "Description": "First item in the list.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.List.FirstItem@var[]..[]",
      "Replication": "Auto",
      "Description": "Returns the first item in a list.\n\nList.FirstItem (list: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "b355078ab5fa4a238adbc90179cf7ab8",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "3a4b420ec60e4bad9e7baddd8a7b564d",
          "Name": "curve",
          "Description": "Autodesk.DesignScript.Geometry.Curve",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "24147f1c11154b2fbb396f348b5a77e1",
          "Name": "param",
          "Description": "The parameter at which to evaluate\n\ndouble\nDefault value : 0",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "c24fbf76ab7f4285877d9f75a8bb91ee",
          "Name": "CoordinateSystem",
          "Description": "CoordinateSystem at parameter of curve",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Curve.CoordinateSystemAtParameter@double",
      "Replication": "Auto",
      "Description": "Get a CoordinateSystem with origin at the point at the given parameter. The XAxis is aligned with the curve normal, the YAxis is aligned with the curve tangent at this point, and the ZAxis is aligned with the up-vector or binormal at this point\n\nCurve.CoordinateSystemAtParameter (param: double = 0): CoordinateSystem"
    },
    {
      "ConcreteType": "CoreNodeModels.Input.DoubleSlider, CoreNodeModels",
      "NumberType": "Double",
      "MaximumValue": 1.0,
      "MinimumValue": 0.0,
      "StepValue": 0.001,
      "Id": "97c91216ca7a4268b9ac769b2af9e5bb",
      "NodeType": "NumberInputNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "e0866cfba2e04668b7e809340d8a494b",
          "Name": "",
          "Description": "Double",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Produces numeric values",
      "InputValue": 0.589
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "d1fd87ba946d4b0a8f3550a145247a1a",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "46aa29975b474afab1408da1d299a9b6",
          "Name": "bestFitPoints",
          "Description": "List of points to best fit line\n\nPoint[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "c06ccd2b87e54eb7826c07f9a408b898",
          "Name": "Line",
          "Description": "Line from fit through points",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Line.ByBestFitThroughPoints@Autodesk.DesignScript.Geometry.Point[]",
      "Replication": "Auto",
      "Description": "Creates a Line best approximating a scatter plot of Points.\n\nLine.ByBestFitThroughPoints (bestFitPoints: Point[]): Line"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "8392c8390bbe47a79b37b13ebda86683",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "e0ea4e2d3e8846f1866ff7aa5ff89a87",
          "Name": "coordinateSystem",
          "Description": "Parent coordinate system\n\nCoordinateSystem\nDefault value : Autodesk.DesignScript.Geometry.CoordinateSystem.ByOrigin(0, 0, 0)",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "33e46adfc7d1422e87218b55731576d9",
          "Name": "x",
          "Description": "X coordinate\n\ndouble\nDefault value : 0",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "535a5b5579ab4f1892bf6a2ef8c1581d",
          "Name": "y",
          "Description": "Y coordinate\n\ndouble\nDefault value : 0",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "e55df98dbefd4d578e5a8045eaa254e9",
          "Name": "z",
          "Description": "Z coordinate\n\ndouble\nDefault value : 0",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "6c6165999ba94ad396a2e6853cb7a9d8",
          "Name": "Point",
          "Description": "Point at cartesian coordinates",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Point.ByCartesianCoordinates@Autodesk.DesignScript.Geometry.CoordinateSystem,double,double,double",
      "Replication": "Auto",
      "Description": "Form a Point in the given coordinate system with 3 cartesian coordinates\n\nPoint.ByCartesianCoordinates (coordinateSystem: CoordinateSystem = Autodesk.DesignScript.Geometry.CoordinateSystem.ByOrigin(0, 0, 0), x: double = 0, y: double = 0, z: double = 0): Point"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "86b63fe1d8a244898076d41def2335d6",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "65f0d9fc3cfa4670900f024374fa1206",
          "Name": "x",
          "Description": "x",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "c402bfc337c94346a06d1c4ca99e858d",
          "Name": "list",
          "Description": "[-x, x]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "[-x,x];"
    },
    {
      "ConcreteType": "CoreNodeModels.Input.DoubleInput, CoreNodeModels",
      "NumberType": "Double",
      "Id": "bf584e5003d8414c9ed0a75eb5d080fc",
      "NodeType": "NumberInputNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "b0a3d484ef404f578bcc8bf22a2a5814",
          "Name": "",
          "Description": "Double",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Creates a number.",
      "InputValue": 300.0
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "150eba3d761e41da913f67d15f180265",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "f6a596a6130348f98c83bfcaacbf13d4",
          "Name": "coordinateSystem",
          "Description": "Autodesk.DesignScript.Geometry.CoordinateSystem",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "9b0e468833cf448a862df5b50934135d",
          "Name": "Point",
          "Description": "Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.CoordinateSystem.Origin",
      "Replication": "Auto",
      "Description": "Creates a Point representing the CoordinateSystem origin.\n\nCoordinateSystem.Origin: Point"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "3317a24303ea4159b8c164bc380f46a3",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "cd7962f570c54cb4abf84e3a0c089705",
          "Name": "mesh",
          "Description": "Autodesk.DesignScript.Geometry.Mesh",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "e7b13919c1ca4067814e3800d13c1050",
          "Name": "point",
          "Description": "Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "63aaf39e524545368573e3de2666b726",
          "Name": "dir",
          "Description": "Vector",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "b8d5b0e120214a089bc0c350cfa58175",
          "Name": "Point",
          "Description": "Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Mesh.Project@Autodesk.DesignScript.Geometry.Point,Autodesk.DesignScript.Geometry.Vector",
      "Replication": "Auto",
      "Description": "Projects point onto the Mesh along the specified direction\n\nMesh.Project (point: Point, dir: Vector): Point"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "9a18e48d202a4d5a9a87d0e6c9c65e36",
      "NodeType": "FunctionNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "322c4a6d684c4b6292eee656892b8786",
          "Name": "Vector",
          "Description": "Canonical Z axis vector (0,0,1)",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Vector.ZAxis",
      "Replication": "Auto",
      "Description": "Get the canonical Z axis Vector (0,0,1)\n\nVector.ZAxis ( ): Vector"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "9f5909e525e04b9994ddffb51f5878ab",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "21bb57731d8d4c2ab8fdf5d10abe42c0",
          "Name": "point",
          "Description": "Autodesk.DesignScript.Geometry.Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "ca6b95d018b2498c9ba0cc91834396dd",
          "Name": "double",
          "Description": "double",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Point.Z",
      "Replication": "Auto",
      "Description": "Get the Z component of a Point\n\nPoint.Z: double"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "dfbfd06ffcf04a15ac04314dca0c5087",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "e26982b7d9304d0589739fb27952ccb3",
          "Name": "x",
          "Description": "Integer value, double value or string\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "f15dc7a52313460180ad525ae0a1f671",
          "Name": "y",
          "Description": "Integer value, double value or string\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "5c7e645d0eb24029be8c42214bca75d6",
          "Name": "var",
          "Description": "The sum of two input numbers, or the concatenation of two strings",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "+@var[]..[],var[]..[]",
      "Replication": "Auto",
      "Description": "Returns addition of x and y\n\n+ (x: var[]..[], y: var[]..[]): var[]..[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "be655a6856e546fdaee36713bdbae033",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "82848917bb7749ccba720de88a1750fe",
          "Name": "curve",
          "Description": "Autodesk.DesignScript.Geometry.Curve",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "cd04549a17894b82aa3c2f862239d5e7",
          "Name": "direction",
          "Description": "Vector to extrude along\n\nVector\nDefault value : Autodesk.DesignScript.Geometry.Vector.ByCoordinates(0, 0, 1)",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "17daa9edeea44888892d784c5efef7ac",
          "Name": "distance",
          "Description": "Distance to extrude\n\ndouble\nDefault value : 1",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "b01ad69edac94bbc98303dfd89e82ad7",
          "Name": "Surface",
          "Description": "The extruded Surface",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Curve.Extrude@Autodesk.DesignScript.Geometry.Vector,double",
      "Replication": "Auto",
      "Description": "Extrudes a Curve in the specified direction, by the specified distance\n\nCurve.Extrude (direction: Vector = Autodesk.DesignScript.Geometry.Vector.ByCoordinates(0, 0, 1), distance: double = 1): Surface"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "61a8f307085e43c9a531a4045c805c0b",
      "NodeType": "FunctionNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "21aff54ea2d44e6eb41ad6c353defc0d",
          "Name": "Vector",
          "Description": "Canonical Z axis vector (0,0,1)",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Vector.ZAxis",
      "Replication": "Auto",
      "Description": "Get the canonical Z axis Vector (0,0,1)\n\nVector.ZAxis ( ): Vector"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "b4343873be004094b07a1c8a6352e14d",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "0c7cb83d5bdc44ea95ecff5f677b3d53",
          "Name": "surface",
          "Description": "Autodesk.DesignScript.Geometry.Surface",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "a541fa1de6cc4387a116e2ecae64f728",
          "Name": "Curve[]",
          "Description": "Curve[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Surface.PerimeterCurves",
      "Replication": "Auto",
      "Description": "Return all the boundary Curves of the Surface.\n\nSurface.PerimeterCurves ( ): Curve[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "099bf62803704a52a9a6d459a0affd39",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "cd70d47b218f49a98db2ccb4721ec159",
          "Name": "curves",
          "Description": "Curves to join into polycurve\n\nCurve[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "f1898d9bdf784aa9ba6ca33d115a587f",
          "Name": "joinTolerance",
          "Description": "Tolerance to determine size of gap allowed between curves to be joined\n\ndouble\nDefault value : 0.001",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "886ba53c34a3421285ebc5924bc99309",
          "Name": "trimCurves",
          "Description": "bool\nDefault value : false",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "f694b809b2604a33bfffe6881e4dbae1",
          "Name": "trimLength",
          "Description": "double\nDefault value : 0",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "97ade6c9766f4587b4e558f3f97810bd",
          "Name": "PolyCurve",
          "Description": "Polycurve created by joined curves",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.PolyCurve.ByJoinedCurves@Autodesk.DesignScript.Geometry.Curve[],double,bool,double",
      "Replication": "Auto",
      "Description": "Make PolyCurve by joining curves. Input curves need not be specified in order of connectivity. PolyCurve direction is based on the first curve in the input array. Choose a preferred join tolerance between 1e-6 and 1e-3 units. Lower values may be too strict and prevent curves that should connect from joining; higher values may cause short curves to be unintentionally merged or to collapse to degenerate points.\n\nPolyCurve.ByJoinedCurves (curves: Curve[], joinTolerance: double = 0.001, trimCurves: bool = false, trimLength: double = 0): PolyCurve"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "e5ac30623ac94ee499fff389693ea6e9",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "b39e7552ed9e45e4ab44c52fe8100c9c",
          "Name": "curve",
          "Description": "Autodesk.DesignScript.Geometry.Curve",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "e2cbe8fec00844e5bc518dc8c9fedc1e",
          "Name": "path",
          "Description": "The path that represent the sweep path\n\nCurve",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "7db8c2ca89b64404a26d143c4248ac8d",
          "Name": "cutEndOff",
          "Description": "Cut the end of the sweep and make it normal to the path\n\nbool\nDefault value : false",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "f63052b0580a49be950d5d535af73e26",
          "Name": "Solid",
          "Description": "A solid that sweeps this closed Curve along the path Curve",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Curve.SweepAsSolid@Autodesk.DesignScript.Geometry.Curve,bool",
      "Replication": "Auto",
      "Description": "Sweeps this closed Curve along the path Curve, creating a Solid\n\nCurve.SweepAsSolid (path: Curve, cutEndOff: bool = false): Solid"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "9d122493ec394d978fe7aa17d3036b8b",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "17ca44ca871b4e04b9ce5e4c4a09e27d",
          "Name": "curve",
          "Description": "Autodesk.DesignScript.Geometry.Curve",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "bfa01b4007c04748924c2b104ddb64dd",
          "Name": "endParameter",
          "Description": "The parameter at which to start the trim\n\ndouble\nDefault value : 1",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "f94de410eefe4a2eb7f0bdc8bc9c75b2",
          "Name": "Curve",
          "Description": "A new Curve with the end removed",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Curve.TrimByEndParameter@double",
      "Replication": "Auto",
      "Description": "Removes the end of the Curve at the specified parameter\n\nCurve.TrimByEndParameter (endParameter: double = 1): Curve"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "e79dc44766ac47c7aa5fbbe525ea8068",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "a437690bc98848f3b3ad5dfbdcb14182",
          "Name": "mesh",
          "Description": "Autodesk.DesignScript.Geometry.Mesh",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "e2077272fa674ed0a97f33894e199bd4",
          "Name": "BoundingBox",
          "Description": "BoundingBox",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Mesh.BoundingBox",
      "Replication": "Auto",
      "Description": "Mesh.BoundingBox ( ): BoundingBox"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "02f9d4fcf2bc4707ac4ee6729363d0bf",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "30336e7332bc45928424febb7044255c",
          "Name": "boundingBox",
          "Description": "Autodesk.DesignScript.Geometry.BoundingBox",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "3d624abde4df4e71a5fa7cae3b5bb92d",
          "Name": "Cuboid",
          "Description": "Returns cuboid representation of the bounding box.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.BoundingBox.ToCuboid",
      "Replication": "Auto",
      "Description": "Get the bounding box as a solid cuboid.\n\nBoundingBox.ToCuboid ( ): Cuboid"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "37b56e5eb0d2430c909289ee0e95f5b8",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "062c58d799e04313bd3c788bfe4e564e",
          "Name": "a",
          "Description": "a",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "8df89b10c1c74ee3b423e47bd9d65c54",
          "Name": "function",
          "Description": "DesignScript.Builtin.Get.ValueAtIndex(a, 0)",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "a[0];"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "e48e14adb4484a9dbcb8988ac845fa1a",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "a4931840502144feabc78053f04dbbd8",
          "Name": "geometry",
          "Description": "Autodesk.DesignScript.Geometry.Geometry",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "3c1c3cbd95f74ba390edbba15dc0030e",
          "Name": "other",
          "Description": "Geometry",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "cdac7e19f6a14f11ae67169da5130e6c",
          "Name": "Geometry[]",
          "Description": "Geometry[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Geometry.Intersect@Autodesk.DesignScript.Geometry.Geometry",
      "Replication": "Auto",
      "Description": "Get the intersection Geometry for this object and another\n\nGeometry.Intersect (other: Geometry): Geometry[]"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "8944ca2882d543e5afbd42a3ae8ab2b0",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "2ede6ad3382c45419c2f0ef3ed6ed040",
          "Name": "inputGeometry",
          "Description": "Geometry",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "0cf146459ea74f51a52336c68df7ad23",
          "Name": "tolerance",
          "Description": "double\nDefault value : -1",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "8ee173ee54154350b7d0f0e525faa9ef",
          "Name": "maxGridLines",
          "Description": "int\nDefault value : 512",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "8bd75190fbee48c68495fbfe8765e0d3",
          "Name": "Mesh",
          "Description": "Mesh",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Mesh.ByGeometry@Autodesk.DesignScript.Geometry.Geometry,double,int",
      "Replication": "Auto",
      "Description": "Convert a Geometry object such as a Solid or Surface into a Mesh. The resolution of the mesh is determined by the Dynamo render precision\n\nMesh.ByGeometry (inputGeometry: Geometry, tolerance: double = -1, maxGridLines: int = 512): Mesh"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "d8a3700f635840fdbc9e57600a56594a",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "508f9f19863c4d6f837e9b852a696319",
          "Name": "solids",
          "Description": "A collection of solids\n\nSolid[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "de284a068b5342f782c4345cabfd0cf1",
          "Name": "Solid",
          "Description": "Solid",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Solid.ByUnion@Autodesk.DesignScript.Geometry.Solid[]",
      "Replication": "Auto",
      "Description": "Union a collection of solids into one solid\n\nSolid.ByUnion (solids: Solid[]): Solid"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "64132a055b4947a4a893b97c7344d366",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "a1c171afa8994579bb2a813499b32cab",
          "Name": "mesh",
          "Description": "Autodesk.DesignScript.Geometry.Mesh",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "424c7c732b2540bebf10cc967ceee97e",
          "Name": "tool",
          "Description": "Mesh",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "4d53f146f33f4752a1c2d6f8ea01b059",
          "Name": "mesh",
          "Description": "mesh",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Mesh.BooleanDifference@Autodesk.DesignScript.Geometry.Mesh",
      "Replication": "Auto",
      "Description": "Returns a new mesh subtracting the tool mesh from the original mesh.\n\nMesh.BooleanDifference (tool: Mesh): Mesh"
    },
    {
      "ConcreteType": "PythonNodeModels.PythonNode, PythonNodeModels",
      "Code": "# Generated by Autodesk Assistant at 2026-10-02T13:22:10.6680638Z\nimport clr\nclr.AddReference('ProtoGeometry')\nfrom Autodesk.DesignScript.Geometry import Mesh, Point\n\ndef separate_mesh_components(mesh):\n    face_index_groups = mesh.FaceIndices\n    raw_verts = list(mesh.VerticesAsThreeNumbers)\n\n    vertices = []\n    for i in range(0, len(raw_verts), 3):\n        vertices.append(Point.ByCoordinates(raw_verts[i], raw_verts[i+1], raw_verts[i+2]))\n\n    triangles = []\n    for ig in face_index_groups:\n        triangles.append((ig.A, ig.B, ig.C))\n\n    vert_to_tris = {}\n    for ti, (a, b, c) in enumerate(triangles):\n        for v in (a, b, c):\n            if v not in vert_to_tris:\n                vert_to_tris[v] = set()\n            vert_to_tris[v].add(ti)\n\n    num_tris = len(triangles)\n    visited = [False] * num_tris\n    components = []\n\n    for start in range(num_tris):\n        if visited[start]:\n            continue\n        component = []\n        stack = [start]\n        visited[start] = True\n        while stack:\n            ti = stack.pop()\n            component.append(ti)\n            a, b, c = triangles[ti]\n            for v in (a, b, c):\n                for neighbor_ti in vert_to_tris.get(v, []):\n                    if not visited[neighbor_ti]:\n                        visited[neighbor_ti] = True\n                        stack.append(neighbor_ti)\n        components.append(component)\n\n    result_meshes = []\n    for comp_tris in components:\n        used_verts = {}\n        new_index = 0\n        new_points = []\n        new_indices = []\n        for ti in comp_tris:\n            a, b, c = triangles[ti]\n            for v in (a, b, c):\n                if v not in used_verts:\n                    used_verts[v] = new_index\n                    new_points.append(vertices[v])\n                    new_index += 1\n                new_indices.append(used_verts[v])\n        newMesh = Mesh.ByPointsIndices(new_points, new_indices)\n        result_meshes.append(Mesh.Repair(newMesh))\n\n    return result_meshes\n\n# Separate into components\nmesh_input = IN[0]\nif isinstance(mesh_input, list):\n    all_meshes = []\n    for m in mesh_input:\n        all_meshes.extend(separate_mesh_components(m))\nelse:\n    all_meshes = separate_mesh_components(mesh_input)\n\nOUT = all_meshes\n",
      "Engine": "PythonNet3",
      "VariableInputPorts": true,
      "Id": "90552d1391ee4f50b20296e077b47921",
      "NodeType": "PythonScriptNode",
      "Inputs": [
        {
          "Id": "74a2af57fbf84ba2b2acb5bbf516a895",
          "Name": "IN[0]",
          "Description": "Input #0",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "d0007733857e4a26b9ffe3269854c09a",
          "Name": "OUT",
          "Description": "Result of the python script",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Runs an embedded Python script."
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "14337647c22b4a658e098311c7612aee",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "020df1ab76be47099bbca572f692506d",
          "Name": "mesh",
          "Description": "Autodesk.DesignScript.Geometry.Mesh",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "bd5794a5106a4c9697bda3c86e788501",
          "Name": "point",
          "Description": "Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "a72f52e26915408499141ac947712d0e",
          "Name": "Point",
          "Description": "Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Mesh.Nearest@Autodesk.DesignScript.Geometry.Point",
      "Replication": "Auto",
      "Description": "Nearest point on the Mesh to the specified point\n\nMesh.Nearest (point: Point): Point"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "c657109c89ba4a4180b6c087228d7bad",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "05c5b22234e04b049c60e2faeadc972f",
          "Name": "geometry",
          "Description": "Autodesk.DesignScript.Geometry.Geometry",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "e61080e49f104a60a540719fd9aefd2a",
          "Name": "entity",
          "Description": "The other Geometry\n\nGeometry",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "400720b6c68d41398314a22465b627a2",
          "Name": "double",
          "Description": "The distance",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Geometry.DistanceTo@Autodesk.DesignScript.Geometry.Geometry",
      "Replication": "Auto",
      "Description": "Obtain the distance from this Geometry to another\n\nGeometry.DistanceTo (entity: Geometry): double"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "302bbc426b2f43d1bde84bf22793debd",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "22cde051281a453396751b202ae1b0f7",
          "Name": "list",
          "Description": "list of values\n\nvar[]..[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "16be55710d94480a8150b76fb383061e",
          "Name": "keyFunction",
          "Description": "function applied to the list items\n\nFunction",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "02fd9fcdf38e42ef98c17589e62fa787",
          "Name": "minimumItem",
          "Description": "Minimum item in list using keyFunction (type: var[]..[])",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "List.MinimumItemByKey@var[]..[],Function",
      "Replication": "Auto",
      "Description": "Returns the items from the list that generate the minimum values for the function supplied as the key projector\n\nList.MinimumItemByKey (list: var[]..[], keyFunction: Function): var[]..[]"
    },
    {
      "ConcreteType": "CoreNodeModels.HigherOrder.ComposeFunctions, CoreNodeModels",
      "VariableInputPorts": true,
      "Id": "267e6d0f09f74291899395b584db41bc",
      "NodeType": "ExtensionNode",
      "Inputs": [
        {
          "Id": "11902d9ff9f84e5aa5a915dff9546e65",
          "Name": "function0",
          "Description": "Function #0",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "f4656df4268d4e819bbb839d3ff5918a",
          "Name": "function1",
          "Description": "Function #1",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "6592149265664a47ab172e2cb7cd3c0e",
          "Name": "function",
          "Description": "Composed function.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Returns a single function from multiple functions"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "25eb687c8d0a4bea8dcca754e1f2e881",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "1f70d558fa9745a5a73493a6c669d0ab",
          "Name": "coordinateSystem",
          "Description": "Autodesk.DesignScript.Geometry.CoordinateSystem",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "6d8bdc38bb4a4e1389836818ad1e7125",
          "Name": "Point",
          "Description": "Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.CoordinateSystem.Origin",
      "Replication": "Auto",
      "Description": "Creates a Point representing the CoordinateSystem origin.\n\nCoordinateSystem.Origin: Point"
    },
    {
      "ConcreteType": "PythonNodeModels.PythonNode, PythonNodeModels",
      "Code": "# Generated by Autodesk Assistant at 2026-10-02T15:39:35.3905760Z\nimport sys\nimport clr\nclr.AddReference('ProtoGeometry')\nfrom Autodesk.DesignScript.Geometry import *\nfrom collections import defaultdict\n\n# Input mesh\nmesh = IN[0]\n\n# Tolerance for considering two vertices identical\nTOLERANCE = 1e-6\n\ndef round_vertex(v, tol):\n    \"\"\"Round a vertex position to a grid defined by tol.\"\"\"\n    factor = 1.0 / tol\n    return (\n        round(v.X * factor) / factor,\n        round(v.Y * factor) / factor,\n        round(v.Z * factor) / factor\n    )\n\ndef cross_product(a, b, c):\n    \"\"\"Compute the cross product of vectors (b-a) and (c-a).\"\"\"\n    ax, ay, az = b.X - a.X, b.Y - a.Y, b.Z - a.Z\n    bx, by, bz = c.X - a.X, c.Y - a.Y, c.Z - a.Z\n    return (\n        ay * bz - az * by,\n        az * bx - ax * bz,\n        ax * by - ay * bx\n    )\n\n# --- Step 1: Extract vertices and faces ---\nraw_vertices = mesh.VertexPositions\nraw_faces    = mesh.FaceIndices\n\n# --- Step 2: Build deduplication map with defaultdict ---\nkey_to_new_index = defaultdict(lambda: -1)\nnew_vertices     = []\nold_to_new       = []\n\nfor old_idx, pt in enumerate(raw_vertices):\n    key = round_vertex(pt, TOLERANCE)\n    if key_to_new_index[key] == -1:\n        new_idx = len(new_vertices)\n        key_to_new_index[key] = new_idx\n        new_vertices.append(pt)\n    old_to_new.append(key_to_new_index[key])\n\n# --- Step 3: Remap face indices and ensure normals point upward (Z > 0) ---\nnew_face_indices = []\nfor face in raw_faces:\n    a = old_to_new[face.A]\n    b = old_to_new[face.B]\n    c = old_to_new[face.C]\n\n    # Compute face normal via cross product\n    nx, ny, nz = cross_product(new_vertices[a], new_vertices[b], new_vertices[c])\n\n    # If the Z component is negative, the normal points downward - flip winding\n    if nz < 0:\n        a, b, c = a, c, b\n\n    new_face_indices.append(IndexGroup.ByIndices(a, b, c))\n\n# --- Step 4: Rebuild the mesh ---\nclean_mesh = Mesh.ByPointsFaceIndices(new_vertices, new_face_indices)\n\nOUT = clean_mesh",
      "Engine": "PythonNet3",
      "VariableInputPorts": true,
      "Id": "6def0bd91a184224b9d016784b0c7203",
      "NodeType": "PythonScriptNode",
      "Inputs": [
        {
          "Id": "7835a306e9604551ba5837fd009267d8",
          "Name": "IN[0]",
          "Description": "Input #0",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "ceac0f577ea14228b1054291359cd051",
          "Name": "OUT",
          "Description": "Result of the python script",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Runs an embedded Python script."
    },
    {
      "ConcreteType": "PythonNodeModels.PythonNode, PythonNodeModels",
      "Code": "# Generated by Autodesk Assistant at 2026-10-02T15:53:47.4820749Z\nimport sys\nimport clr\nclr.AddReference('ProtoGeometry')\nfrom Autodesk.DesignScript.Geometry import *\n\n# Input: cleaned mesh from previous node\nmesh = IN[0]\n\n# --- Step 1: Get the bounding box of the mesh ---\nbbox = mesh.BoundingBox()\n\n# --- Step 2: Expand the bounding box 10 units up and 10 units down ---\nmin_pt = bbox.MinPoint\nmax_pt = bbox.MaxPoint\n\nexpanded_min = Point.ByCoordinates(min_pt.X, min_pt.Y, min_pt.Z - 10)\nexpanded_max = Point.ByCoordinates(max_pt.X, max_pt.Y, max_pt.Z + 10)\n\nexpanded_bbox = BoundingBox.ByCorners(expanded_min, expanded_max)\n\n# --- Step 3: Convert expanded bounding box to a cuboid ---\ncuboid = expanded_bbox.ToCuboid()\n\n# --- Step 4: Convert the cuboid to a mesh (intersection tool) ---\ntool_mesh = Mesh.ByGeometry(cuboid)\n\n# --- Step 5: Boolean intersect the original mesh with the cuboid mesh ---\nresult = Mesh.BooleanIntersection(mesh, tool_mesh)\n\nOUT = Mesh.Repair(result)",
      "Engine": "PythonNet3",
      "VariableInputPorts": true,
      "Id": "2d0fde66ca2e493f97b8eb8eb63965ce",
      "NodeType": "PythonScriptNode",
      "Inputs": [
        {
          "Id": "37358d8b7b5841ea8fe5ca35a0f0c29a",
          "Name": "IN[0]",
          "Description": "Input #0",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "b0d28079ed3c4dbba8f349c648fc4c99",
          "Name": "OUT",
          "Description": "Result of the python script",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Runs an embedded Python script."
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "bc71d8f839dc441baac2febde5e7d3fc",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "b6a0a65ca3fa43e78f8735e8ef18ed3b",
          "Name": "bb",
          "Description": "bb",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "06e28dfd8012424dbc8686c2dc22e255",
          "Name": "x",
          "Description": "x",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "943fcbe85d5a446c893bafce65d1153f",
          "Name": "function",
          "Description": "bb.MinPoint.Translate(x, x, 0)",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "5a3402a619184b2ea6c8a8748ffc283e",
          "Name": "function",
          "Description": "bb.MaxPoint.Translate(-x, -x, 0)",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "bb.MinPoint.Translate(x,x,0);\nbb.MaxPoint.Translate(-x,-x,0);"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "f495b8a4261349f5b67953eee9f2bc1f",
      "NodeType": "CodeBlockNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "8705621d5e0d4d9bac876b755d6ec2e6",
          "Name": "integer",
          "Description": "30",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "30;"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "84768fa30a7749f98b022907cffe7106",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "5907db7f447542a39b711fd5da4675e3",
          "Name": "min",
          "Description": "Point\nDefault value : Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0)",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "0c624dc57b88428aabbaa745be11e0ea",
          "Name": "max",
          "Description": "Point\nDefault value : Autodesk.DesignScript.Geometry.Point.ByCoordinates(1, 1, 1)",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "d2db5b3361a64c6abb5e32a90ce41ec3",
          "Name": "BoundingBox",
          "Description": "BoundingBox",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.BoundingBox.ByCorners@Autodesk.DesignScript.Geometry.Point,Autodesk.DesignScript.Geometry.Point",
      "Replication": "Auto",
      "Description": "Creates the an axis-aligned BoundingBox spanning between the minimum Point and the maximum Point.\n\nBoundingBox.ByCorners (min: Point = Autodesk.DesignScript.Geometry.Point.ByCoordinates(0, 0, 0), max: Point = Autodesk.DesignScript.Geometry.Point.ByCoordinates(1, 1, 1)): BoundingBox"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "98ba454560614471aba5eb83d061767e",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "833b854979e1446a87e69ec86aad26f3",
          "Name": "mesh",
          "Description": "Autodesk.DesignScript.Geometry.Mesh",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "914a4057964a4fd29a7bc328be54e3d4",
          "Name": "volume",
          "Description": "volume",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Mesh.Volume",
      "Replication": "Auto",
      "Description": "Returns the volume of the provided Mesh\n\nMesh.Volume: double"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "6ec1262fbfb049aea070d091f486dd93",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "40dbc51eeb2e450fba51163e8c99de16",
          "Name": "mesh",
          "Description": "The Mesh on which to apply the colors\n\nMesh",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "bd579c83e8a24a9fab89ce84f3c7a62b",
          "Name": "colors",
          "Description": "The color count must equal 1 (single color), or equal the face count (per-face color), or equal the vertex count (per-vertex color), or equal the triangle count multiplied by three (per-triangle-vertex color)\n\nColor[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "acb04721e0124fc290a6b3a385c0adf5",
          "Name": "smoothShading",
          "Description": "If true, shading will look smooth instead of faceted, useful for visualizing smooth continuous surfaces\n\nbool\nDefault value : false",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "8691049c6006490897602d44ffd5b148",
          "Name": "GeometryColor",
          "Description": "A Display object.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Modifiers.GeometryColor.ByMeshColors@Autodesk.DesignScript.Geometry.Mesh,DSCore.Color[],bool",
      "Replication": "Auto",
      "Description": "Display mesh by single color, per-face colors, per-vertex colors, or per-face-vertex colors.\n\nGeometryColor.ByMeshColors (mesh: Mesh, colors: Color[], smoothShading: bool = false): GeometryColor"
    },
    {
      "ConcreteType": "CoreNodeModels.Input.ColorPalette, CoreNodeModels",
      "InputValue": {
        "R": 255,
        "G": 0,
        "B": 0,
        "A": 255
      },
      "Id": "17837e0043924dc9a011877a8d0c6718",
      "NodeType": "ColorInputNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "02dd3351ebf94579a834ec9f6656320b",
          "Name": "Color",
          "Description": "Selected color",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Select a Color from the palette"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "2cb3eff007c54d4481af869b6ad3def8",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "fbc73f322b494a17b3efdaee8abf3170",
          "Name": "mesh",
          "Description": "The Mesh on which to apply the colors\n\nMesh",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "20e9dab12bf0430fb1cdc2a42556e6a9",
          "Name": "colors",
          "Description": "The color count must equal 1 (single color), or equal the face count (per-face color), or equal the vertex count (per-vertex color), or equal the triangle count multiplied by three (per-triangle-vertex color)\n\nColor[]",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "f708ecd1f1604cd38213fc8d36771633",
          "Name": "smoothShading",
          "Description": "If true, shading will look smooth instead of faceted, useful for visualizing smooth continuous surfaces\n\nbool\nDefault value : false",
          "UsingDefaultValue": true,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "aa88955a0f504e5395c276961b17b0ec",
          "Name": "GeometryColor",
          "Description": "A Display object.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Modifiers.GeometryColor.ByMeshColors@Autodesk.DesignScript.Geometry.Mesh,DSCore.Color[],bool",
      "Replication": "Auto",
      "Description": "Display mesh by single color, per-face colors, per-vertex colors, or per-face-vertex colors.\n\nGeometryColor.ByMeshColors (mesh: Mesh, colors: Color[], smoothShading: bool = false): GeometryColor"
    },
    {
      "ConcreteType": "CoreNodeModels.Input.ColorPalette, CoreNodeModels",
      "InputValue": {
        "R": 59,
        "G": 254,
        "B": 5,
        "A": 255
      },
      "Id": "89dd5ff11b7843f1a4252110ccaee45e",
      "NodeType": "ColorInputNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "6bea2a2f0e634db397118dca36a69987",
          "Name": "Color",
          "Description": "Selected color",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Select a Color from the palette"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "b6fa934226084f348d04a7312709ec39",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "0b2e7630ca1a4a13977878756f49459f",
          "Name": "point",
          "Description": "Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "5a92ec71673a498f84e23692a1dc4f0b",
          "Name": "label",
          "Description": "string",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "9ec60cc3276c409389598db6ffcdbd88",
          "Name": "Label",
          "Description": "Label",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Analysis.Label.ByPointAndString@Autodesk.DesignScript.Geometry.Point,string",
      "Replication": "Auto",
      "Description": "Returns a Label object given a point object and a string label.\n\nLabel.ByPointAndString (point: Point, label: string): Label"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "e9bbf60d00d849e3a8b5bc652f2a6876",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "5d8b0a6f819a4454a62b294722af49d1",
          "Name": "mesh",
          "Description": "Autodesk.DesignScript.Geometry.Mesh",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "55725e2b931841459f687d94781ebd19",
          "Name": "BoundingBox",
          "Description": "BoundingBox",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.Mesh.BoundingBox",
      "Replication": "Auto",
      "Description": "Mesh.BoundingBox ( ): BoundingBox"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "c01027d862454fd8b19a590808b0c488",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "90c1b0e6c6994cb78697d29ab10f0ff9",
          "Name": "boundingBox",
          "Description": "Autodesk.DesignScript.Geometry.BoundingBox",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "f08a8df8aaab4c2d88a89410e801b618",
          "Name": "Point",
          "Description": "Point",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "Autodesk.DesignScript.Geometry.BoundingBox.MaxPoint",
      "Replication": "Auto",
      "Description": "The maximum point\n\nBoundingBox.MaxPoint: Point"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "35fb9dc062804d589d13718e468fa495",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "6043f4174de243c6a303bb7b611240f3",
          "Name": "fldHt",
          "Description": "fldHt",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        },
        {
          "Id": "a7ebed9ca3904417bf1b346464f13199",
          "Name": "n",
          "Description": "n",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "9f99c1a90fb84ce8b5cc942dff478de2",
          "Name": "function",
          "Description": "((fldHt + \"Flood Volume: \") + n) + \"\r\n\r\n \"",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "fldHt+\"Flood Volume: \"+n+\"\\r\\n\\r\\n \";"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.ZeroTouch.DSFunction, DynamoCore",
      "Id": "61577c41f85b4236939e3b793d954bac",
      "NodeType": "FunctionNode",
      "Inputs": [
        {
          "Id": "e221b0edeeac4fe4b5b894a8f4a090ac",
          "Name": "number",
          "Description": "Number to round.\n\ndouble",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "e49a394597e3484c9ad026a2d361cba1",
          "Name": "number",
          "Description": "Integral value closes to the number.",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "FunctionSignature": "DSCore.Math.Round@double",
      "Replication": "Auto",
      "Description": "Rounds a number to the closest integral value. Note that this method returns a double-precision floating-point number instead of an integral type.\n\nMath.Round (number: double): double"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "c29dcd91a9ef45499030ea6393ebdca9",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "6cd25559419d402f8a18c651213e90f1",
          "Name": "b",
          "Description": "b",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "83867bdc1780496390663ba8d329b16d",
          "Name": "a",
          "Description": "a : int = b",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "a: int = b;"
    },
    {
      "ConcreteType": "Dynamo.Graph.Nodes.CodeBlockNodeModel, DynamoCore",
      "Id": "25656a171df74c01bcb3cdadec27bb89",
      "NodeType": "CodeBlockNode",
      "Inputs": [
        {
          "Id": "c63fae3b79ae4a9d8ba6911d3ecd04e2",
          "Name": "n",
          "Description": "n",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Outputs": [
        {
          "Id": "da4c6ea6697f4ddc9dbcebd92c63e9d7",
          "Name": "function",
          "Description": "(\"FloodHeight: \" + n) + \"\n\"",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Allows for DesignScript code to be authored directly",
      "Code": "\"FloodHeight: \"+n+\"\\n\";"
    },
    {
      "ConcreteType": "CoreNodeModels.Input.DoubleSlider, CoreNodeModels",
      "NumberType": "Double",
      "MaximumValue": 5.0,
      "MinimumValue": 0.0,
      "StepValue": 0.1,
      "Id": "5f20585b547d44abbb0ceeee3d67c332",
      "NodeType": "NumberInputNode",
      "Inputs": [],
      "Outputs": [
        {
          "Id": "6d0ac08e020942f283e0272f26af8ec4",
          "Name": "",
          "Description": "Double",
          "UsingDefaultValue": false,
          "Level": 2,
          "UseLevels": false,
          "KeepListStructure": false
        }
      ],
      "Replication": "Disabled",
      "Description": "Produces numeric values",
      "InputValue": 4.3
    }
  ],
  "Connectors": [
    {
      "Start": "d466068a770c441496ae54b3d46b8375",
      "End": "862e3113a65e442dacde6fe1f06cb080",
      "Id": "efcc19636a184019aca5fae5e606bed9",
      "IsHidden": "False"
    },
    {
      "Start": "94a7b802c6074884ad40bfa2c86782b7",
      "End": "b2e53f8bcdf049baad745f1a97613b5d",
      "Id": "c57dec4a37dc4ca59344b9a09934004d",
      "IsHidden": "False"
    },
    {
      "Start": "3eb2dd40901a4472bb14f8798ad751a8",
      "End": "a789fbaa2e194de3a4626dac41388ad2",
      "Id": "0dd3c27f537d4730b3fada6adf2ece75",
      "IsHidden": "False"
    },
    {
      "Start": "dc58bbba1e75468ab0568b117ffd9789",
      "End": "062c58d799e04313bd3c788bfe4e564e",
      "Id": "253fbbe0182a47dfbfdf00a89a571fdd",
      "IsHidden": "False"
    },
    {
      "Start": "1630a5c81b934c32855c601b152402ae",
      "End": "0b52b64c85214a20b1cca7eba11c52c3",
      "Id": "027e7240009943fabf7302bd872ab331",
      "IsHidden": "False"
    },
    {
      "Start": "9963dff9b0ba47a18ff6b20d6ce589d9",
      "End": "03e9a4d9c23047768efdb28f7146cef3",
      "Id": "1140e564c1e64b64b18f99c92e978e68",
      "IsHidden": "False"
    },
    {
      "Start": "5f0e1c53345646f48195816d398c2cf6",
      "End": "17ca44ca871b4e04b9ce5e4c4a09e27d",
      "Id": "146bdce74add444091de4ef984258af3",
      "IsHidden": "False"
    },
    {
      "Start": "c24fbf76ab7f4285877d9f75a8bb91ee",
      "End": "e0ea4e2d3e8846f1866ff7aa5ff89a87",
      "Id": "6140c1dde43f43f0a9fc705215811a0f",
      "IsHidden": "False"
    },
    {
      "Start": "c24fbf76ab7f4285877d9f75a8bb91ee",
      "End": "f6a596a6130348f98c83bfcaacbf13d4",
      "Id": "abb50ae6706d4d378ae8241c171b6bd3",
      "IsHidden": "False"
    },
    {
      "Start": "c24fbf76ab7f4285877d9f75a8bb91ee",
      "End": "1f70d558fa9745a5a73493a6c669d0ab",
      "Id": "bfa588e2fb0a4168968d7382dce4043a",
      "IsHidden": "False"
    },
    {
      "Start": "e0866cfba2e04668b7e809340d8a494b",
      "End": "bfa01b4007c04748924c2b104ddb64dd",
      "Id": "0550ace4cecf4330945b5b9d7c4e08d4",
      "IsHidden": "False"
    },
    {
      "Start": "c06ccd2b87e54eb7826c07f9a408b898",
      "End": "82848917bb7749ccba720de88a1750fe",
      "Id": "b9b840a2182c4e088fa7e73593ec1750",
      "IsHidden": "False"
    },
    {
      "Start": "6c6165999ba94ad396a2e6853cb7a9d8",
      "End": "46aa29975b474afab1408da1d299a9b6",
      "Id": "eda2fe578648493b90da386bbd60233e",
      "IsHidden": "False"
    },
    {
      "Start": "c402bfc337c94346a06d1c4ca99e858d",
      "End": "33e46adfc7d1422e87218b55731576d9",
      "Id": "cdaaadd34de84f1d8d54e6c0ac9d14d2",
      "IsHidden": "False"
    },
    {
      "Start": "b0a3d484ef404f578bcc8bf22a2a5814",
      "End": "65f0d9fc3cfa4670900f024374fa1206",
      "Id": "4872273effcc462c88fd9b3bf371425e",
      "IsHidden": "False"
    },
    {
      "Start": "9b0e468833cf448a862df5b50934135d",
      "End": "e7b13919c1ca4067814e3800d13c1050",
      "Id": "dab18a59ac7d43d7b920adc60d432ae8",
      "IsHidden": "False"
    },
    {
      "Start": "b8d5b0e120214a089bc0c350cfa58175",
      "End": "21bb57731d8d4c2ab8fdf5d10abe42c0",
      "Id": "52885f8b9e6a476d86c798eb058f0f04",
      "IsHidden": "False"
    },
    {
      "Start": "322c4a6d684c4b6292eee656892b8786",
      "End": "63aaf39e524545368573e3de2666b726",
      "Id": "da014a74b7564149a81179f096fd7898",
      "IsHidden": "False"
    },
    {
      "Start": "ca6b95d018b2498c9ba0cc91834396dd",
      "End": "e26982b7d9304d0589739fb27952ccb3",
      "Id": "7108c0fddc704ef78fd8f349086516e3",
      "IsHidden": "False"
    },
    {
      "Start": "5c7e645d0eb24029be8c42214bca75d6",
      "End": "17daa9edeea44888892d784c5efef7ac",
      "Id": "3156b99efe534ec89044e4c9fa86c9fd",
      "IsHidden": "False"
    },
    {
      "Start": "b01ad69edac94bbc98303dfd89e82ad7",
      "End": "0c7cb83d5bdc44ea95ecff5f677b3d53",
      "Id": "87031e92744044ef91db8f9e54ceb2ae",
      "IsHidden": "False"
    },
    {
      "Start": "21aff54ea2d44e6eb41ad6c353defc0d",
      "End": "cd04549a17894b82aa3c2f862239d5e7",
      "Id": "1e908645d25a4c659a931690bbc2275a",
      "IsHidden": "False"
    },
    {
      "Start": "a541fa1de6cc4387a116e2ecae64f728",
      "End": "cd70d47b218f49a98db2ccb4721ec159",
      "Id": "1da0223b584f451c94798891244145eb",
      "IsHidden": "False"
    },
    {
      "Start": "97ade6c9766f4587b4e558f3f97810bd",
      "End": "b39e7552ed9e45e4ab44c52fe8100c9c",
      "Id": "d978ec202aed4a8da3d78d02e028152a",
      "IsHidden": "False"
    },
    {
      "Start": "f63052b0580a49be950d5d535af73e26",
      "End": "a4931840502144feabc78053f04dbbd8",
      "Id": "2c5ef6ff0c0f4a5caa9a83612cabee87",
      "IsHidden": "False"
    },
    {
      "Start": "f94de410eefe4a2eb7f0bdc8bc9c75b2",
      "End": "3a4b420ec60e4bad9e7baddd8a7b564d",
      "Id": "9388f883ca754b8c95bcac70dc96637f",
      "IsHidden": "False"
    },
    {
      "Start": "f94de410eefe4a2eb7f0bdc8bc9c75b2",
      "End": "e2cbe8fec00844e5bc518dc8c9fedc1e",
      "Id": "c0437069060a449b8ed6c2c10aac2ddb",
      "IsHidden": "False"
    },
    {
      "Start": "e2077272fa674ed0a97f33894e199bd4",
      "End": "b6a0a65ca3fa43e78f8735e8ef18ed3b",
      "Id": "dc611f9b74ae48568169745b32d3373a",
      "IsHidden": "False"
    },
    {
      "Start": "3d624abde4df4e71a5fa7cae3b5bb92d",
      "End": "3c1c3cbd95f74ba390edbba15dc0030e",
      "Id": "c3186be21d284661bfc21748b148d30e",
      "IsHidden": "False"
    },
    {
      "Start": "8df89b10c1c74ee3b423e47bd9d65c54",
      "End": "7835a306e9604551ba5837fd009267d8",
      "Id": "f2432f7cc0964822bde8be52a4ee7af6",
      "IsHidden": "False"
    },
    {
      "Start": "8df89b10c1c74ee3b423e47bd9d65c54",
      "End": "cd7962f570c54cb4abf84e3a0c089705",
      "Id": "7af881d61cf842f0aadf73cde36b8a13",
      "IsHidden": "False"
    },
    {
      "Start": "cdac7e19f6a14f11ae67169da5130e6c",
      "End": "508f9f19863c4d6f837e9b852a696319",
      "Id": "8382d6700af34f228e8b3c8bf3c3bcad",
      "IsHidden": "False"
    },
    {
      "Start": "8bd75190fbee48c68495fbfe8765e0d3",
      "End": "a1c171afa8994579bb2a813499b32cab",
      "Id": "c255ed0e2caf4c9f8fee19f2eabd6db3",
      "IsHidden": "False"
    },
    {
      "Start": "de284a068b5342f782c4345cabfd0cf1",
      "End": "2ede6ad3382c45419c2f0ef3ed6ed040",
      "Id": "940bf60139634ec29bee7a8686833420",
      "IsHidden": "False"
    },
    {
      "Start": "4d53f146f33f4752a1c2d6f8ea01b059",
      "End": "74a2af57fbf84ba2b2acb5bbf516a895",
      "Id": "70b57fa240df40ca8d1ee44f25299ed0",
      "IsHidden": "False"
    },
    {
      "Start": "d0007733857e4a26b9ffe3269854c09a",
      "End": "22cde051281a453396751b202ae1b0f7",
      "Id": "369f56db9a104c689196034628d14f5d",
      "IsHidden": "False"
    },
    {
      "Start": "a72f52e26915408499141ac947712d0e",
      "End": "11902d9ff9f84e5aa5a915dff9546e65",
      "Id": "b3ce1244b9e342dda91ccf47280500a2",
      "IsHidden": "False"
    },
    {
      "Start": "400720b6c68d41398314a22465b627a2",
      "End": "f4656df4268d4e819bbb839d3ff5918a",
      "Id": "13b7f90caf5f471388bebdf196fe66da",
      "IsHidden": "False"
    },
    {
      "Start": "02fd9fcdf38e42ef98c17589e62fa787",
      "End": "833b854979e1446a87e69ec86aad26f3",
      "Id": "e5662db117eb41f2922235168360b634",
      "IsHidden": "False"
    },
    {
      "Start": "02fd9fcdf38e42ef98c17589e62fa787",
      "End": "40dbc51eeb2e450fba51163e8c99de16",
      "Id": "e5fcc23c197a4200bba1781b098e82f9",
      "IsHidden": "False"
    },
    {
      "Start": "6592149265664a47ab172e2cb7cd3c0e",
      "End": "16be55710d94480a8150b76fb383061e",
      "Id": "d43fa80d92aa4028880089abc9552edd",
      "IsHidden": "False"
    },
    {
      "Start": "6d8bdc38bb4a4e1389836818ad1e7125",
      "End": "bd5794a5106a4c9697bda3c86e788501",
      "Id": "54c69b08a6d843838c7db17462f8adca",
      "IsHidden": "False"
    },
    {
      "Start": "6d8bdc38bb4a4e1389836818ad1e7125",
      "End": "e61080e49f104a60a540719fd9aefd2a",
      "Id": "6f2af7ddd8be402eb5f05d4378e7091a",
      "IsHidden": "False"
    },
    {
      "Start": "ceac0f577ea14228b1054291359cd051",
      "End": "37358d8b7b5841ea8fe5ca35a0f0c29a",
      "Id": "b332d1aba51344b1b1bf135b34df9a39",
      "IsHidden": "False"
    },
    {
      "Start": "b0d28079ed3c4dbba8f349c648fc4c99",
      "End": "a437690bc98848f3b3ad5dfbdcb14182",
      "Id": "7825bcb314444e228393e83a9df71b76",
      "IsHidden": "False"
    },
    {
      "Start": "b0d28079ed3c4dbba8f349c648fc4c99",
      "End": "424c7c732b2540bebf10cc967ceee97e",
      "Id": "cdffa005fbd74eb18f38668be77bacef",
      "IsHidden": "False"
    },
    {
      "Start": "b0d28079ed3c4dbba8f349c648fc4c99",
      "End": "fbc73f322b494a17b3efdaee8abf3170",
      "Id": "51840e979fc34bcaac83993259f7c2d7",
      "IsHidden": "False"
    },
    {
      "Start": "b0d28079ed3c4dbba8f349c648fc4c99",
      "End": "5d8b0a6f819a4454a62b294722af49d1",
      "Id": "105456c49bec498b924d7490982adf3f",
      "IsHidden": "False"
    },
    {
      "Start": "943fcbe85d5a446c893bafce65d1153f",
      "End": "5907db7f447542a39b711fd5da4675e3",
      "Id": "207c5d977bff4003b2e46a992e44f276",
      "IsHidden": "False"
    },
    {
      "Start": "5a3402a619184b2ea6c8a8748ffc283e",
      "End": "0c624dc57b88428aabbaa745be11e0ea",
      "Id": "a0ccc1ca60714b2abf0418f3d248fce2",
      "IsHidden": "False"
    },
    {
      "Start": "8705621d5e0d4d9bac876b755d6ec2e6",
      "End": "06e28dfd8012424dbc8686c2dc22e255",
      "Id": "3b2fb29b162543f59d611d2e208390f8",
      "IsHidden": "False"
    },
    {
      "Start": "d2db5b3361a64c6abb5e32a90ce41ec3",
      "End": "30336e7332bc45928424febb7044255c",
      "Id": "d3fbcdd3eef74cf3b738d708042ca7f0",
      "IsHidden": "False"
    },
    {
      "Start": "914a4057964a4fd29a7bc328be54e3d4",
      "End": "e221b0edeeac4fe4b5b894a8f4a090ac",
      "Id": "40c2a0bfea8d4ea6b5648d80ac75068e",
      "IsHidden": "False"
    },
    {
      "Start": "02dd3351ebf94579a834ec9f6656320b",
      "End": "bd579c83e8a24a9fab89ce84f3c7a62b",
      "Id": "194cbd6cd0c146c9b845ea8d4b4e42f8",
      "IsHidden": "False"
    },
    {
      "Start": "6bea2a2f0e634db397118dca36a69987",
      "End": "20e9dab12bf0430fb1cdc2a42556e6a9",
      "Id": "8e19f663a2b04009b5f978759c2e0c1d",
      "IsHidden": "False"
    },
    {
      "Start": "55725e2b931841459f687d94781ebd19",
      "End": "90c1b0e6c6994cb78697d29ab10f0ff9",
      "Id": "66dcd5e7d10b4d2a921d49183afcfe67",
      "IsHidden": "False"
    },
    {
      "Start": "f08a8df8aaab4c2d88a89410e801b618",
      "End": "0b2e7630ca1a4a13977878756f49459f",
      "Id": "e46f7e1eeee74095a7d7f928cd7a81db",
      "IsHidden": "False"
    },
    {
      "Start": "9f99c1a90fb84ce8b5cc942dff478de2",
      "End": "5a92ec71673a498f84e23692a1dc4f0b",
      "Id": "fd08b3cdf5804bea9d72328eb2a118b8",
      "IsHidden": "False"
    },
    {
      "Start": "e49a394597e3484c9ad026a2d361cba1",
      "End": "6cd25559419d402f8a18c651213e90f1",
      "Id": "2948b16dbe80453184d4f835789cedb6",
      "IsHidden": "False"
    },
    {
      "Start": "83867bdc1780496390663ba8d329b16d",
      "End": "a7ebed9ca3904417bf1b346464f13199",
      "Id": "1797153dbb1d488da91359ea2e84f9d0",
      "IsHidden": "False"
    },
    {
      "Start": "da4c6ea6697f4ddc9dbcebd92c63e9d7",
      "End": "6043f4174de243c6a303bb7b611240f3",
      "Id": "0012e3e1484d41f5ad9571a313fb0044",
      "IsHidden": "False"
    },
    {
      "Start": "6d0ac08e020942f283e0272f26af8ec4",
      "End": "f15dc7a52313460180ad525ae0a1f671",
      "Id": "63b866c53f8d435e94c1180f95cbf5be",
      "IsHidden": "False"
    },
    {
      "Start": "6d0ac08e020942f283e0272f26af8ec4",
      "End": "c63fae3b79ae4a9d8ba6911d3ecd04e2",
      "Id": "b1c6ee02293e487594bc506cc99db708",
      "IsHidden": "False"
    }
  ],
  "Dependencies": [],
  "NodeLibraryDependencies": [
    {
      "Name": "DynamoFormaBeta",
      "Version": "8.1.0",
      "ReferenceType": "Package",
      "Nodes": [
        "4e56faa5347741568e0316bc42ec4f26",
        "8d56fb7c9d774220b1439a46a60c9be3",
        "0a1597e817d9436eaef0031cc07a6776",
        "886184ce6f1f4c959855e279a7b78b7c"
      ]
    }
  ],
  "EnableLegacyPolyCurveBehavior": false,
  "Thumbnail": "",
  "GraphDocumentationURL": null,
  "ExtensionWorkspaceData": [
    {
      "ExtensionGuid": "28992e1d-abb9-417f-8b1b-05e053bee670",
      "Name": "Properties",
      "Version": "4.2",
      "Data": {}
    }
  ],
  "Author": "",
  "Linting": {
    "activeLinter": "None",
    "activeLinterId": "7b75fb44-43fd-4631-a878-29f4d5d8399a",
    "warningCount": 0,
    "errorCount": 0
  },
  "Bindings": [],
  "View": {
    "Dynamo": {
      "ScaleFactor": 1.0,
      "HasRunWithoutCrash": true,
      "IsVisibleInDynamoLibrary": true,
      "Version": "4.2.2.6377",
      "RunType": "Automatic",
      "RunPeriod": "2000"
    },
    "Camera": {
      "Name": "_Background Preview",
      "EyeX": 1077.507080078125,
      "EyeY": 928.9025268554688,
      "EyeZ": 1501.6383056640625,
      "LookX": -612.9036254882812,
      "LookY": -983.213623046875,
      "LookZ": -1729.8353271484375,
      "UpX": -0.15771420300006866,
      "UpY": 0.8814777731895447,
      "UpZ": -0.44511038064956665
    },
    "ConnectorPins": [
      {
        "Left": 2236.832046837329,
        "Top": 474.60347614286115,
        "IsHidden": false,
        "ConnectorGuid": "7af881d61cf842f0aadf73cde36b8a13"
      },
      {
        "Left": 2588.0886881008073,
        "Top": 1239.9155813543994,
        "IsHidden": false,
        "ConnectorGuid": "bfa588e2fb0a4168968d7382dce4043a"
      },
      {
        "Left": 7611.329711295925,
        "Top": 1785.6626058807399,
        "IsHidden": false,
        "ConnectorGuid": "b1c6ee02293e487594bc506cc99db708"
      }
    ],
    "NodeViews": [
      {
        "Id": "4e56faa5347741568e0316bc42ec4f26",
        "Name": "Select Terrain",
        "IsSetAsInput": true,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 5.043036919006056,
        "Y": 769.3269465158842
      },
      {
        "Id": "8d56fb7c9d774220b1439a46a60c9be3",
        "Name": "Element.MeshRepresentation",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 631.5409507526308,
        "Y": 1121.3101797209583
      },
      {
        "Id": "0f3029df17d34f33a3b8b3bb9fe33dc7",
        "Name": "Mesh.ByPointsIndices",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 955.1789579955328,
        "Y": 1121.3101797209583
      },
      {
        "Id": "0a1597e817d9436eaef0031cc07a6776",
        "Name": "Select Water Body Flow Path",
        "IsSetAsInput": true,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": -106.95696308099394,
        "Y": 477.5049292628421
      },
      {
        "Id": "886184ce6f1f4c959855e279a7b78b7c",
        "Name": "Element.Footprint",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 546.6604934754414,
        "Y": 53.49494074966776
      },
      {
        "Id": "83735af3b60e4dac934ed7b45ad94f86",
        "Name": "List.FirstItem",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 805.911413916484,
        "Y": 53.49494074966776
      },
      {
        "Id": "b355078ab5fa4a238adbc90179cf7ab8",
        "Name": "Curve.CoordinateSystemAtParameter",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 1578.6985713387876,
        "Y": 206.13295299501874
      },
      {
        "Id": "97c91216ca7a4268b9ac769b2af9e5bb",
        "Name": "Relative Dam Location",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": -168.15696308099393,
        "Y": 625.8159378893631
      },
      {
        "Id": "d1fd87ba946d4b0a8f3550a145247a1a",
        "Name": "Line.ByBestFitThroughPoints",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 2764.9074224790197,
        "Y": 204.1908562038335
      },
      {
        "Id": "8392c8390bbe47a79b37b13ebda86683",
        "Name": "Point.ByCartesianCoordinates",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 2419.3806847090696,
        "Y": 204.1908562038335
      },
      {
        "Id": "86b63fe1d8a244898076d41def2335d6",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 2222.3052928235265,
        "Y": 300.5908562038336
      },
      {
        "Id": "bf584e5003d8414c9ed0a75eb5d080fc",
        "Name": "Number",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 2063.9548635924125,
        "Y": 300.5908562038336
      },
      {
        "Id": "150eba3d761e41da913f67d15f180265",
        "Name": "CoordinateSystem.Origin",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 2133.333587951062,
        "Y": 514.6262387230945
      },
      {
        "Id": "3317a24303ea4159b8c164bc380f46a3",
        "Name": "Mesh.Project",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 2624.617553960231,
        "Y": 478.0166707983476
      },
      {
        "Id": "9a18e48d202a4d5a9a87d0e6c9c65e36",
        "Name": "Vector.ZAxis",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 2422.1331782582106,
        "Y": 594.943947850016
      },
      {
        "Id": "9f5909e525e04b9994ddffb51f5878ab",
        "Name": "Point.Z",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 2832.6173163574454,
        "Y": 478.0166707983476
      },
      {
        "Id": "dfbfd06ffcf04a15ac04314dca0c5087",
        "Name": "+",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 3066.391250988536,
        "Y": 631.8325005333422
      },
      {
        "Id": "be655a6856e546fdaee36713bdbae033",
        "Name": "Curve.Extrude",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 3442.6423462733283,
        "Y": 204.1908562038335
      },
      {
        "Id": "61a8f307085e43c9a531a4045c805c0b",
        "Name": "Vector.ZAxis",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 3133.5360541279592,
        "Y": 295.07503771118286
      },
      {
        "Id": "b4343873be004094b07a1c8a6352e14d",
        "Name": "Surface.PerimeterCurves",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 3716.625066511777,
        "Y": 204.1908562038335
      },
      {
        "Id": "099bf62803704a52a9a6d459a0affd39",
        "Name": "PolyCurve.ByJoinedCurves",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 4043.0913559844466,
        "Y": 204.1908562038335
      },
      {
        "Id": "e5ac30623ac94ee499fff389693ea6e9",
        "Name": "Curve.SweepAsSolid",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 4459.810026554862,
        "Y": 36.321972600955974
      },
      {
        "Id": "9d122493ec394d978fe7aa17d3036b8b",
        "Name": "Curve.TrimByEndParameter",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 1242.6300118290706,
        "Y": 53.49494074966776
      },
      {
        "Id": "e79dc44766ac47c7aa5fbbe525ea8068",
        "Name": "Mesh.BoundingBox",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 3473.3473976909863,
        "Y": 990.937442080507
      },
      {
        "Id": "02f9d4fcf2bc4707ac4ee6729363d0bf",
        "Name": "BoundingBox.ToCuboid",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 4754.19035295365,
        "Y": 990.937442080507
      },
      {
        "Id": "37b56e5eb0d2430c909289ee0e95f5b8",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 1234.7692370084567,
        "Y": 1121.3101797209583
      },
      {
        "Id": "e48e14adb4484a9dbcb8988ac845fa1a",
        "Name": "Geometry.Intersect",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 5158.954381156717,
        "Y": 938.8160468510041
      },
      {
        "Id": "8944ca2882d543e5afbd42a3ae8ab2b0",
        "Name": "Mesh.ByGeometry",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 5774.767259015672,
        "Y": 938.8160468510041
      },
      {
        "Id": "d8a3700f635840fdbc9e57600a56594a",
        "Name": "Solid.ByUnion",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 5510.580512090792,
        "Y": 938.8160468510041
      },
      {
        "Id": "64132a055b4947a4a893b97c7344d366",
        "Name": "Mesh.BooleanDifference",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 6101.35261501628,
        "Y": 1072.215334398535
      },
      {
        "Id": "90552d1391ee4f50b20296e077b47921",
        "Name": "Mesh.Separate",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 6495.5284475736025,
        "Y": 1072.215334398535
      },
      {
        "Id": "14337647c22b4a658e098311c7612aee",
        "Name": "Mesh.Nearest",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 7138.28897344212,
        "Y": 1198.3731338570763
      },
      {
        "Id": "c657109c89ba4a4180b6c087228d7bad",
        "Name": "Geometry.DistanceTo",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 7105.23107947064,
        "Y": 1366.6293377888376
      },
      {
        "Id": "302bbc426b2f43d1bde84bf22793debd",
        "Name": "List.MinimumItemByKey",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 7661.829451877881,
        "Y": 1119.9646383111947
      },
      {
        "Id": "267e6d0f09f74291899395b584db41bc",
        "Name": "Function Compose",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 7412.076146590527,
        "Y": 1259.8269111117495
      },
      {
        "Id": "25eb687c8d0a4bea8dcca754e1f2e881",
        "Name": "CoordinateSystem.Origin",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 6754.533893860655,
        "Y": 1286.0250066038227
      },
      {
        "Id": "6def0bd91a184224b9d016784b0c7203",
        "Name": "Mesh.CleanMesh",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 1591.3297084899675,
        "Y": 1258.0812384779356
      },
      {
        "Id": "2d0fde66ca2e493f97b8eb8eb63965ce",
        "Name": "Mesh.MakeVolumeFromTerrain",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 1823.9822724514565,
        "Y": 1258.7652717103251
      },
      {
        "Id": "bc71d8f839dc441baac2febde5e7d3fc",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 3919.850911106042,
        "Y": 990.937442080507
      },
      {
        "Id": "f495b8a4261349f5b67953eee9f2bc1f",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 3734.215870029405,
        "Y": 1069.5040449722444
      },
      {
        "Id": "84768fa30a7749f98b022907cffe7106",
        "Name": "BoundingBox.ByCorners",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 4366.936465411196,
        "Y": 990.937442080507
      },
      {
        "Id": "98ba454560614471aba5eb83d061767e",
        "Name": "Mesh.Volume",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 8675.7757343247,
        "Y": 1167.7770193393999
      },
      {
        "Id": "6ec1262fbfb049aea070d091f486dd93",
        "Name": "GeometryColor.ByMeshColors",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 8659.520816527387,
        "Y": 1365.9790380389813
      },
      {
        "Id": "17837e0043924dc9a011877a8d0c6718",
        "Name": "Color Palette",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 8450.45550887406,
        "Y": 1432.6636620318532
      },
      {
        "Id": "2cb3eff007c54d4481af869b6ad3def8",
        "Name": "GeometryColor.ByMeshColors",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 8680.62826309733,
        "Y": 1614.905491915361
      },
      {
        "Id": "89dd5ff11b7843f1a4252110ccaee45e",
        "Name": "Color Palette",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 8471.562955444002,
        "Y": 1681.5901159082327
      },
      {
        "Id": "b6fa934226084f348d04a7312709ec39",
        "Name": "Label.ByPointAndString",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 9963.061275378328,
        "Y": 979.8181113314813
      },
      {
        "Id": "e9bbf60d00d849e3a8b5bc652f2a6876",
        "Name": "Mesh.BoundingBox",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 8656.65844808281,
        "Y": 867.9212402952098
      },
      {
        "Id": "c01027d862454fd8b19a590808b0c488",
        "Name": "BoundingBox.MaxPoint",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": 8960.547156105145,
        "Y": 867.9212402952098
      },
      {
        "Id": "35fb9dc062804d589d13718e468fa495",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 9415.442953465787,
        "Y": 1080.6541531478879
      },
      {
        "Id": "61577c41f85b4236939e3b793d954bac",
        "Name": "Math.Round",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 8942.052907314901,
        "Y": 1167.7770193393999
      },
      {
        "Id": "c29dcd91a9ef45499030ea6393ebdca9",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 9184.96782130281,
        "Y": 1167.7770193393999
      },
      {
        "Id": "25656a171df74c01bcb3cdadec27bb89",
        "Name": "Code Block",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": true,
        "X": 8335.59857442664,
        "Y": 1080.6541531478879
      },
      {
        "Id": "5f20585b547d44abbb0ceeee3d67c332",
        "Name": "Dam Height",
        "IsSetAsInput": false,
        "IsSetAsOutput": false,
        "Excluded": false,
        "ShowGeometry": false,
        "X": -168.15696308099393,
        "Y": 915.7883607652133
      }
    ],
    "Annotations": [
      {
        "Id": "52dc00c255f44e76851c6f388bcbfab1",
        "Title": "Inputs",
        "DescriptionText": "User-facing controls: terrain and water body element selectors, dam location along the flow path, and dam height.",
        "IsExpanded": true,
        "WidthAdjustment": 0.0,
        "HeightAdjustment": 0.0,
        "UserSetWidth": 0.0,
        "UserSetHeight": 0.0,
        "Nodes": [
          "4e56faa5347741568e0316bc42ec4f26",
          "0a1597e817d9436eaef0031cc07a6776",
          "97c91216ca7a4268b9ac769b2af9e5bb",
          "5f20585b547d44abbb0ceeee3d67c332"
        ],
        "HasNestedGroups": false,
        "Left": -178.15696308099393,
        "Top": 381.1049292628421,
        "Width": 368.4,
        "Height": 678.4834315023712,
        "FontSize": 36.0,
        "GroupStyleId": "883066aa-1fe2-44a4-9bd1-c3df86bfe9f6",
        "InitialTop": 477.5049292628421,
        "InitialHeight": 613.933025879563,
        "TextblockHeight": 86.4,
        "IsOptionalInPortsCollapsed": false,
        "IsUnconnectedOutPortsCollapsed": false,
        "HasToggledOptionalInPorts": false,
        "HasToggledUnconnectedOutPorts": false,
        "Background": "#FFB8D8"
      },
      {
        "Id": "9c31b9d39a7d45b9be89d65601276c9f",
        "Title": "Terrain Mesh Processing",
        "DescriptionText": "Converts the selected terrain element into a mesh, cleans it, and extrudes it downward to form a closed volume mesh ready for boolean operations.",
        "IsExpanded": true,
        "WidthAdjustment": 0.0,
        "HeightAdjustment": 0.0,
        "UserSetWidth": 0.0,
        "UserSetHeight": 0.0,
        "Nodes": [
          "8d56fb7c9d774220b1439a46a60c9be3",
          "0f3029df17d34f33a3b8b3bb9fe33dc7",
          "37b56e5eb0d2430c909289ee0e95f5b8",
          "6def0bd91a184224b9d016784b0c7203",
          "2d0fde66ca2e493f97b8eb8eb63965ce"
        ],
        "HasNestedGroups": false,
        "Left": 621.5409507526308,
        "Top": 1048.1101797209583,
        "Width": 1516.4413216988257,
        "Height": 354.8550919893669,
        "FontSize": 36.0,
        "GroupStyleId": "4d68be4a-a04d-4945-9dd5-cdf61079d790",
        "InitialTop": 1121.3101797209583,
        "InitialHeight": 288.3815423711999,
        "TextblockHeight": 63.2,
        "IsOptionalInPortsCollapsed": false,
        "IsUnconnectedOutPortsCollapsed": false,
        "HasToggledOptionalInPorts": false,
        "HasToggledUnconnectedOutPorts": false,
        "Background": "#B9F9E1"
      },
      {
        "Id": "d166788d76bb42948063127ffc66718c",
        "Title": "Dam Profile & Flood Surface Construction",
        "DescriptionText": "Extracts the water body flow path, locates the dam position, samples terrain elevation at that point, then sweeps a profile curve to construct the flood volume solid.",
        "IsExpanded": true,
        "WidthAdjustment": 0.0,
        "HeightAdjustment": 0.0,
        "UserSetWidth": 0.0,
        "UserSetHeight": 0.0,
        "Nodes": [
          "886184ce6f1f4c959855e279a7b78b7c",
          "83735af3b60e4dac934ed7b45ad94f86",
          "b355078ab5fa4a238adbc90179cf7ab8",
          "d1fd87ba946d4b0a8f3550a145247a1a",
          "8392c8390bbe47a79b37b13ebda86683",
          "86b63fe1d8a244898076d41def2335d6",
          "bf584e5003d8414c9ed0a75eb5d080fc",
          "150eba3d761e41da913f67d15f180265",
          "3317a24303ea4159b8c164bc380f46a3",
          "9a18e48d202a4d5a9a87d0e6c9c65e36",
          "9f5909e525e04b9994ddffb51f5878ab",
          "dfbfd06ffcf04a15ac04314dca0c5087",
          "be655a6856e546fdaee36713bdbae033",
          "61a8f307085e43c9a531a4045c805c0b",
          "b4343873be004094b07a1c8a6352e14d",
          "099bf62803704a52a9a6d459a0affd39",
          "e5ac30623ac94ee499fff389693ea6e9",
          "9d122493ec394d978fe7aa17d3036b8b",
          "544e69ad4d8041b8907a89294f92195d"
        ],
        "HasNestedGroups": false,
        "Left": 536.6604934754414,
        "Top": -36.87802739904403,
        "Width": 4157.54953307942,
        "Height": 840.9105279323863,
        "FontSize": 36.0,
        "GroupStyleId": "4d68be4a-a04d-4945-9dd5-cdf61079d790",
        "InitialTop": 36.321972600955974,
        "InitialHeight": 945.4512927371305,
        "TextblockHeight": 63.2,
        "IsOptionalInPortsCollapsed": false,
        "IsUnconnectedOutPortsCollapsed": false,
        "HasToggledOptionalInPorts": false,
        "HasToggledUnconnectedOutPorts": false,
        "Background": "#B9F9E1"
      },
      {
        "Id": "d6d89f2c5eef40818e8708d8433c0853",
        "Title": "Flood Volume Clipping & Boolean",
        "DescriptionText": "Builds a bounding cuboid from the terrain extents, intersects the flood solid with it to clip the reservoir shape, then subtracts the terrain mesh to produce the net flood volume mesh.",
        "IsExpanded": true,
        "WidthAdjustment": 0.0,
        "HeightAdjustment": 0.0,
        "UserSetWidth": 0.0,
        "UserSetHeight": 0.0,
        "Nodes": [
          "e79dc44766ac47c7aa5fbbe525ea8068",
          "02f9d4fcf2bc4707ac4ee6729363d0bf",
          "e48e14adb4484a9dbcb8988ac845fa1a",
          "8944ca2882d543e5afbd42a3ae8ab2b0",
          "d8a3700f635840fdbc9e57600a56594a",
          "64132a055b4947a4a893b97c7344d366",
          "90552d1391ee4f50b20296e077b47921",
          "bc71d8f839dc441baac2febde5e7d3fc",
          "f495b8a4261349f5b67953eee9f2bc1f",
          "84768fa30a7749f98b022907cffe7106"
        ],
        "HasNestedGroups": false,
        "Left": 3463.3473976909863,
        "Top": 865.6160468510041,
        "Width": 3225.7810498826166,
        "Height": 378.7992875475311,
        "FontSize": 36.0,
        "GroupStyleId": "4d68be4a-a04d-4945-9dd5-cdf61079d790",
        "InitialTop": 938.8160468510041,
        "InitialHeight": 1064.3791495510452,
        "TextblockHeight": 63.2,
        "IsOptionalInPortsCollapsed": false,
        "IsUnconnectedOutPortsCollapsed": false,
        "HasToggledOptionalInPorts": false,
        "HasToggledUnconnectedOutPorts": false,
        "Background": "#B9F9E1"
      },
      {
        "Id": "6c8914ec05c34f0d8fe3b1318de9861b",
        "Title": "Flood Mesh Selection",
        "DescriptionText": "Composes a distance-based key function to identify the flood mesh fragment closest to the dam point, filtering out artefacts from the boolean operation.",
        "IsExpanded": true,
        "WidthAdjustment": 0.0,
        "HeightAdjustment": 0.0,
        "UserSetWidth": 0.0,
        "UserSetHeight": 0.0,
        "Nodes": [
          "14337647c22b4a658e098311c7612aee",
          "c657109c89ba4a4180b6c087228d7bad",
          "302bbc426b2f43d1bde84bf22793debd",
          "267e6d0f09f74291899395b584db41bc",
          "25eb687c8d0a4bea8dcca754e1f2e881"
        ],
        "HasNestedGroups": false,
        "Left": 6744.533893860655,
        "Top": 1046.7646383111946,
        "Width": 1209.2955580172265,
        "Height": 492.064699477643,
        "FontSize": 36.0,
        "GroupStyleId": "4d68be4a-a04d-4945-9dd5-cdf61079d790",
        "InitialTop": 1119.9646383111947,
        "InitialHeight": 675.9002350278299,
        "TextblockHeight": 63.2,
        "IsOptionalInPortsCollapsed": false,
        "IsUnconnectedOutPortsCollapsed": false,
        "HasToggledOptionalInPorts": false,
        "HasToggledUnconnectedOutPorts": false,
        "Background": "#B9F9E1"
      },
      {
        "Id": "3060cf11c95847f69ffa0ed3d88abf96",
        "Title": "Output & Visualisation",
        "DescriptionText": "Computes and rounds the flood volume, formats it as a labelled annotation placed at the top of the result mesh, and colours both the flood and terrain meshes for visual review.",
        "IsExpanded": true,
        "WidthAdjustment": 0.0,
        "HeightAdjustment": 0.0,
        "UserSetWidth": 0.0,
        "UserSetHeight": 0.0,
        "Nodes": [
          "98ba454560614471aba5eb83d061767e",
          "6ec1262fbfb049aea070d091f486dd93",
          "17837e0043924dc9a011877a8d0c6718",
          "2cb3eff007c54d4481af869b6ad3def8",
          "89dd5ff11b7843f1a4252110ccaee45e",
          "b6fa934226084f348d04a7312709ec39",
          "e9bbf60d00d849e3a8b5bc652f2a6876",
          "c01027d862454fd8b19a590808b0c488",
          "35fb9dc062804d589d13718e468fa495",
          "61577c41f85b4236939e3b793d954bac",
          "c29dcd91a9ef45499030ea6393ebdca9",
          "25656a171df74c01bcb3cdadec27bb89"
        ],
        "HasNestedGroups": false,
        "Left": 8325.59857442664,
        "Top": 794.7212402952098,
        "Width": 1897.8627009516877,
        "Height": 1018.6688756130229,
        "FontSize": 36.0,
        "GroupStyleId": "07655dc1-2d65-4fed-8d6a-37235d3e3a8d",
        "InitialTop": 867.9212402952098,
        "InitialHeight": 1577.4918232375726,
        "TextblockHeight": 63.2,
        "IsOptionalInPortsCollapsed": false,
        "IsUnconnectedOutPortsCollapsed": false,
        "HasToggledOptionalInPorts": false,
        "HasToggledUnconnectedOutPorts": false,
        "Background": "#FFC999"
      }
    ],
    "X": -1752.8339650187118,
    "Y": -380.2280637035392,
    "Zoom": 0.8660593587321176
  }
}