|
1 | | ---- |
2 | | -layout: |
3 | | - title: |
4 | | - visible: true |
5 | | - description: |
6 | | - visible: false |
7 | | - tableOfContents: |
8 | | - visible: true |
9 | | - outline: |
10 | | - visible: true |
11 | | - pagination: |
12 | | - visible: true |
13 | | ---- |
| 1 | +# Holes |
14 | 2 |
|
15 | | -# Lips |
16 | 3 |
|
17 | | -<figure><img src="../../.gitbook/assets/lips_0_1.png" alt=""><figcaption></figcaption></figure> |
18 | 4 |
|
19 | | -In this tutorial, we modify the force diagram to create a lip at the edge of the shell. By "lip," we refer to historical examples such as Heinz Isler's _Wyss Garten Haus_. These folds at the boundary play a key structural role in stiffening the edges of a shell. |
| 5 | +## Rhino Geometry |
20 | 6 |
|
21 | | -To achieve this modification, we must redirect the flow of the greatest forces. Typically, in our shell form-finding process, the greatest forces have been concentrated along the outermost edge of the shell, flowing down to the support points at the corners. However, in this case, we aim to direct these forces through an edge that is not at the very perimeter of the shell. |
| 7 | +Download Rhino3D File: |
22 | 8 |
|
23 | | -To accomplish this, we will set the force diagram edge length parameters [**lmin**](../../manual/7.-modify-diagrams/supports-1.md) and [**lmax**](../../manual/7.-modify-diagrams/supports-1.md) to 1 and 3, respectively, for all boundary edges. For the inner loop of edges, we will use a range of 10–15. These values are arbitrary and serve to illustrate the principle. |
| 9 | +{% file src="../../.gitbook/assets/holes.zip" %} |
24 | 10 |
|
| 11 | +## Create Pattern |
25 | 12 |
|
| 13 | +| | | | |
| 14 | +| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- | |
| 15 | +| <img src="../../.gitbook/assets/RV_pattern (2).svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_pattern</code></p> | <p><strong>source file</strong></p><p><a href="../../../plugin/RV_pattern.py"><code>RV_pattern.py</code></a></p> | |
26 | 16 |
|
27 | | -{% file src="../../.gitbook/assets/lips.3dm" %} |
| 17 | +**Command:** `RV_pattern` > `RhinoMesh` > `Select a mesh` |
28 | 18 |
|
29 | | -*** |
| 19 | +<figure><img src="../../.gitbook/assets/holes_0.png" alt=""><figcaption><p>The display of the Mesh input changes when the <code>RV_pattern</code> command is initiated.</p></figcaption></figure> |
30 | 20 |
|
31 | | -## 1. Create Pattern |
32 | 21 |
|
33 | | -**Command:** `RV_pattern` > `RhinoMesh` |
34 | 22 |
|
35 | | -Create a pattern from a mesh. You can start with the attached Rhino file or a session file. |
| 23 | +## Identify Supports |
36 | 24 |
|
37 | | -<figure><img src="../../.gitbook/assets/barrel_0.png" alt=""><figcaption></figcaption></figure> |
| 25 | +<table><thead><tr><th></th><th width="228"></th><th></th></tr></thead><tbody><tr><td> <img src="../../.gitbook/assets/RV_supports (2).svg" alt=""></td><td><p><strong>Rhino command name</strong></p><p><code>RV_pattern_supports</code></p></td><td><p><strong>source file</strong></p><p><a href="../../../plugin/RV_pattern_supports.py"><code>RV_pattern_supports.py</code></a></p></td></tr></tbody></table> |
38 | 26 |
|
39 | | -{% file src="../../.gitbook/assets/0_rhinovault_lips_pattern (1).json" %} |
| 27 | +**Command:** `RV_pattern_supports` > `Add`> `Manual`> `Select Vertices`> `Enter` |
40 | 28 |
|
41 | | -*** |
| 29 | +<figure><img src="../../.gitbook/assets/holes_1.png" alt=""><figcaption><p>Select the strips of vertices on the two opposite sides of the Mesh.</p></figcaption></figure> |
42 | 30 |
|
43 | | -## 2. Identify Supports |
44 | 31 |
|
45 | | -**Command:** `RV_pattern_supports` > `Add`> `Manual`> `Select Vertices` |
46 | 32 |
|
47 | | -Manually set the boundary points from the three boundary arches. |
| 33 | +## Pattern Relax |
48 | 34 |
|
49 | | -<figure><img src="../../.gitbook/assets/lips_1.png" alt=""><figcaption></figcaption></figure> |
| 35 | +<table><thead><tr><th width="221"></th><th width="253"></th><th></th></tr></thead><tbody><tr><td><img src="../../.gitbook/assets/RV_boundaries (1).svg" alt="" data-size="original"></td><td><p><strong>Rhino command name</strong></p><p><code>RV_pattern_boundaries</code></p></td><td><p><strong>source file</strong></p><p><a href="../../../plugin/RV_pattern_boundaries.py"><code>RV_pattern_boundaries.py</code></a></p></td></tr></tbody></table> |
50 | 36 |
|
51 | | -{% file src="../../.gitbook/assets/1_rhinovault_lips_boundary (1).json" %} |
| 37 | +**Command:** `RV_pattern_boundaries > Enter` |
52 | 38 |
|
53 | | -*** |
| 39 | +<figure><img src="../../.gitbook/assets/holes_2.png" alt=""><figcaption><p>To avoid straight edges, the patter is relax using fd solver, with default value q=1.</p></figcaption></figure> |
54 | 40 |
|
55 | | -## 3. Form Diagram |
| 41 | +## Form Diagram |
56 | 42 |
|
57 | | -**Command:** `RV_form` |
| 43 | +| | | | |
| 44 | +| ------------------------------------------------------------------------------------ | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | |
| 45 | +| <img src="../../.gitbook/assets/RV_FormDiagram (1).svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_form</code></p> | <p><strong>source file</strong></p><p><a href="../../../plugin/RV_form.py"><code>RV_form.py</code></a></p> | |
58 | 46 |
|
59 | | -The mesh geometry is converted into a line preview, marked with green lines. |
| 47 | +**Command:** `RV_form`\ |
60 | 48 |
|
61 | | -<figure><img src="../../.gitbook/assets/lips_2.png" alt=""><figcaption></figcaption></figure> |
62 | 49 |
|
63 | | -{% file src="../../.gitbook/assets/2_rhinovault_lips_form (2).json" %} |
| 50 | +<figure><img src="../../.gitbook/assets/holes_3.png" alt=""><figcaption><p>The mesh geometry is converted to a line preview.</p></figcaption></figure> |
64 | 51 |
|
65 | | -*** |
| 52 | +## Force Diagram |
66 | 53 |
|
67 | | -## 4. Force Diagram |
| 54 | +| | | | |
| 55 | +| ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | |
| 56 | +| <img src="../../.gitbook/assets/RV_ForceDiagram (1).svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_force</code></p> | <p><strong>source file</strong></p><p><a href="../../../plugin/RV_force.py"><code>RV_force.py</code></a></p> | |
68 | 57 |
|
69 | 58 | **Command:** `RV_force` |
70 | 59 |
|
71 | | -Create a force diagram that shows the angle differences between the form and force diagrams. Ideally, they should become orthogonal to each other to achieve a compression-only shell. |
| 60 | +<figure><img src="../../.gitbook/assets/holes_4.png" alt=""><figcaption><p>On the right side, the force diagram is created with TextDots marking the angle deviation between the form edge and its 90-degree rotated force edge. The next step, horizontal equilibrium, will aim to reduce this deviation to zero.</p></figcaption></figure> |
72 | 61 |
|
73 | | -<figure><img src="../../.gitbook/assets/lips_3.png" alt=""><figcaption></figcaption></figure> |
| 62 | +## Horizontal Equilibrium |
74 | 63 |
|
75 | | -{% file src="../../.gitbook/assets/3_rhinovault_lips_force.json" %} |
76 | | - |
77 | | -*** |
78 | | - |
79 | | -## 5. Horizontal Equilibrium |
80 | | - |
81 | | -**Command:** `RV_tna_horizontal` > `Iterations` > `1000` |
82 | | - |
83 | | -Set the iteration to 1000 to achieve horizontal equilibrium. Horizontal equilibrium is reached when no TextDot is visible, indicating that the angles between the force and form diagrams are orthogonal within the defined tolerance. |
84 | | - |
85 | | -<figure><img src="../../.gitbook/assets/lips_4 (1).png" alt=""><figcaption><p>.</p></figcaption></figure> |
86 | | - |
87 | | -{% file src="../../.gitbook/assets/4_rhinovault_lips_horizontal_thrust.json" %} |
88 | | - |
89 | | -*** |
90 | | - |
91 | | -## 6. Modify Force Diagram |
92 | | - |
93 | | -**Command:** `RV_force_modify`> `EdgeAttributes` > `Manual` |
94 | | - |
95 | | -Set the boundary edge length range ([lmin](../../manual/7.-modify-diagrams/supports-1.md) and [lmax](../../manual/7.-modify-diagrams/supports-1.md)) to \[1, 3], and the mesh edges representing the lip to \[10, 15]. |
96 | | - |
97 | | -<figure><img src="../../.gitbook/assets/lips_5.png" alt=""><figcaption></figcaption></figure> |
98 | | - |
99 | | -<figure><img src="../../.gitbook/assets/lips_6 (2).png" alt=""><figcaption></figcaption></figure> |
100 | | - |
101 | | -{% file src="../../.gitbook/assets/5_rhinovault_lips_modify_horizontal_forces.json" %} |
102 | | - |
103 | | -*** |
104 | | - |
105 | | -## 7. Horizontal Equilibrium |
| 64 | +| | | | |
| 65 | +| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | |
| 66 | +| <img src="../../.gitbook/assets/RV_horizontal-eq (1).svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_tna_horizontal</code></p> | <p><strong>source file</strong></p><p><a href="../../../plugin/RV_tna_horizontal.py"><code>RV_tna_horizontal.py</code></a></p> | |
106 | 67 |
|
107 | 68 | **Command:** `RV_tna_horizontal` > `Iterations` > `1000` |
108 | 69 |
|
109 | | -Rerun the horizontal equilibrium. |
110 | | - |
111 | | -<figure><img src="../../.gitbook/assets/lips_7 (1).png" alt=""><figcaption></figcaption></figure> |
112 | | - |
113 | | -{% file src="../../.gitbook/assets/6_rhinovault_lips_horizontal_thrust (2).json" %} |
| 70 | +<figure><img src="../../.gitbook/assets/holes_5.png" alt=""><figcaption><p>The horizontal equilibrium minimizes the angles as much as possible, aiming to bring them close to zero.</p></figcaption></figure> |
114 | 71 |
|
115 | | -*** |
| 72 | +## Vertical Equilibrium |
116 | 73 |
|
117 | | -## 8. Vertical Equilibrium |
| 74 | +| | | | |
| 75 | +| ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | |
| 76 | +| <img src="../../.gitbook/assets/RV_vertical-eq (1).svg" alt="" data-size="original"> | <p><strong>Rhino command name</strong></p><p><code>RV_tna_vertical</code></p> | <p><strong>source file</strong></p><p><a href="../../../plugin/RV_tna_vertical.py"><code>RV_tna_vertical.py</code></a></p> | |
118 | 77 |
|
119 | 78 | **Command:** `RV_tna_vertical`  |
120 | 79 |
|
121 | | -The final geometry is computed by running the vertical equilibrium command, keeping the z-height unchanged. For preview, we use the following options:`RV_settings > Drawing > show_pipes` and `show_forces`. |
122 | | - |
123 | | -<figure><img src="../../.gitbook/assets/lips_7.png" alt=""><figcaption></figcaption></figure> |
124 | | - |
125 | | -{% file src="../../.gitbook/assets/7_rhinovault_vertical_thrust (1).json" %} |
| 80 | +<figure><img src="../../.gitbook/assets/holes_6.png" alt=""><figcaption><p>Vertical projection to get 3D geometry.</p></figcaption></figure> |
0 commit comments