D
D
Dynamo
English
Search
⌃K

# Attractor Points

Attractor points are great for experimenting with geometric patterns. They can be used to create gradual changes to objects based on their distance.
This workflow will teach you how to:
• Create, manage and edit lists.
• Move points in the 3D preview using direct manipulation.
• Change the executing mode.

## Defining our Objectives

In this exercise, we want to create a circle (Objective) where the radius input is defined by a distance to a nearby point (Relationship).
Hand Sketch of Circle
A point that defines a distance-based relationship is commonly referred to as an "Attractor." Here the distance to our Attractor Point will be used to specify how big our circle should be.

## Next steps

A full list of example files can be found in the Appendix.
DynamoSampleWorkflow-Attractors.dyn
35KB
Binary
Now that we have our objectives and relationships sketched we can begin creating our graph. We need the Nodes that will represent the sequence of actions Dynamo will execute. Let's start by adding the following nodes: Number, Number Slider, Point.ByCoordinates, Geometry.DistanceTo, Circle.ByCenterPointRadius.
1. 1.
Input > Basic > Number
2. 2.
Input > Basic > Number Slider
3. 3.
Geometry > Points > Point > By Coordinates(x,y,z)
4. 4.
Geometry > Modifiers > Geometry > DistanceTo
5. 5.
Geometry > Curves > Circle > ByCenterPointRadius

### Connecting Nodes with Wires

Now that we have a few Nodes, we need to connect the Ports of the Nodes with Wires. These connections will define the flow of data.
1. 1.
Number to Point.ByCoordinates
2. 2.
Number Sliders to Point.ByCoordinates
3. 3.
Point.ByCoordinates (2) to DistanceTo
4. 4.

### Executing the Program

With our Program Flow defined, all we need to do is tell Dynamo to execute it. Once our program is executed (either Automatically or when we click Run in Manual Mode), data will pass through the Wires, and we should see the results in the 3d Preview.
1. 1.
(Click Run) - If the Execution Bar is in Manual Mode, we need to Click Run to execute the graph
2. 2.
Node Preview - Hovering your mouse over the box on the lower right corner of a Node will give you a pop-up of the results
3. 3.
3D Preview - If any of our Nodes create geometry, we will see it in the 3D Preview.
4. 4.
The output geometry on the creation node.

If our program is working, we should see a circle in the 3D Preview that is passing through our Attractor Point. This is great, but we may want to add more detail or more controls. Let's adjust the input to the circle Node so that we can calibrate the influence on the radius. Add another Number Slider to the Workspace, then double click on a blank area of the Workspace to add a Code Block Node. Edit the field in the Code Block, specifying `X/Y`.
1. 1.
Code Block
2. 2.
DistanceTo and Number Slider to Code Block
3. 3.

### Using Sequences

Starting simple and building complexity is an effective way to incrementally develop our program. Once it is working for one circle, let's apply the power of the program to more than one circle. Instead of one center point, if we use a grid of points and accommodate the change in the resulting data structure, our program will now create many circles - each with a unique radius value defined by the calibrated distance to the Attractor Point.
1. 1.
Add a Number Sequence Node and replace the inputs of Point.ByCoordinates - Right Click Point.ByCoordinates and select Lacing > Cross Reference
2. 2.
Add a Flatten Node after Point.ByCoordinates. To flatten a list completely, leave the `amt` input at the default of `-1`
3. 3.
The 3D Preview will update with a grid of circles