Step-by-Step: Brick Wall on Curved Path

brick_00

1. In Rhino: Use the BOX command to construct a “brick” with one corner at 0,0,0. Use the CURVE command to construct an arbitrary curved path. [The Grasshopper definition will stack the “brick” along the curved path.]
2. Insert the Brep and Crv parameters. Right-click on each in turn to “Set one Brep” and “Set one Curve.”

brick_01
3. Insert the Deconstruct Box component. Connect the Brep output to the Deconstruct Box input. [Deconstruct Box allows you to measure the X, Y, and Z dimensions of a Box.]

brick_02
4. Insert two instances of the Deconstruct Domain component. Connect the X output of Deconstruct Box to the input on the first Deconstruct Domain component; connect the Z output of Deconstruct Box to the input on the second Deconstruct Domain component. [Deconstruct Domain extracts the beginning and end points of a domain, in this case the beginning and end points of the X and Z dimensions of the “brick”.]

brick_03
5. Insert two instances of the Subtraction component. Connect the S output of the first Deconstruct Domain component to the B input of the first Subtraction component; connect the E output of the first Deconstruct Domain component to the A input of the first Subtraction component. Repeat this process with the second Deconstruct Domain and Subtraction components. [The results of the two Subtraction components represent the length and height of the “brick,” respectively.]

6. Insert the Length component and connect it to the Curve component. [This simply measures the length of the Rhino curved path. We will reference it later.]

brick_04
7. Insert a Number Slider. Edit its values as follows: Name: Height. Rounding: Integer Numbers. Numeric domain: Minimum: 1. Maximum: 10.

brick_05
8. On another area on the Canvas, insert the following components: Multiplication, Series, Vector XYZ, and Move. [We will use these components as part of a process to copy the curved path in the vertical direction.]

brick_06
9. Connect the components: Connect the R output of Multiplication to the N input of Series; connect the S output of Series to the Z input of Vector XYZ; connect the V output of Vector XYZ to the T input of Move.

brick_07
10. Right-click on the S output label of Series and select Graft. [The Graft option changes the data structure of the parameter. Instead of creating a single list of items, it effectively associates each item in a list with a unique source. In our definition, choosing the Graft option will cause Grasshopper to “remember” that the instructions apply to individual bricks.]

brick_08
11. Insert a Panel component. Edit its value to equal 2, and connect it to the B input of Multiplication.

brick_09
12. Copy-paste this entire group of components (i. e., Panel, Multiplication, Series, Vector XYZ, and Move) and set the new components below the original ones.

brick_10
13. Connect the components: Refer back to the earlier components we placed. Connect the R output of the second Subtraction component to the A input of each of the Multiplication components (two connections).

brick_11
14. Connect the components: Again referring back to the earlier components we placed, connect the output of the Number Slider to the C input of each of the Series components (two connections).

brick_12
15. Insert a Division component. Connect the L output of the Length component (i. e., the Length component which measures the length of the Rhino curve) to the A input of Division. Connect the R output of the first Subtraction component to the B input of Division.

brick_13
16. On another area on the Canvas, insert the following components: Panel (with a value of 2); Division; Multiplication; Series; Shift List; and Cull Nth. [We will use these components as part of a process to copy the “brick” along the curved path. The Shift List and Cull Nth components are critical to shifting the bricks by half their length on every alternating copy of the curved path.]

brick_14
17. Connect the components: Panel output to the B input on the Division and Multiplication components; R output of Division to N input on Series; R output of Multiplication to C input of Series; S output of Series to L input of Shift List; L output of Shift List to L input of Cull Nth.

brick_15
18. Refer back to components placed earlier. Connect the R output of Division (i. e., the Division component connected to the Length component) to the A input of the Multiplication component. Connect the R output of Subtraction (i. e., the first Subtraction component, connected to the Deconstruct Domain component) to the A input of the Division component.

brick_16
19. Insert a Series component. Connect the R output of Subtraction (i. e., the Subtraction component referred to in the preceding step) to the N input of Series. Connect the R output of Division (i. e., the same Division component referred to in the preceding step) to the C input of Series.

brick_17
20. On another area of the Canvas, insert the following components: Boolean Toggle, Evaluate Length, and Orient Direction. [The Orient Direction component is responsible for making multiple copies of the original “brick” at the correctly placed and oriented locations along the curved paths.]

brick_18
21. Connect the components: Output of Boolean Toggle to the N input of Evaluate Length; P output of Evaluate Length to the pB input of Orient Direction; T output of Evaluate Length to the dB input of Orient Direction.

brick_19
22. Copy-paste this entire group of components (i. e., Boolean Toggle, Evaluate Length, and Orient Direction) and set the new components below the original ones.

brick_20
23. Insert the following components: Panel (value of 1) and Vector XYZ. Connect the output of Panel to the X input of Vector XYZ, and connect the V output of Vector XYZ to the dA input on each of the Orient Direction components.

brick_21
24. Refer back to components placed earlier. Connect the Brep (Rhino “brick”) output to the G input on each of the Orient Direction components.

brick_22
25. Connect the S output of Series (i. e., the Series component placed in step 19) to the L input of the first Evaluate Length component).

brick_23
26. Connect the G output of Move (i. e., the Move component placed in step 8) to the C input of the first Evaluate Length component).

27. Connect the L output of Cull Nth (i. e., the Cull Nth component placed in step 16) to the L input of the second Evaluate Length component).

28. Connect the G output of Move (i. e., the Move component placed in step 12) to the C input of the second Evaluate Length component).

brick_24a
29. Connect the R output of Subtraction (i. e., the Subtraction component placed in step 5) to the S input of Series (i. e., the Series component placed in step 12).

brick_25a
30. Finally, connect the output on the Crv parameter (i. e., the Rhino “path”) to the G input of each of the Move parameters (i. e., the Move parameters from steps 8 and 12).

brick_26a
31. The definition is complete.

Leave a comment