Flows
How to create and use parametric generative algorithms
Flow OverviewAutomatically turn simple shapes into more complex geometry with built-in algorithms.
Flow Interface
Learn the basics for the Flow visual coding interface
The Flow ManagerThe library of Flows in your current project
The Flow BuilderThe Flow Builder is a visual programming application within Giraffe.
NodesA node is a discrete set of instructions in Flow
Connectors & WiresConnects nodes together to create detailed instructions in Flow
The Flow CanvasHow to navigate the flow canvas
Getting Started with Flow
How to build and use your first flow
Create a New FlowStart a new flow from a template or blank canvas.
Anatomy of a FlowHow flows process geometry and data
Search for & Add Flow NodesAdd more nodes to your flow canvas
Using Input Nodes in FlowEstablish editable properties that control your Flow's outputs
Transform Nodes & Exposing InputsUsing the Transform Inputs with Generative Nodes
Edit a FlowUpdate a saved flow
Duplicate a FlowCopy an existing flow
Delete a FlowDelete a flow from a geometry or from the project entirely.
Using Flows
Now That you've created a flow, how do you use it in your projects?
Assign a flow to geometryOnce you have created a flow, assign it to a geometry
Using Flows on Multiple GeometriesRe-use the same flow logic in multiple geometries in a single project.
Import Flows from Another ProjectReuse flows from past projects
Bake FlowsHow to un-flow-ify your Flow geometries
Debugging Flows
How to inspect flows to ensure expected results
Using the Reader NodePreview the data coming from a node
Troubleshooting a FlowLearn how to fix errors with your flows
Flow Concepts
Important coding concepts that help you to build flows
Objects & FeaturesLearn how to work with object oriented programming in Flow
JSON SyntaxSome syntax basics to help you out with Flows
Data Types (Primitives)The basic types of data Flows work with
Cartesian vs ProjectedWorking with Projected versus Unprojected Geometries
Vectors & TranslationHow vectors drive cartesian geometries
CollectionsHow to work with multiple items as a data structure
Lists vs Sets vs DictionariesWhat is a set vs a list vs a dictionary?
Loops (Data Flow)Process the same nodes over multiple items
Flow Nodes
How to use each flow node
absGet the absolute value of a number
acosGet the arccosine of a number
addadd two numbers
along pointUse along point to distribute a set number of points along a line
andCheck if two values are both true
Apartment V2Use the apartment transform to create an apartment building based on a single line.
apply usageApply a usage to a feature
areaGet the area of a shape
arrayUse array to evenly space points along a polygon outline or line.
asinGet the arcsine of a number
atanGet the arctangent of a number
AverageAverage a list of numbers
BezierCreate a bezier curve from a set of points
Blend Colors
BooleanA boolean (true/false)
boolean differenceReturns the difference of two geometries
Boolean IntersectionGet the intersection of two geometries.
boolean unionReturns the union of multiple geometries
Bounding BoxReturns the bounding box of a geometry
Bounding Box PropertiesReturns the properties of a bounding box
Catmull-RomCreate an interpolated curve from a set of points
ceilRound a number up to the nearest integer
Vector CentroidThe Centroid finds the center point of a polygon and outputs it as a vector point
centroid (dendrogram)Returns the centroid (visual center point) of a geometry
circleCreate a circle from a center point
Closest PointGet the closest point on a geometry to a point
ColorA node that passes a color through
construct cartesianConstruct a cartesian from a geometry
construct colorConstruct an rgb color from 3 number inputs
construct key-value pairConstruct a key-value pair
construct objectConstruct a JSON object
construct vectorConstruct a vector from x, y, and z coordinates
Control PointsGet the end points of a geometry
cosGet the cosine of an angle
Cull Duplicate PointsRemove duplicate points from a geometry
deconstruct cartesianDeconstruct a cartesian feature into its components
deconstruct frameDeconstruct a frame into its components
deconstruct vectorDeconstruct a vector to get its coordinates
degrees to radiansConvert degrees to radians
Delete propertyDelete a single property from an object
deserializeDeserialize raw geometry
distanceGet the distance between two points
divideDivide two numbers
Divide DistanceDivide a line into equal distance points
Divide LineDivide a line into a specified number of segments
encapsulate in listPlace an object in a list
enclosed polygoncreate an enclosed polygon from intersecting lines
End PointsGet the end points of a polyline
EnvelopeGenerate your allowable envelope, or the extents of your buildable area, with this transform.
equalsCheck if two values are equal
Explode (generative)Explode turns any multi-edge shape into lines and points (corners).
Get SegmentsExplode a geometry into segments
Fillet CornersCurve the corners of a polygon or polyline
FilterChecks if each item in a list matches a boolean condition. Outputs 2 lists: matching and not matching
Filter nullRemove NULL or undefined values from a list
First ItemGet the first item in a list
Flat MapMap a function over a list and flatten the result
Flatten ListFlatten a list of lists
Flip PolylineFlip a polyline
floorRound a number down to the nearest integer
Forward ProjectForward project a feature into a Cartesian
frame on polylineGet a horizontal frame along a polyline at a given distance
get feature property nameGet the name of a giraffe property, formatted as a string
get flow idGet the id of a flow
get flow namesGet a map of flow names to ids
Get GltfGet a GLTF file that exists in the current project
Get Point LocationGet the Latitude and Longitude of a point
get project idGet the id of the project
get project unitsGet the units (meters, feet) of a project
get raw featuresGet all raw features in the project
get site boundaryget the project boundary as a polygon
get static layer idGet the ID of a static layer
get static layer namesGet a map of static layer names to ids
get usageGet a usage from a dropdown
get usage namesGet the names of all of the usages in the project
greater thanCheck if a value is greater than another value
greater than or equalCheck if a value is greater than or equal to another value
grid fillUse the grid fill transform to fill a polygon with evenly-spaced points on a grid.
group byGroup items in a list by a key
includesCheck if a list includes a value
Index OfFinds an item and its index index in a list
Input ParameterCreate an end-user parametric input for your flow
InsertInsert an item to a list
instanced groupUse flows to automate reusing multiple Groups
intersect linesGet the intersection of multiple lines
Join StringsJoin a list of strings (concatenate)
key byCreate an object from a list by a key
Last ItemGet the last item from a list
lengthGet the length of a polyline
less thanCheck if a value is less than another value
less than or equalCheck if a value is less than or equal to another value
linecreate a line from 2 points
Line SDLConstruct a line from a start point, direction and length
line shorten (legacy)Shorten a polyline by an amount
Line String From PointsConstruct a linestring from points
list itemGet an item from a list
list lengthGet the length of a list
Map (node)Performs a set of instructions on each item in a list
maxGet the maximum of two numbers
MetaballConstruct a meta ball from points and charges.
midpointGet the midpoint of a line or polyline
minGet the minimum of two numbers
moduloCalculate the remainder of the division of two numbers
multiplyMultiply two numbers
negateNegate a number
notNegate a boolean value
not equalsCheck if two values are not equal
numberA number
object entriesGet the entries of an object as a list
object keysGet the keys of an object as a list
object valuesGet the values of an object as a list
offset lineMove the outline of a line or polygon a specified distance with offset line.
offset polygonShrink or grow a polygon inside or outside the initiating shape with offset poly.
orCheck if at least one of two values is true
panelA panel that can hold text strings, code blocks, or numbers
Parking LotsGenerate parking bays on a geometry
parseParse a string into an object
PickPick entries from an object by a key
point in polygonCheck if a point is inside a polygon
Points In PolygonCheck if points are inside a polygon
Pole of InaccessibilityGet the pole of inaccessibility of an object
Polygon From PointsConstruct a polygon from points
PopPop (remove) an item from a list
PowerRaise a number to the power of another number
PushPush an item to a list (append an item to the end of a list)
query rtreeQuery an rtree based on a feature
radians to degreesConvert radians to degrees
randomGenerate a random number between 0 and 1
random colorGenerate a random color
random fill (legacy)Randomly fill the polygon with a specified number of points.
Random IntegerGenerate a random integer between min and max
Random List ItemGet a random item from a list
random reduceRandomly remove a number of elements from a list
read featureReads the feature the flow is attached to
Read Feature LayerRead a feature's layer
read feature propertyRead a property value from a feature
read propertyRead a property from an object
read static layerRead a static layer from the project
ReaderShows the raw and evaluated code resulting from the node output it connects to
rectanglecreate a rectangle from a center point
rectangular arrayConstruct a rectangular array
repeatRepeat a value multiple times
reverse listReverse a list
Rotate ListRotate a list by a number of items
rotate verticalRotates a geometry around the vertical axis
roundRound a number to the nearest integer
round cornersRound or chamfer the corners of a polygon or line.
ScaleScales a geometry about a center
Shatter PolylineShatter a polyline given a list of parameters
ShiftRemoves the first item from a list
sinGet the sine of an angle
site fillUse Site Fill to fill an area with courtyard style buildings allowing for open space requirements.
sort numbersSort a list of numbers from smallest to largest.
Split StringSplit a string into a list of strings
spreadSpread values into an object or list
Spread feature propertiesSpread properties into a feature
sqrtGet the square root of a number
stringA node that contains a string.
String ContainsCheck if a string contains another string.
stringifyTurn an object’s code into plain text
StripSeparate the first, middle, and last items of a list
stroke dashUse stroke dash to divide a line into segments of varying widths.
Sub CurveGet a sub curve of a polyline
subdivide lotsUse subdivide lots to divide a larger polygon into smaller parcels or lots by specifying the target frontage or area.
subtractSubtract two numbers
SumSum a list of numbers
tanGet the tangent of an angle
ternary ifApplies a value based on a true/false condition
To cubic feetConvert meters to feet - to be used in a flow where the units are not explicitly defined
To Cubic MetersConvert feet to meters- to be used in a flow where the units are not explicitly defined
To feetConvert meters to feet - to be used in a flow where the units are not explicitly defined
To MetersConvert feet to meters- to be used in a flow where the units are not explicitly defined
To square feetConvert meters to feet - to be used in a flow where the units are not explicitly defined
To Square MetersConvert feet to meters- to be used in a flow where the units are not explicitly defined
translateTranslates a geometry along a vector
unit xUnit vector in the x direction
unit yUnit vector in the y direction
unit zUnit vector in the z direction
unitizeUnitize a vector
UnprojectInverse project a feature (turn a cartesian into a projected feature)
VectorA vector (primitive)
vector angleGet the angle between two vectors
Vector angle from NorthGet the angle between a vector and the north direction (in degrees, clockwise from north).
vector crossGet the cross product of two vectors
vector dotGet the dot product of two vectors
Vector from LineGet a vector from the start to the end of a line
vector lengthGet the length of a vector
write feature propertyWrite a property to a feature
write featuresWrite the geometric feature to the canvas
write propertyWrite a property to an object.
zero vector[0, 0, 0]
EConstants > E
InfinityConstants > Infinity
PiConstants > Pi
Straight SkeletonGeometric Operations > Straight Skeleton
Skeleton EditorEdits the skeleton of a polygon or line string with customizable offsets, coverage settings, and corridor options. generates edge segments, enclosures, and endcaps
Subdivide RectanglesSubdivides rectangular polygons into a grid of dwellings with configurable spacing and dimensions
Extend PolylineExtend a polyline at both ends by a given length
Flow Use Cases
Step-by-step instructions for how to build flows for common workflows
Build your First FlowCreate a flow from scratch
How to Draw CurvesHow to curve lines and corners
Create a Carpark that automatically solves around buildings with FlowCreate a parking solver that generates parking bays around overlapping buildings
Video: Flows & GeometriesHow Geometries relate to flows
Video: Build a Light Rail Station with FlowUsing Flow to build a parametric light rail station
Video: Flow Activity Centre
Video: Create a Flow with Blocks
Video: Smart Facades
Video: Optimize Solid-Glazing Ratio with Flow
Video: Create a Multi-Family Wrap with Flow
