-
0
2
2
-
1
0
7
- bae02583-699d-4132-85d9-a1b0849ff49d
- Shaded
- 4
-
255;201;201;201
-
255;191;191;191
- false
- 0
- 0
- 0
- 0
- 0
- false
- 0
- 0
- 0
- 0
- false
- 0
- false
- 0
- 633740217794324378
- XHG.⠀⠀⠀⠀◯⠀ᗱᗴᴥᑎ✤ᗩᗯᴥᑎᑐᑕ⠀◯⠀ᗱᗴᗯꖴ✤ᗩᗯꖴᴥᗱᗴᗝ⠀◯⠀ᗝᗱᗴߦᗩᙏ⠀◯⠀옷ߦᗩᴥᕤᕦ⠀◯⠀⠀⠀⠀ⵙ⠀⠀⠀⠀◯⠀ᕤᕦᴥᗩߦ옷⠀◯⠀ᙏᗩߦᗱᗴᗝ⠀◯⠀ᗝᗱᗴᴥꖴᗯᗩ✤ꖴᗯᗱᗴ⠀◯⠀ᑐᑕᑎᴥᗯᗩ✤ᑎᴥᗱᗴ⠀◯⠀⠀⠀⠀.GHX
- 0
-
126
-236
- 1.48452353
- 1
-
237
-83
- true
- O
- 1.48452353
- 0
- 3
- Pufferfish, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null
- 3.0.0.0
- Michael Pryor
- 1c9de8a1-315f-4c56-af06-8f69fee80a7a
- Pufferfish
- 3.0.0.0
- ShowcaseTools, Version=1.2.8.0, Culture=neutral, PublicKeyToken=null
- 1.2.8.0
- 00000000-0000-0000-0000-000000000000
- Other Assembly
- Heteroptera, Version=0.7.2.4, Culture=neutral, PublicKeyToken=null
- 0.7.2.4
- Amin Bahrami [Studio Helioripple]
- 08bdcae0-d034-48dd-a145-24a9fcf3d3ff
- Heteroptera
- 0.7.2.4
- 242
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- 0d49a38f-8d38-4bd7-b312-a15d0cac849e
- Panel
- false
- 1
- ee837d01-6e26-4e31-8848-75349a619706
- 1
- Double click to edit panel content…
-
3020
504
119
129
- 0
- 0
- 0
-
3020.181
504.5611
- 1
-
255;255;255;255
- true
- true
- true
- false
- false
- false
- Courier New
- 8
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- 399ae478-9faa-4113-878a-ecbeb9023e91
- 18e93f2f-ac8b-477a-9b1d-c3e107cc3c5b
- f8463a6a-537d-44ae-a102-2cbf6773c33a
- 6264624f-4741-4ad5-b390-ffeaf96b650b
- 1b2f3b06-cd4a-4566-8774-a6a44795fbab
- 85b00841-044b-4e33-a4ec-9b92802b26a4
- e0c48ccf-10ce-4e90-99aa-82531dc21fa4
- 52d7ea4f-a46f-446b-990e-bc0781dd5bfd
- 47c2637e-e747-48a1-8a92-8e349052dbe1
- 745c7cd8-626b-4ae3-af49-236a0540c9db
- d2205dfc-8d4a-4036-b26c-f14bc5cca3f9
- e5dbc17c-65a4-4ede-98e9-cc175d4ef477
- db6d761f-a5ff-4557-88d7-7e388111c80b
- 13
- 40f8014e-3465-4f19-b781-aab0c9c39fe5
- Group
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- f8463a6a-537d-44ae-a102-2cbf6773c33a
- 6264624f-4741-4ad5-b390-ffeaf96b650b
- 1b2f3b06-cd4a-4566-8774-a6a44795fbab
- db6d761f-a5ff-4557-88d7-7e388111c80b
- 05da3e76-3947-41c3-ba67-834e727e19e6
- c724c2b6-0db7-40c2-8f7d-af88759b670e
- 91aee5d2-ed06-49da-9459-04507d020564
- 26aaa1d5-1508-4eca-81e0-1445e9996c66
- 8
- 399ae478-9faa-4113-878a-ecbeb9023e91
- Group
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- 85b00841-044b-4e33-a4ec-9b92802b26a4
- e0c48ccf-10ce-4e90-99aa-82531dc21fa4
- 52d7ea4f-a46f-446b-990e-bc0781dd5bfd
- 47c2637e-e747-48a1-8a92-8e349052dbe1
- 745c7cd8-626b-4ae3-af49-236a0540c9db
- d2205dfc-8d4a-4036-b26c-f14bc5cca3f9
- e5dbc17c-65a4-4ede-98e9-cc175d4ef477
- 7
- 18e93f2f-ac8b-477a-9b1d-c3e107cc3c5b
- Group
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- 3091dae8-d5dc-4fac-a891-c5a5c7118bd1
- b15849e1-cdad-4c2e-becd-859af856d608
- 2187d492-e79a-43d1-9758-c683cee6a1a6
- 64a13dde-4d5b-4c3c-9590-dd2d98964c51
- 108b0aae-e403-4a36-b12b-8ef951a35c50
- f33205f0-793a-41b8-b72a-e667cf426b4f
- 8d36667c-3eb9-462e-91a9-b77c202939ca
- 360c0603-8317-424e-a8c3-12ddeacddebd
- 8
- 9c976e8a-0a2d-4fb1-a458-b40424176e99
- Group
- fb6aba99-fead-4e42-b5d8-c6de5ff90ea6
- DotNET VB Script (LEGACY)
- A VB.NET scriptable component
- f8463a6a-537d-44ae-a102-2cbf6773c33a
- DotNET VB Script (LEGACY)
- Turtle
- 0
- Dim i As Integer
Dim dir As New On3dVector(1, 0, 0)
Dim pos As New On3dVector(0, 0, 0)
Dim axis As New On3dVector(0, 0, 1)
Dim pnts As New List(Of On3dVector)
pnts.Add(pos)
For i = 0 To Forward.Count() - 1
Dim P As New On3dVector
dir.Rotate(Left(i), axis)
P = dir * Forward(i) + pnts(i)
pnts.Add(P)
Next
Points = pnts
-
4298
388
119
44
-
4359
410
- 1
- 1
- 2
- Script Variable Forward
- Script Variable Left
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- true
- true
- Forward
- Left
- true
- true
- 2
- Print, Reflect and Error streams
- Output parameter Points
- 3ede854e-c753-40eb-84cb-b48008f14fd4
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- true
- true
- Output
- Points
- false
- false
- 1
- false
- Script Variable Forward
- ce1f978e-a982-441e-8781-42beeed9349f
- Forward
- Forward
- true
- 1
- true
- 11d6ae9c-db85-41da-a72e-197fbac37970
- 1
- 8e991e99-5fb8-41e1-928d-1bba8fb9f7d7
-
4300
390
44
20
-
4323.5
400
- 1
- false
- Script Variable Left
- 57e2c9a0-b37d-4c4b-9e2b-b0e17a521d43
- Left
- Left
- true
- 1
- true
- 4ebc6662-8141-4321-80cb-843bf3aabe95
- 1
- 8e991e99-5fb8-41e1-928d-1bba8fb9f7d7
-
4300
410
44
20
-
4323.5
420
- Print, Reflect and Error streams
- 33dd288d-3d90-4a29-8ab3-866accaf2be0
- Output
- Output
- false
- 0
-
4374
390
41
20
-
4394.5
400
- Output parameter Points
- a7101779-445c-4899-9b31-ce0a4803f08d
- Points
- Points
- false
- 0
-
4374
410
41
20
-
4394.5
420
- e64c5fb1-845c-4ab1-8911-5f338516ba67
- Series
- Create a series of numbers.
- 3091dae8-d5dc-4fac-a891-c5a5c7118bd1
- Series
- Series
-
448
502
104
64
-
498
534
- First number in the series
- bfe8e6e2-eddc-4584-8ce4-005a112f16fc
- Start
- Start
- false
- 0
-
450
504
33
20
-
468
514
- 1
- 1
- {0}
- 0
- Step size for each successive number
- 3ef6124c-d6dc-426b-a979-0ad9d65d59da
- Step
- Step
- false
- 2b79d86a-c886-48ba-a41d-bd2a6298f66d
- 1
-
450
524
33
20
-
468
534
- 1
- 1
- {0}
- 1
- Number of values in the series
- 41382c6d-efca-4f46-89a4-f4a83cdfe7f4
- Count
- Count
- false
- 7f4503d3-711b-4865-8533-135f511f6962
- 1
-
450
544
33
20
-
468
554
- 1
- 1
- {0}
- 500
- 1
- Series of numbers
- 4a521433-15f9-4232-bbd6-a4193c7aaecc
- Series
- Series
- false
- 0
-
513
504
37
60
-
531.5
534
- dd8134c0-109b-4012-92be-51d843edfff7
- Duplicate Data
- Duplicate data a predefined number of times.
- b15849e1-cdad-4c2e-becd-859af856d608
- Duplicate Data
- Duplicate Data
-
435
165
107
64
-
494
197
- 1
- Data to duplicate
- 907f9087-e15f-4411-b460-551d6e02779d
- Data
- Data
- false
- dbcbb453-e3a7-47df-892d-f8d3b9463741
- 1
-
437
167
42
20
-
459.5
177
- 1
- 1
- {0}
- Grasshopper.Kernel.Types.GH_Integer
- 1
- Number of duplicates
- 4af8efc9-5fa2-429a-bc4a-bc67bfcdce44
- Number
- Number
- false
- 7f4503d3-711b-4865-8533-135f511f6962
- 1
-
437
187
42
20
-
459.5
197
- 1
- 1
- {0}
- 500
- Retain list order
- 96c94299-014f-4d47-a2bf-e758b61acfb5
- Order
- Order
- false
- 0
-
437
207
42
20
-
459.5
217
- 1
- 1
- {0}
- true
- 1
- Duplicated data
- 11d6ae9c-db85-41da-a72e-197fbac37970
- Data
- Data
- false
- 0
-
509
167
31
60
-
524.5
197
- f5ea9d41-f062-487e-8dbf-7666ca53fbcd
- Interpolate
- Create an interpolated curve through a set of points.
- 6264624f-4741-4ad5-b390-ffeaf96b650b
- Interpolate
- Interpolate
-
4470
335
121
64
-
4530
367
- 1
- Interpolation points
- 9fa61b9f-3d6a-4de9-b3cf-891575df3642
- Vertices
- Vertices
- false
- 1b2f3b06-cd4a-4566-8774-a6a44795fbab
- 1
-
4472
337
43
20
-
4495
347
- Curve degree
- 45884fa8-c111-46db-9464-f554212d0881
- Degree
- Degree
- false
- 0
-
4472
357
43
20
-
4495
367
- 1
- 1
- {0}
- 3
- Periodic curve
- 39a08521-0941-45d2-b08b-e760b22d1cfd
- Periodic
- Periodic
- false
- 0
-
4472
377
43
20
-
4495
387
- 1
- 1
- {0}
- false
- Resulting nurbs curve
- fbac77a5-b15a-4a25-8bf0-69012470613a
- Curve
- Curve
- false
- 0
-
4545
337
44
20
-
4567
347
- Curve length
- 9e8512d8-16fc-432e-836f-b8d89a934da4
- Length
- Length
- false
- 0
-
4545
357
44
20
-
4567
367
- Curve domain
- 0b6cb763-0a93-4ae2-96a2-fdcd7eb5bc57
- Domain
- Domain
- false
- 0
-
4545
377
44
20
-
4567
387
- 33bcf975-a0b2-4b54-99fd-585c893b9e88
- Digit Scroller
- Numeric scroller for single numbers
- 7f4503d3-711b-4865-8533-135f511f6962
- Digit Scroller
- Digit Scroller
- false
- 0
- 12
- Digit Scroller
- 11
- 250.0
-
64
228
250
20
-
64.23257
228.5999
- 9df5e896-552d-4c8c-b9ca-4fc147ffa022
- Expression
- Evaluate an expression
- 1/2*X^2+1/6*X^3+1/24*X^4+1/120*X^5+1/720*X^6+1/5040*X^7+1/40320*X^8++1/322560*X^9
- ccba0cf5-bf78-4d56-8ae4-a8179e226134
- Expression
- Expression
-
1806
956
903
84
-
2344
998
- 4
- ba80fd98-91a1-4958-b6a7-a94e40e52bdb
- ba80fd98-91a1-4958-b6a7-a94e40e52bdb
- ba80fd98-91a1-4958-b6a7-a94e40e52bdb
- ba80fd98-91a1-4958-b6a7-a94e40e52bdb
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- Expression variable
- dd7fdd44-23e0-495d-acff-e72efd794035
- Variable X
- X
- true
- 38133632-4c97-466b-b444-265770619668
- 1
-
1808
958
188
20
-
1903.5
968
- Expression variable
- de1f1771-1bb3-4fa6-a496-93db22855cd1
- Variable O_EZIS_O_SIZE_O
- O_EZIS_O_SIZE_O
- true
- 0
-
1808
978
188
20
-
1903.5
988
- Expression variable
- 275ad39a-b984-4aaf-81ae-4e66af05f4b5
- Variable O_REWOP_TOOR_O_ROOT_POWER_O
- O_REWOP_TOOR_O_ROOT_POWER_O
- true
- 0
-
1808
998
188
20
-
1903.5
1008
- Expression variable
- 37f0162d-6447-441a-b2ea-f4d2401e6c66
- Variable O_REWOP_O_POWER_O
- O_REWOP_O_POWER_O
- true
- 0
-
1808
1018
188
20
-
1903.5
1028
- Result of expression
- d5068386-bfdb-4d84-9996-16eda0ccf7db
- Result
- R
- false
- 0
-
2691
958
16
80
-
2699
998
- eeafc956-268e-461d-8e73-ee05c6f72c01
- Stream Filter
- Filters a collection of input streams
- 75ab0454-6c42-41ca-a7bd-b7b690490a13
- Stream Filter
- Stream Filter
-
3032
676
92
124
-
3077
738
- 6
- 2e3ab970-8545-46bb-836c-1c11e5610bce
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- Index of Gate stream
- 83525f8f-2c3e-4486-91b5-1b42392675d7
- Gate
- Gate
- false
- ec572a50-b5f4-4170-9323-7003be9b43b3
- 1
-
3034
678
28
20
-
3049.5
688
- 1
- 1
- {0}
- 0
- 2
- Input stream at index 0
- 8b88afc8-fcb9-4c01-9028-fd394c23cf23
- false
- Stream 0
- 0
- true
- f95124bc-63c1-434b-b826-b22df9438a92
- 1
-
3034
698
28
20
-
3049.5
708
- 2
- Input stream at index 1
- 168a17f0-c4a6-431a-a210-921e101f2e82
- false
- Stream 1
- 1
- true
- d5068386-bfdb-4d84-9996-16eda0ccf7db
- 1
-
3034
718
28
20
-
3049.5
728
- 2
- Input stream at index 2
- 8c31653e-a32d-4e15-848e-6e8646f02af5
- false
- Stream 2
- 2
- true
- f7b0f737-7ab2-4e8c-b330-bda8f73ff3ab
- 1
-
3034
738
28
20
-
3049.5
748
- 2
- Input stream at index 3
- 6d94601b-423b-4d8d-bac6-0815a8b74468
- false
- Stream 3
- 3
- true
- 0
-
3034
758
28
20
-
3049.5
768
- 2
- Input stream at index 4
- a39af198-a084-47e9-836d-0fc9ef465e43
- false
- Stream 4
- 4
- true
- 0
-
3034
778
28
20
-
3049.5
788
- 2
- Filtered stream
- ee837d01-6e26-4e31-8848-75349a619706
- false
- Stream
- S(2)
- false
- 0
-
3092
678
30
120
-
3107
738
- 33bcf975-a0b2-4b54-99fd-585c893b9e88
- Digit Scroller
- Numeric scroller for single numbers
- b4eccbd7-ec6f-4278-a2cb-b03c5e170c4f
- Digit Scroller
- Digit Scroller
- false
- 0
- 12
- Digit Scroller
- 1
- 0.00162145672
-
64
285
250
20
-
64.36103
285.7393
- 33bcf975-a0b2-4b54-99fd-585c893b9e88
- Digit Scroller
- Numeric scroller for single numbers
- dbcbb453-e3a7-47df-892d-f8d3b9463741
- Digit Scroller
- Digit Scroller
- false
- 0
- 12
- Digit Scroller
- 1
- 1.00000000000
-
64
171
250
20
-
64.97442
171.3352
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- 2187d492-e79a-43d1-9758-c683cee6a1a6
- Quick Graph
- Quick Graph
- false
- 0
- 64a13dde-4d5b-4c3c-9590-dd2d98964c51
- 1
-
473
311
50
50
-
473.3266
311.0284
- -1
- fbac3e32-f100-4292-8692-77240a42fd1a
- Point
- Contains a collection of three-dimensional points
- true
- 1b2f3b06-cd4a-4566-8774-a6a44795fbab
- Point
- Point
- false
- a7101779-445c-4899-9b31-ce0a4803f08d
- 1
-
4432
410
50
24
-
4457.368
422.4215
- 7376fe41-74ec-497e-b367-1ffe5072608b
- Curvature Graph
- Draws Rhino Curvature Graphs.
- 85b00841-044b-4e33-a4ec-9b92802b26a4
- Curvature Graph
- Curvature Graph
-
5632
637
71
64
-
5689
669
- Curve for Curvature graph display
- true
- 9a2b3a48-9e03-4a25-9672-df993c7af69e
- Curve
- Curve
- false
- 26aaa1d5-1508-4eca-81e0-1445e9996c66
- 1
-
5634
639
40
20
-
5655.5
649
- Sampling density of the Graph
- a21fee7a-4577-40a0-9e16-413f22aeb91c
- Density
- Density
- false
- 52d7ea4f-a46f-446b-990e-bc0781dd5bfd
- 1
-
5634
659
40
20
-
5655.5
669
- 1
- 1
- {0}
- 5
- Scale of graph
- ddf1838a-ad8a-47c2-9cce-da00c20c6dbc
- Scale
- Scale
- false
- e0c48ccf-10ce-4e90-99aa-82531dc21fa4
- 1
-
5634
679
40
20
-
5655.5
689
- 1
- 1
- {0}
- 105
- 33bcf975-a0b2-4b54-99fd-585c893b9e88
- Digit Scroller
- Numeric scroller for single numbers
- e0c48ccf-10ce-4e90-99aa-82531dc21fa4
- Digit Scroller
- Digit Scroller
- false
- 0
- 12
- Digit Scroller
- 11
- 116.0
-
5374
679
250
20
-
5374.916
679.1877
- 33bcf975-a0b2-4b54-99fd-585c893b9e88
- Digit Scroller
- Numeric scroller for single numbers
- 52d7ea4f-a46f-446b-990e-bc0781dd5bfd
- Digit Scroller
- Digit Scroller
- false
- 0
- 12
- Digit Scroller
- 11
- 1.0
-
5374
659
250
20
-
5374.916
659.1877
- 0f1b9b0c-4a67-47b2-8fad-6a06d70f7699
- 1c9de8a1-315f-4c56-af06-8f69fee80a7a
- Curve Length Between
- Get the lengths along a curve between points on the curve (or optionally parameters on the curve), if points are not on the curve they will be pulled to it.
- 47c2637e-e747-48a1-8a92-8e349052dbe1
- Curve Length Between
- Curve Length Between
-
5406
319
153
84
-
5481
361
- Curve to get lengths along
- b0a9f649-9c42-496c-9cda-b2b216ec2c52
- Curve
- Curve
- false
- 26aaa1d5-1508-4eca-81e0-1445e9996c66
- 1
-
5408
321
58
20
-
5438.5
331
- 1
- Set of points on curve to get lengths between
- a335f5c8-4861-4c47-a7ab-6a50cbf2a80c
- Points
- Points
- true
- 1b2f3b06-cd4a-4566-8774-a6a44795fbab
- 1
-
5408
341
58
20
-
5438.5
351
- 1
- Optional set of parameters on curve to get lengths between instead of points (will override points if points are also input)
- 1cc30870-d5ce-4705-9a10-caa871f0b54e
- Parameters
- Parameters
- true
- 0
-
5408
361
58
20
-
5438.5
371
- If true, the lengths output is normalized (0.0 - 1.0)
- bcd794d0-d84f-4eaa-af33-8417a47448c6
- Normalized
- Normalized
- false
- 0
-
5408
381
58
20
-
5438.5
391
- 1
- 1
- {0}
- false
- 1
- Lengths along curve between points on curve
- 03646085-cd1c-4bc2-a433-02a6913962b9
- Lengths
- Lengths
- false
- 0
-
5496
321
61
40
-
5526.5
341
- 1
- Curve parameters at the points on curve
- 763a6ab8-3ee4-40e0-b30c-10fd8174bb6d
- Parameters
- Parameters
- false
- 0
-
5496
361
61
40
-
5526.5
381
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- 745c7cd8-626b-4ae3-af49-236a0540c9db
- Panel
- false
- 0
- 03646085-cd1c-4bc2-a433-02a6913962b9
- 1
-
5406
235
153
83
- 0
- 0
- 0
-
5406.916
235.1877
- 2
-
255;255;255;255
- true
- true
- true
- false
- false
- true
- 2fcc2743-8339-4cdf-a046-a1f17439191d
- Remap Numbers
- Remap numbers into a new numeric domain
- 5176388a-09a0-485f-a61b-86ca4133d143
- Remap Numbers
- Remap Numbers
-
742
340
118
64
-
797
372
- Value to remap
- 713f56fc-3246-4341-9d6d-35018b37be8f
- Value
- Value
- false
- dcb8ed0e-8de9-4e9f-9000-3d1a09dc5205
- 1
-
744
342
38
20
-
764.5
352
- Source domain
- 566fbaef-fa0c-41d3-8c52-f9c05388b4a4
- Source
- Source
- false
- 647ca9d7-c459-4567-b1b0-cee1ec05054d
- 1
-
744
362
38
20
-
764.5
372
- 1
- 1
- {0}
-
0
1
- Target domain
- fbeb2315-57d5-4515-8f8d-cc0f4b04822f
- Target
- Target
- false
- 0
-
744
382
38
20
-
764.5
392
- 1
- 1
- {0}
-
-0.125
1
- Remapped number
- 422f0673-4114-467f-9168-b0403a88f411
- Mapped
- Mapped
- false
- 0
-
812
342
46
30
-
835
357
- Remapped and clipped number
- 1c8c8478-75ef-4206-b941-41bcfd627062
- Clipped
- Clipped
- false
- 0
-
812
372
46
30
-
835
387
- ce46b74e-00c9-43c4-805a-193b69ea4a11
- Multiplication
- Mathematical multiplication
- 6d25352b-33ca-48a8-ab43-53179d95b0fb
- Multiplication
- Multiplication
-
238
104
85
44
-
269
126
- 2
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- First item for multiplication
- 23add0d6-a756-4c31-8341-72c06356da19
- A
- A
- true
- 2b79d86a-c886-48ba-a41d-bd2a6298f66d
- 1
-
240
106
14
20
-
248.5
116
- Second item for multiplication
- 7af55dcd-ec14-4969-97b4-78c804c97205
- B
- B
- true
- 60fa302b-18a5-403b-b0fc-cd3754eca389
- 1
-
240
126
14
20
-
248.5
136
- Result of multiplication
- 647ca9d7-c459-4567-b1b0-cee1ec05054d
- Result
- Result
- false
- 0
-
284
106
37
40
-
302.5
126
- 9c007a04-d0d9-48e4-9da3-9ba142bc4d46
- Subtraction
- Mathematical subtraction
- 725dd03f-64f2-4c77-8811-cd39398b3a24
- Subtraction
- Subtraction
-
52
106
85
44
-
83
128
- 2
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- First operand for subtraction
- 9ace34b1-d827-462c-bbd9-b95f8fb17b1b
- A
- A
- true
- 7f4503d3-711b-4865-8533-135f511f6962
- 1
-
54
108
14
20
-
62.5
118
- Second operand for subtraction
- 9ad42727-5801-474e-b5f6-5d4a60cb8aaf
- B
- B
- true
- 0
-
54
128
14
20
-
62.5
138
- 1
- 1
- {0}
- Grasshopper.Kernel.Types.GH_Integer
- 1
- Result of subtraction
- 60fa302b-18a5-403b-b0fc-cd3754eca389
- Result
- Result
- false
- 0
-
98
108
37
40
-
116.5
128
- bc984576-7aa6-491f-a91d-e444c33675a7
- Graph Mapper
- Represents a numeric mapping function
Sine wave distribution
Sine wave distribution
Sine wave distribution
Linear distribution
Bezier curve evaluator
Bezier curve evaluator
Bezier curve evaluator
Bezier curve evaluator
Sine wave distribution
Sine wave distribution
Sine wave distribution
Sine wave distribution
Sine wave distribution
Sine wave distribution
Sine wave distribution
Sine wave distribution
Sine wave distribution
Sine wave distribution
Sine wave distribution
Sine wave distribution
- 706ffbb0-702c-491f-a74d-4e16a7775ef0
- Graph Mapper
- Graph Mapper
- false
- 5917db7e-118b-4878-99f9-86cb65630be6
- 1
-
2204
384
100
100
-
2204.648
384.5441
- false
- 0
- 1
- 0
- 1
- 7d54f77a-a866-49ed-95eb-b1f9fb25a1f1
- Sine
- 0
- 0.27770441770553589
- 0
- 0.10393106937408447
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- f65e1d2c-74a6-4e3f-acae-ae928cdb8ced
- Quick Graph
- Quick Graph
- false
- 0
- 706ffbb0-702c-491f-a74d-4e16a7775ef0
- 1
-
2227
335
50
50
-
2227.176
335.1881
- -1
- 2fcc2743-8339-4cdf-a046-a1f17439191d
- Remap Numbers
- Remap numbers into a new numeric domain
- 8a783897-74ac-493b-a0c2-d8ddf62db0f8
- Remap Numbers
- Remap Numbers
-
3695
190
118
64
-
3750
222
- Value to remap
- 06e5a85e-643b-41e3-8fbb-23d80f5223d6
- Value
- Value
- false
- dfd1f709-d217-40fc-b128-8766ed2358ee
- 1
-
3697
192
38
20
-
3717.5
202
- Source domain
- 8a0ef931-3a59-4826-92d1-1f392dd9a0df
- Source
- Source
- false
- 0
-
3697
212
38
20
-
3717.5
222
- 1
- 1
- {0}
-
0
1
- Target domain
- 7ee0714f-0c51-416c-a619-3d972ed29d5b
- Target
- Target
- false
- 647ca9d7-c459-4567-b1b0-cee1ec05054d
- 1
-
3697
232
38
20
-
3717.5
242
- 1
- 1
- {0}
-
0
1
- Remapped number
- 3ea53d0c-9c58-4a76-8030-df17815bd399
- Mapped
- Mapped
- false
- 0
-
3765
192
46
30
-
3788
207
- Remapped and clipped number
- 72a49e9b-260d-434a-95e8-c051441e8af9
- Clipped
- Clipped
- false
- 0
-
3765
222
46
30
-
3788
237
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- a5a61131-29ef-4f06-83a2-6939f2b63834
- Quick Graph
- Quick Graph
- false
- 0
- 3ea53d0c-9c58-4a76-8030-df17815bd399
- 1
-
3728
140
50
50
- -1
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- 75ab0454-6c42-41ca-a7bd-b7b690490a13
- 639bec7d-9515-4310-8f0f-b63740a1c650
- b1084035-5560-4cd1-af8b-32dd0d3282a5
- 0d49a38f-8d38-4bd7-b312-a15d0cac849e
- 4
- af944404-3678-44fd-baea-bf7c9a9d6242
- Group
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- 639bec7d-9515-4310-8f0f-b63740a1c650
- Quick Graph
- Quick Graph
- false
- 0
- 0d49a38f-8d38-4bd7-b312-a15d0cac849e
- 1
-
3143
477
50
50
- -1
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- f95124bc-63c1-434b-b826-b22df9438a92
- Panel
- false
- 1
- 706ffbb0-702c-491f-a74d-4e16a7775ef0
- 1
- Double click to edit panel content…
-
2311
384
112
100
- 0
- 0
- 0
-
2311.981
384.9904
- 1
-
255;255;255;255
- true
- true
- true
- false
- false
- true
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- 5917db7e-118b-4878-99f9-86cb65630be6
- Panel
- false
- 1
- 8d0d12bd-da23-49cc-b34c-50a33768057a
- 1
- Double click to edit panel content…
-
2083
385
113
100
- 0
- 0
- 0
-
2083.122
385.0728
- 1
-
255;255;255;255
- true
- true
- true
- false
- false
- true
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- 131a4f8d-7ebd-4caf-9407-e9acd79c61a6
- Quick Graph
- Quick Graph
- false
- 0
- 5917db7e-118b-4878-99f9-86cb65630be6
- 1
-
2112
334
50
50
-
2112.936
334.8834
- -1
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- bee774d6-9b56-47d4-8b19-d665b2b1a8c3
- Quick Graph
- Quick Graph
- false
- 0
- f95124bc-63c1-434b-b826-b22df9438a92
- 1
-
2340
334
50
50
-
2340.305
334.7302
- -1
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- 706ffbb0-702c-491f-a74d-4e16a7775ef0
- f65e1d2c-74a6-4e3f-acae-ae928cdb8ced
- f95124bc-63c1-434b-b826-b22df9438a92
- 5917db7e-118b-4878-99f9-86cb65630be6
- 131a4f8d-7ebd-4caf-9407-e9acd79c61a6
- bee774d6-9b56-47d4-8b19-d665b2b1a8c3
- 6
- f8335be0-0446-49b1-bf81-1578314c365e
- Group
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- 8d0d12bd-da23-49cc-b34c-50a33768057a
- Panel
- false
- 1
- 422f0673-4114-467f-9168-b0403a88f411
- 1
- Double click to edit panel content…
-
869
330
113
100
- 0
- 0
- 0
-
869.3433
330.3398
- 1
-
255;255;255;255
- true
- true
- true
- false
- false
- true
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- b8a26bbb-b702-427a-8001-28477cb0d5e1
- Quick Graph
- Quick Graph
- false
- 0
- 422f0673-4114-467f-9168-b0403a88f411
- 1
-
777
290
50
50
-
777.1058
290.1783
- -1
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- dcb8ed0e-8de9-4e9f-9000-3d1a09dc5205
- Panel
- false
- 1
- 4a521433-15f9-4232-bbd6-a4193c7aaecc
- 1
- Double click to edit panel content…
-
610
333
113
100
- 0
- 0
- 0
-
610.1078
333.3149
- 1
-
255;255;255;255
- true
- true
- true
- false
- false
- true
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- 52b8bbb4-5ec0-4e58-bce4-e4e8041e086c
- Quick Graph
- Quick Graph
- false
- 0
- dcb8ed0e-8de9-4e9f-9000-3d1a09dc5205
- 1
-
656
241
50
50
-
656.1058
241.1783
- -1
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- 0065c9f4-4022-47bb-b930-47d68af8bdda
- Quick Graph
- Quick Graph
- false
- 0
- 8d0d12bd-da23-49cc-b34c-50a33768057a
- 1
-
898
279
50
50
-
898.1058
279.1783
- -1
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- 5176388a-09a0-485f-a61b-86ca4133d143
- 8d0d12bd-da23-49cc-b34c-50a33768057a
- b8a26bbb-b702-427a-8001-28477cb0d5e1
- dcb8ed0e-8de9-4e9f-9000-3d1a09dc5205
- 52b8bbb4-5ec0-4e58-bce4-e4e8041e086c
- 0065c9f4-4022-47bb-b930-47d68af8bdda
- 6
- 316c9a71-5f66-44ce-9efe-55a57f1e1088
- Group
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- 214649b8-645a-4e58-bdaa-e9158023b0dc
- Quick Graph
- Quick Graph
- false
- 0
- dfd1f709-d217-40fc-b128-8766ed2358ee
- 1
-
3594
140
50
50
- -1
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- 4ebc6662-8141-4321-80cb-843bf3aabe95
- Panel
- false
- 1
- 3ea53d0c-9c58-4a76-8030-df17815bd399
- 1
- Double click to edit panel content…
-
3818
190
137
64
- 0
- 0
- 0
- 1
-
255;255;255;255
- true
- true
- true
- false
- false
- false
- Courier New
- 10
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- 9c2b87a1-9826-4d2c-8dff-24149c523113
- Quick Graph
- Quick Graph
- false
- 0
- 4ebc6662-8141-4321-80cb-843bf3aabe95
- 1
-
3857
139
50
50
- -1
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- dfd1f709-d217-40fc-b128-8766ed2358ee
- Panel
- false
- 1
- 0d49a38f-8d38-4bd7-b312-a15d0cac849e
- 1
- Double click to edit panel content…
-
3552
190
137
64
- 0
- 0
- 0
- 1
-
255;255;255;255
- true
- true
- true
- false
- false
- false
- Courier New
- 10
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- 8a783897-74ac-493b-a0c2-d8ddf62db0f8
- a5a61131-29ef-4f06-83a2-6939f2b63834
- 214649b8-645a-4e58-bdaa-e9158023b0dc
- 4ebc6662-8141-4321-80cb-843bf3aabe95
- 9c2b87a1-9826-4d2c-8dff-24149c523113
- dfd1f709-d217-40fc-b128-8766ed2358ee
- 6
- 37b2f3fe-eb4b-42b2-b110-24323a6c4f8e
- Group
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- 47c2637e-e747-48a1-8a92-8e349052dbe1
- 745c7cd8-626b-4ae3-af49-236a0540c9db
- 2
- d2205dfc-8d4a-4036-b26c-f14bc5cca3f9
- Group
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- 70ab407d-d29e-4f3f-a92e-55d56f91fda7
- Quick Graph
- Quick Graph
- false
- 0
- d5068386-bfdb-4d84-9996-16eda0ccf7db
- 1
-
2229
905
50
50
-
2229.379
905.8666
- -1
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- 4de0d94d-205c-4537-90b2-4779fa3e73cf
- Panel
- false
- 1
- d5068386-bfdb-4d84-9996-16eda0ccf7db
- 1
- Double click to edit panel content…
-
2729
956
112
84
- 0
- 0
- 0
- 1
-
255;255;255;255
- true
- true
- true
- false
- false
- true
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- 38133632-4c97-466b-b444-265770619668
- Panel
- false
- 1
- 422f0673-4114-467f-9168-b0403a88f411
- 1
- Double click to edit panel content…
-
1675
956
113
84
- 0
- 0
- 0
-
1675.76
956.476
- 1
-
255;255;255;255
- true
- true
- true
- false
- false
- true
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- ec4e97a7-6b42-49bc-a131-9084c1bc9f10
- Quick Graph
- Quick Graph
- false
- 0
- 38133632-4c97-466b-b444-265770619668
- 1
-
1704
905
50
50
-
1704.453
905.7198
- -1
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- 625e6906-d4e6-4844-b8f6-27591a02cff9
- Quick Graph
- Quick Graph
- false
- 0
- 4de0d94d-205c-4537-90b2-4779fa3e73cf
- 1
-
2757
905
50
50
- -1
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- ccba0cf5-bf78-4d56-8ae4-a8179e226134
- 70ab407d-d29e-4f3f-a92e-55d56f91fda7
- 4de0d94d-205c-4537-90b2-4779fa3e73cf
- 38133632-4c97-466b-b444-265770619668
- ec4e97a7-6b42-49bc-a131-9084c1bc9f10
- 625e6906-d4e6-4844-b8f6-27591a02cff9
- 6
- 6efa3d52-1834-4736-9896-b9ace5921bc6
- Group
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- 64a13dde-4d5b-4c3c-9590-dd2d98964c51
- Panel
- false
- 1
- 4a521433-15f9-4232-bbd6-a4193c7aaecc
- 1
- Double click to edit panel content…
-
467
398
64
64
- 0
- 0
- 0
-
467.4489
398.3881
- 1
-
255;255;255;255
- true
- true
- true
- false
- false
- true
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- 3091dae8-d5dc-4fac-a891-c5a5c7118bd1
- 2187d492-e79a-43d1-9758-c683cee6a1a6
- 64a13dde-4d5b-4c3c-9590-dd2d98964c51
- 3
- 108b0aae-e403-4a36-b12b-8ef951a35c50
- Group
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- f33205f0-793a-41b8-b72a-e667cf426b4f
- Quick Graph
- Quick Graph
- false
- 0
- 8d36667c-3eb9-462e-91a9-b77c202939ca
- 1
-
471
-21
50
50
-
471.2058
-20.31791
- -1
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- 8d36667c-3eb9-462e-91a9-b77c202939ca
- Panel
- false
- 1
- 11d6ae9c-db85-41da-a72e-197fbac37970
- 1
- Double click to edit panel content…
-
465
64
65
64
- 0
- 0
- 0
-
465.3378
64.0417
- 1
-
255;255;255;255
- true
- true
- true
- false
- false
- true
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- b15849e1-cdad-4c2e-becd-859af856d608
- f33205f0-793a-41b8-b72a-e667cf426b4f
- 8d36667c-3eb9-462e-91a9-b77c202939ca
- 3
- 360c0603-8317-424e-a8c3-12ddeacddebd
- Group
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- 7f4503d3-711b-4865-8533-135f511f6962
- b4eccbd7-ec6f-4278-a2cb-b03c5e170c4f
- dbcbb453-e3a7-47df-892d-f8d3b9463741
- 6d25352b-33ca-48a8-ab43-53179d95b0fb
- 725dd03f-64f2-4c77-8811-cd39398b3a24
- 5
- 9f40f8a3-e80b-4326-9b93-fa343dc8a33b
- Group
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- 85b00841-044b-4e33-a4ec-9b92802b26a4
- e0c48ccf-10ce-4e90-99aa-82531dc21fa4
- 52d7ea4f-a46f-446b-990e-bc0781dd5bfd
- 3
- e5dbc17c-65a4-4ede-98e9-cc175d4ef477
- Group
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- f8463a6a-537d-44ae-a102-2cbf6773c33a
- 1b2f3b06-cd4a-4566-8774-a6a44795fbab
- 2
- db6d761f-a5ff-4557-88d7-7e388111c80b
- Group
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- 05da3e76-3947-41c3-ba67-834e727e19e6
- Quick Graph
- Quick Graph
- false
- 0
- c724c2b6-0db7-40c2-8f7d-af88759b670e
- 1
-
4340
94
50
50
-
4340.368
94.42151
- -1
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- c724c2b6-0db7-40c2-8f7d-af88759b670e
- Panel
- false
- 1
- a7101779-445c-4899-9b31-ce0a4803f08d
- 1
- Double click to edit panel content…
-
4226
143
293
64
- 0
- 0
- 0
-
4226.368
143.4215
- 1
-
255;255;255;255
- true
- true
- true
- false
- false
- false
- Courier New
- 10
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 3
-
150;255;255;255
- A group of Grasshopper objects
- 05da3e76-3947-41c3-ba67-834e727e19e6
- c724c2b6-0db7-40c2-8f7d-af88759b670e
- 2
- 91aee5d2-ed06-49da-9459-04507d020564
- Group
- de131812-96cf-4cef-b9ee-7c7031802751
- 00000000-0000-0000-0000-000000000000
- InfoGlasses
- To show the components' advances information.Right click to have advanced options
- 546fe52e-bbd2-4d56-b00e-8387b971af78
- 0
- InfoGlasses
- InfoGlasses
- 0
- 0
-
0;245;245;245
-
0;31;31;31
- true
-
255;128;128;128
- 128
- 8
- true
- true
- true
- 2
- 0
-
255;255;255;255
- true
- true
-
-146
89
172
28
-
-45
103
- Run
- 6d01728c-b147-43c0-ad5c-7b17637bac77
- Run
- Run
- false
- 0
-
-144
91
24
24
-
-70.5
103
- 1
- 1
- {0}
- true
- 079bd9bd-54a0-41d4-98af-db999015f63d
- VB Script
- Private Function IsSet(ByVal param As String) As Boolean ' Check if an input parameter has data
Dim i As Integer = Component.Params.IndexOfInputParam(param)
If i > -1 Then
Return Component.Params.Input.ElementAt(i).DataType > 1 ' input parameter DataType of 1 means it's not receiving input (internal or external)
Else
Msg("error", "Input parameter '" & param & "' not found")
Return False
End If
End Function
Private Sub Msg(ByVal type As String, ByVal msg As String) ' Output an error, warning, or informational message
Select Case type
Case "error"
Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, msg)
Print("Error: " & msg)
Case "warning"
Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, msg)
Print("Warning: " & msg)
Case "info"
Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Remark, msg)
Print(msg)
End Select
End Sub
' Solve for the m parameter from length and width (reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m))
Private Function SolveMFromLenWid(ByVal L As Double, ByVal w As Double) As Double
If w = 0 Then
Return Defined.M_ZERO_W ' for the boundry condition width = 0, bypass the function and return the known m value
End If
Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT)
Dim lower As Double = 0 ' m must be within this range
Dim upper As Double = 1
Dim m As Double
Dim cwl As Double
Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT
m = (upper + lower) / 2
cwl = 2 * EllipticE(m) / EllipticK(m) - 1 ' calculate w/L with the test value of m
If cwl < w / L Then ' compares the calculated w/L with the actual w/L then narrows the range of possible m
upper = m
Else
lower = m
End If
n += 1
Loop
Return m
End Function
' Solve for the m parameter from length and height (reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m))
' Note that it's actually possible to find 2 valid values for m (hence 2 width values) at certain height values
Private Function SolveMFromLenHt(ByVal L As Double, ByVal h As Double) As List(Of Double)
Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT)
Dim lower As Double = 0 ' m must be within this range
Dim upper As Double = 1
Dim twoWidths As Boolean = h / L >= Defined.DOUBLE_W_HL_RATIO And h / L < Defined.MAX_HL_RATIO ' check to see if h/L is within the range where 2 solutions for the width are possible
Dim m As Double
Dim mult_m As New List(Of Double)
Dim chl As Double
If twoWidths Then
' find the first of two possible solutions for m with the following limits:
lower = Defined.M_DOUBLE_W ' see constants at bottom of script
upper = Defined.M_MAXHEIGHT ' see constants at bottom of script
Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT
m = (upper + lower) / 2
chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m
If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m
upper = m
Else
lower = m
End If
n += 1
Loop
mult_m.Add(m)
' then find the second of two possible solutions for m with the following limits:
lower = Defined.M_MAXHEIGHT ' see constants at bottom of script
upper = 1
Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT
m = (upper + lower) / 2
chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m
If chl < h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m
upper = m
Else
lower = m
End If
n += 1
Loop
If m <= Defined.M_MAX Then ' return this m parameter only if it falls within the maximum useful value (above which the curve breaks down)
mult_m.Add(m)
End If
Else
' find the one possible solution for the m parameter
upper = Defined.M_DOUBLE_W ' limit the upper end of the search to the maximum value of m for which only one solution exists
Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT
m = (upper + lower) / 2
chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m
If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m
upper = m
Else
lower = m
End If
n += 1
Loop
mult_m.Add(m)
End If
Return mult_m
End Function
' Solve for the m parameter from width and height (derived from reference {1} equations (33) and (34) with same notes as above)
Private Function SolveMFromWidHt(ByVal w As Double, ByVal h As Double) As Double
Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT)
Dim lower As Double = 0 ' m must be within this range
Dim upper As Double = 1
Dim m As Double
Dim cwh As Double
Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT
m = (upper + lower) / 2
cwh = (2 * EllipticE(m) - EllipticK(m)) / Math.Sqrt(m) ' calculate w/h with the test value of m
If cwh < w / h Then ' compares the calculated w/h with the actual w/h then narrows the range of possible m
upper = m
Else
lower = m
End If
n += 1
Loop
Return m
End Function
' Calculate length based on height and an m parameter, derived from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m)
Private Function Cal_L(ByVal h As Double, ByVal m As Double) As Double
Return h * EllipticK(m) / Math.Sqrt(m)
End Function
' Calculate width based on length and an m parameter, derived from reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m)
Private Function Cal_W(ByVal L As Double, ByVal m As Double) As Double
Return L * (2 * EllipticE(m) / EllipticK(m) - 1)
End Function
' Calculate height based on length and an m parameter, from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m)
Private Function Cal_H(ByVal L As Double, ByVal m As Double) As Double
Return L * Math.Sqrt(m) / EllipticK(m)
End Function
' Calculate the unique m parameter based on a start tangent angle, from reference {2}, just above equation (9a), that states k = Sin(angle / 2 + Pi / 4),
' but as m = k^2 and due to this script's need for an angle rotated 90° versus the one in reference {1}, the following formula is the result
' New note: verified by reference {4}, pg. 78 at the bottom
Private Function Cal_M(ByVal a As Double) As Double
Return (1 - Math.Cos(a)) / 2 ' equal to Sin^2(a/2) too
End Function
' Calculate start tangent angle based on an m parameter, derived from above formula
Private Function Cal_A(ByVal m As Double) As Double
Return Math.Acos(1 - 2 * m)
End Function
' This is the heart of this script, taking the found (or specified) length, width, and angle values along with the found m parameter to create
' a list of points that approximate the shape or form of the elastica. It works by finding the x and y coordinates (which are reversed versus
' the original equations (12a) and (12b) from reference {2} due to the 90° difference in orientation) based on the tangent angle along the curve.
' See reference {2} for more details on how they derived it. Note that to simplify things, the algorithm only calculates the points for half of the
' curve, then mirrors those points along the y-axis.
Private Function FindBendForm(ByVal L As Double, ByVal w As Double, ByVal m As Double, ByVal ang As Double, ByVal refPln As Plane) As List(Of Point3d)
L = L / 2 ' because the below algorithm is based on the formulas in reference {2} for only half of the curve
w = w / 2 ' same
If ang = 0 Then ' if angle (and height) = 0, then simply return the start and end points of the straight line
Dim out As New List(Of Point3d)
out.Add(refPln.PointAt(w, 0, 0))
out.Add(refPln.PointAt(-w, 0, 0))
Return out
End If
Dim x As Double
Dim y As Double
Dim halfCurvePts As New List(Of Point3d)
Dim fullCurvePts As New List(Of Point3d)
Dim translatedPts As New List(Of Point3d)
ang -= Math.PI / 2 ' a hack to allow this algorithm to work, since the original curve in paper {2} was rotated 90°
Dim angB As Double = ang + (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' angB is the 'lowercase theta' which should be in formula {2}(12b) as the interval
' start [a typo...see equation(3)]. It's necessary to start angB at ang + [interval] instead of just ang due to integration failing at angB = ang
halfCurvePts.Add(New Point3d(w, 0, 0)) ' start with this known initial point, as integration will fail when angB = ang
' each point {x, y} is calculated from the tangent angle, angB, that occurs at each point (which is why this iterates from ~ang to -pi/2, the known end condition)
Do While Math.Round(angB, Defined.ROUNDTO) >= Math.Round(-Math.PI / 2, Defined.ROUNDTO)
y = (Math.Sqrt(2) * Math.Sqrt(Math.Sin(ang) - Math.Sin(angB)) * (w + L)) / (2 * EllipticE(m)) ' note that x and y are swapped vs. (12a) and (12b)
x = (L / (Math.Sqrt(2) * EllipticK(m))) * Simpson(angB, -Math.PI / 2, 500, ang) ' calculate the Simpson approximation of the integral (function f below)
' over the interval angB ('lowercase theta') to -pi/2. side note: is 500 too few iterations for the Simson algorithm?
If Math.Round(x, Defined.ROUNDTO) = 0 Then x = 0
halfCurvePts.Add(New Point3d(x, y, 0))
angB += (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' onto the next tangent angle
Loop
' After finding the x and y values for half of the curve, add the {-x, y} values for the rest of the curve
For Each point As Point3d In halfCurvePts
If Math.Round(point.X, Defined.ROUNDTO) = 0 Then
If Math.Round(point.Y, Defined.ROUNDTO) = 0 Then
fullCurvePts.Add(New Point3d(0, 0, 0)) ' special case when width = 0: when x = 0, only duplicate the point when y = 0 too
End If
Else
fullCurvePts.Add(New Point3d(-point.X, point.Y, 0))
End If
Next
halfCurvePts.Reverse
fullCurvePts.AddRange(halfCurvePts)
For Each p As Point3d In fullCurvePts
translatedPts.Add(refPln.PointAt(p.X, p.Y, p.Z)) ' translate the points from the reference plane to the world plane
Next
Return translatedPts
End Function
' Interpolates the points from FindBendForm to create the Elastica curve. Uses start & end tangents for greater accuracy.
Private Function MakeCurve(ByVal pts As List(Of Point3d), ByVal ang As Double, ByVal refPln As Plane) As Curve
If ang <> 0 Then
Dim ts, te As New Vector3d(refPln.XAxis)
ts.Rotate(ang, refPln.ZAxis)
te.Rotate(-ang, refPln.ZAxis)
Return Curve.CreateInterpolatedCurve(pts, 3, CurveKnotStyle.Chord, ts, te) ' 3rd degree curve with 'Chord' Knot Style
Else
Return Curve.CreateInterpolatedCurve(pts, 3) ' if angle (and height) = 0, then simply interpolate the straight line (no start/end tangents)
End If
End Function
' Implements the Simpson approximation for an integral of function f below
Public Function Simpson(a As Double, b As Double, n As Integer, theta As Double) As Double 'n should be an even number
Dim j As Integer, s1 As Double, s2 As Double, h As Double
h = (b - a) / n
s1 = 0
s2 = 0
For j = 1 To n - 1 Step 2
s1 = s1 + fn(a + j * h, theta)
Next j
For j = 2 To n - 2 Step 2
s2 = s2 + fn(a + j * h, theta)
Next j
Simpson = h / 3 * (fn(a, theta) + 4 * s1 + 2 * s2 + fn(b, theta))
End Function
' Specific calculation for the above integration
Public Function fn(x As Double, theta As Double) As Double
fn = Math.Sin(x) / (Math.Sqrt(Math.Sin(theta) - Math.Sin(x))) ' from reference {2} formula (12b)
End Function
' Return the Complete Elliptic integral of the 1st kind
' Abramowitz and Stegun p.591, formula 17.3.11
' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals
Public Function EllipticK(ByVal m As Double) As Double
Dim sum, term, above, below As Double
sum = 1
term = 1
above = 1
below = 2
For i As Integer = 1 To 100
term *= above / below
sum += Math.Pow(m, i) * Math.Pow(term, 2)
above += 2
below += 2
Next
sum *= 0.5 * Math.PI
Return sum
End Function
' Return the Complete Elliptic integral of the 2nd kind
' Abramowitz and Stegun p.591, formula 17.3.12
' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals
Public Function EllipticE(ByVal m As Double) As Double
Dim sum, term, above, below As Double
sum = 1
term = 1
above = 1
below = 2
For i As Integer = 1 To 100
term *= above / below
sum -= Math.Pow(m, i) * Math.Pow(term, 2) / above
above += 2
below += 2
Next
sum *= 0.5 * Math.PI
Return sum
End Function
Friend Partial NotInheritable Class Defined
Private Sub New()
End Sub
' Note: most of these values for m and h/L ratio were found with Wolfram Alpha and either specific intercepts (x=0) or local minima/maxima. They should be constant.
Public Const M_SKETCHY As Double = 0.95 ' value of the m parameter where the curvature near the ends of the curve gets wonky
Public Const M_MAX As Double = 0.993 ' maximum useful value of the m parameter, above which this algorithm for the form of the curve breaks down
Public Const M_ZERO_W As Double = 0.826114765984970336 ' value of the m parameter when width = 0
Public Const M_MAXHEIGHT As Double = 0.701327460663101223 ' value of the m parameter at maximum possible height of the bent rod/wire
Public Const M_DOUBLE_W As Double = 0.180254422335013983 ' minimum value of the m parameter when two width values are possible for a given height and length
Public Const DOUBLE_W_HL_RATIO As Double = 0.257342117984635757 ' value of the height/length ratio above which there are two possible width values
Public Const MAX_HL_RATIO As Double = 0.403140189705650243 ' maximum possible value of the height/length ratio
Public Const MAXERR As Double = 0.0000000001 ' error tolerance
Public Const MAXIT As Integer = 100 ' maximum number of iterations
Public Const ROUNDTO As Integer = 10 ' number of decimal places to round off to
Public Const CURVEDIVS As Integer = 50 ' number of sample points for building the curve (or half-curve as it were)
End Class
- A VB.NET scriptable component
-
98
86
- true
- 84724672-afcf-4457-9ded-ef302f621c7f
- VB Script
- VB Script
- true
- 0
- ' -----------------------------------------------------------------
' Elastic Bending Script by Will McElwain
' Created February 2014
'
' DESCRIPTION:
' This beast creates the so-called 'elastica curve', the shape a long, thin rod or wire makes when it is bent elastically (i.e. not permanently). In this case, force
' is assumed to only be applied horizontally (which would be in line with the rod at rest) and both ends are assumed to be pinned or hinged meaning they are free
' to rotate (as opposed to clamped, when the end tangent angle is fixed, usually horizontally). An interesting finding is that it doesn't matter what the material or
' cross-sectional area is, as long as they're uniform along the entire length. Everything makes the same shape when bent as long as it doesn't cross the threshold
' from elastic to plastic (permanent) deformation (I don't bother to find that limit here, but can be found if the yield stress for a material is known).
'
' Key to the formulas used in this script are elliptic integrals, specifically K(m), the complete elliptic integral of the first kind, and E(m), the complete elliptic
' integral of the second kind. There was a lot of confusion over the 'm' and 'k' parameters for these functions, as some people use them interchangeably, but they are
' not the same. m = k^2 (thus k = Sqrt(m)). I try to use the 'm' parameter exclusively to avoid this confusion. Note that there is a unique 'm' parameter for every
' configuration/shape of the elastica curve.
'
' This script tries to find that unique 'm' parameter based on the inputs. The algorithm starts with a test version of m, evaluates an expression, say 2*E(m)/K(m)-1,
' then compares the result to what it should be (in this case, a known width/length ratio). Iterate until the correct m is found. Once we have m, we can then calculate
' all of the other unknowns, then find points that lie on that curve, then interpolate those points for the actual curve. You can also use Wolfram|Alpha as I did to
' find the m parameter based on the equations in this script (example here: http://tiny.cc/t4tpbx for when say width=45.2 and length=67.1).
'
' Other notes:
' * This script works with negative values for width, which will creat a self-intersecting curve (as it should). The curvature of the elastica starts to break down around
' m=0.95 (~154°), but this script will continue to work until M_MAX, m=0.993 (~169°). If you wish to ignore self-intersecting curves, set ignoreSelfIntersecting to True
' * When the only known values are length and height, it is actually possible for certain ratios of height to length to have two valid m values (thus 2 possible widths
' and angles). This script will return them both.
' * Only the first two valid parameters (of the required ones) will be used, meaning if all four are connected (length, width or a PtB, height, and angle), this script will
' only use length and width (or a PtB).
' * Depending on the magnitude of your inputs (say if they're really small, like if length < 10), you might have to increase the constant ROUNDTO at the bottom
'
' REFERENCES:
' {1} "The elastic rod" by M.E. Pacheco Q. & E. Pina, http://www.scielo.org.mx/pdf/rmfe/v53n2/v53n2a8.pdf
' {2} "An experiment in nonlinear beam theory" by A. Valiente, http://www.deepdyve.com/lp/doc/I3lwnxdfGz , also here: http://tiny.cc/Valiente_AEiNBT
' {3} "Snap buckling, writhing and Loop formation In twisted rods" by V.G.A. GOSS, http://myweb.lsbu.ac.uk/~gossga/thesisFinal.pdf
' {4} "Theory of Elastic Stability" by Stephen Timoshenko, http://www.scribd.com/doc/50402462/Timoshenko-Theory-of-Elastic-Stability (start on p. 76)
'
' INPUT:
' PtA - First anchor point (required)
' PtB - Second anchor point (optional, though 2 out of the 4--length, width, height, angle--need to be specified)
' [note that PtB can be the same as PtA (meaning width would be zero)]
' [also note that if a different width is additionally specified that's not equal to the distance between PtA and PtB, then the end point will not equal PtB anymore]
' Pln - Plane of the bent rod/wire, which bends up in the +y direction. The line between PtA and PtB (if specified) must be parallel to the x-axis of this plane
'
' ** 2 of the following 4 need to be specified **
' Len - Length of the rod/wire, which needs to be > 0
' Wid - Width between the endpoints of the curve [note: if PtB is specified in addition, and distance between PtA and PtB <> width, the end point will be relocated
' Ht - Height of the bent rod/wire (when negative, curve will bend downward, relative to the input plane, instead)
' Ang - Inner departure angle or tangent angle (in radians) at the ends of the bent rod/wire. Set up so as width approaches length (thus height approaches zero), angle approaches zero
'
' * Following variables only needed for optional calculating of bending force, not for shape of curve.
' E - Young's modulus (modulus of elasticity) in GPa (=N/m^2) (material-specific. for example, 7075 aluminum is roughly 71.7 GPa)
' I - Second moment of area (or area moment of inertia) in m^4 (cross-section-specific. for example, a hollow rod
' would have I = pi * (outer_diameter^4 - inner_diameter^4) / 32
' Note: E*I is also known as flexural rigidity or bending stiffness
'
' OUTPUT:
' out - only for debugging messages
' Pts - the list of points that approximate the shape of the elastica
' Crv - the 3rd-degree curve interpolated from those points (with accurate start & end tangents)
' L - the length of the rod/wire
' W - the distance (width) between the endpoints of the rod/wire
' H - the height of the bent rod/wire
' A - the tangent angle at the (start) end of the rod/wire
' F - the force needed to hold the rod/wire in a specific shape (based on the material properties & cross-section) **be sure your units for 'I' match your units for the
' rest of your inputs (length, width, etc.). Also note that the critical buckling load (force) that makes the rod/wire start to bend can be found at height=0
'
' THANKS TO:
' Mårten Nettelbladt (thegeometryofbending.blogspot.com)
' Daniel Piker (Kangaroo plugin)
' David Rutten (Grasshopper guru)
' Euler & Bernoulli (the O.G.'s)
'
' -----------------------------------------------------------------
Dim ignoreSelfIntersecting As Boolean = False ' set to True if you don't want to output curves where width < 0, which creates a self-intersecting curve
Dim inCt As Integer = 0 ' count the number of required parameters that are receiving data
Dim length As Double
Dim width As System.Object = Nothing ' need to set as Nothing so we can check if it has been assigned a value later
Dim height As Double
Dim angle As Double
Dim m As Double
Dim multiple_m As New List(Of Double)
Dim AtoB As Line
Dim flip_H As Boolean = False ' if height is negative, this flag will be set
Dim flip_A As Boolean = False ' if angle is negative, this flag will be set
If Not IsSet("Pln") Then
Msg("error", "Base plane is not set")
Return
End If
If Not IsSet("PtA") Then
Msg("error", "Point A is not set")
Return
End If
If Math.Round(Pln.DistanceTo(PtA), Defined.ROUNDTO) <> 0 Then
Msg("error", "Point A is not on the base plane")
Return
End If
Dim refPlane As Plane = Pln ' create a reference plane = input plane and set the origin of it to PtA in case PtA isn't the origin already
refPlane.Origin = PtA
If IsSet("PtB") Then
If Math.Round(Pln.DistanceTo(PtB), Defined.ROUNDTO) <> 0 Then
Msg("error", "Point B is not on the base plane")
Return
End If
AtoB = New Line(PtA, PtB)
If AtoB.Length <> 0 And Not AtoB.Direction.IsPerpendicularTo(Pln.YAxis) Then
Msg("error", "The line between PtA and PtB is not perpendicular to the Y-axis of the specified plane")
Return
End If
inCt += 1
If IsSet("Wid") Then Msg("info", "Wid will override the distance between PtA and PtB. If you do not want this to happen, disconnect PtB or Wid.")
width = PtA.DistanceTo(PtB) ' get the width (distance) between PtA and PtB
Dim refPtB As Point3d
refPlane.RemapToPlaneSpace(PtB, refPtB)
If refPtB.X < 0 Then width = -width ' check if PtB is to the left of PtA...if so, width is negative
End If
If IsSet("Len") Then inCt += 1
If IsSet("Wid") Then inCt += 1
If IsSet("Ht") Then inCt += 1
If IsSet("Ang") Then inCt += 1
If inCt > 2 Then Msg("info", "More parameters set than are required (out of length, width, height, angle). Only using the first two valid ones.")
' check for connected/specified inputs. note: only the first two that it comes across will be used
If IsSet("Len") Then ' if length is specified then...
If Len <= 0 Then
Msg("error", "Length cannot be negative or zero")
Return
End If
If IsSet("Wid") Then ' find height & angle based on length and specified width
If Wid > Len Then
Msg("error", "Width is greater than length")
Return
End If
If Wid = Len Then ' skip the solver and set the known values
height = 0
m = 0
angle = 0
width = Wid
Else
m = SolveMFromLenWid(Len, Wid)
height = Cal_H(Len, m) ' L * Sqrt(m) / K(m)
angle = Cal_A(m) ' Acos(1 - 2 * m)
width = Wid
End If
Else If width IsNot Nothing Then ' find height & angle based on length and calculated width (distance between PtA and PtB)
If width > Len Then
Msg("error", "Width is greater than length")
Return
End If
If width = Len Then ' skip the solver and set the known values
height = 0
m = 0
angle = 0
Else
m = SolveMFromLenWid(Len, width)
height = Cal_H(Len, m) ' L * Sqrt(m) / K(m)
angle = Cal_A(m) ' Acos(1 - 2 * m)
End If
Else If IsSet("Ht") Then ' find width & angle based on length and height ** possible to return 2 results **
If Math.Abs(Ht / Len) > Defined.MAX_HL_RATIO Then
Msg("error", "Height not possible with given length")
Return
End If
If Ht < 0 Then
Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_A = True
flip_H = True
End If
If Ht = 0 Then ' skip the solver and set the known values
width = Len
angle = 0
Else
multiple_m = SolveMFromLenHt(Len, Ht) ' note that it's possible for two values of m to be found if height is close to max height
If multiple_m.Count = 1 Then ' if there's only one m value returned, calculate the width & angle here. we'll deal with multiple m values later
m = multiple_m.Item(0)
width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1)
angle = Cal_A(m) ' Acos(1 - 2 * m)
End If
End If
height = Ht
Else If IsSet("Ang") Then ' find width & height based on length and angle
If Ang < 0 Then
Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_A = True
flip_H = True
End If
m = Cal_M(Ang) ' (1 - Cos(a)) / 2
If Ang = 0 Then ' skip the solver and set the known values
width = Len
height = 0
Else
width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1)
height = Cal_H(Len, m) ' L * Sqrt(m) / K(m)
End If
angle = Ang
Else
Msg("error", "Need to specify one more parameter in addition to length")
Return
End If
length = Len
Else If IsSet("Wid") Then ' if width is specified then...
If IsSet("Ht") Then ' find length & angle based on specified width and height
If Ht < 0 Then
Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_A = True
flip_H = True
End If
If Ht = 0 Then ' skip the solver and set the known values
length = Wid
angle = 0
Else
m = SolveMFromWidHt(Wid, Ht)
length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m)
angle = Cal_A(m) ' Acos(1 - 2 * m)
End If
height = Ht
Else If IsSet("Ang") Then ' find length & height based on specified width and angle
If Wid = 0 Then
Msg("error", "Curve not possible with width = 0 and an angle as inputs")
Return
End If
If Ang < 0 Then
Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_A = True
flip_H = True
End If
m = Cal_M(Ang) ' (1 - Cos(a)) / 2
If Ang = 0 Then ' skip the solver and set the known values
length = Wid
height = 0
Else
length = Wid / (2 * EllipticE(m) / EllipticK(m) - 1)
If length < 0 Then
Msg("error", "Curve not possible at specified width and angle (calculated length is negative)")
Return
End If
height = Cal_H(length, m) ' L * Sqrt(m) / K(m)
End If
angle = Ang
Else
Msg("error", "Need to specify one more parameter in addition to width (Wid)")
Return
End If
width = Wid
Else If width IsNot Nothing Then ' if width is determined by PtA and PtB then...
If IsSet("Ht") Then ' find length & angle based on calculated width and height
If Ht < 0 Then
Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_A = True
flip_H = True
End If
If Ht = 0 Then ' skip the solver and set the known values
length = width
angle = 0
Else
m = SolveMFromWidHt(width, Ht)
length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m)
angle = Cal_A(m) ' Acos(1 - 2 * m)
End If
height = Ht
Else If IsSet("Ang") Then ' find length & height based on calculated width and angle
If width = 0 Then
Msg("error", "Curve not possible with width = 0 and an angle as inputs")
Return
End If
If Ang < 0 Then
Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_A = True
flip_H = True
End If
m = Cal_M(Ang) ' (1 - Cos(a)) / 2
If Ang = 0 Then ' skip the solver and set the known values
length = width
height = 0
Else
length = width / (2 * EllipticE(m) / EllipticK(m) - 1)
If length < 0 Then
Msg("error", "Curve not possible at specified width and angle (calculated length is negative)")
Return
End If
height = Cal_H(length, m) ' L * Sqrt(m) / K(m)
End If
angle = Ang
Else
Msg("error", "Need to specify one more parameter in addition to PtA and PtB")
Return
End If
Else If IsSet("Ht") Then ' if height is specified then...
If IsSet("Ang") Then ' find length & width based on height and angle
If Ht < 0 Then
Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_H = True
flip_A = True
End If
If Ht = 0 Then
Msg("error", "Height can't = 0 if only height and angle are specified")
Return
Else
If Ang < 0 Then
Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_A = Not flip_A
flip_H = Not flip_H
End If
m = Cal_M(Ang) ' (1 - Cos(a)) / 2
If Ang = 0 Then
Msg("error", "Angle can't = 0 if only height and angle are specified")
Return
Else
length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m)
width = Cal_W(length, m) ' L * (2 * E(m) / K(m) - 1)
End If
angle = Ang
End If
height = Ht
Else
Msg("error", "Need to specify one more parameter in addition to height")
Return
End If
Else If IsSet("Ang") Then
Msg("error", "Need to specify one more parameter in addition to angle")
Return
Else
Msg("error", "Need to specify two of the four parameters: length, width (or PtB), height, and angle")
Return
End If
If m > Defined.M_MAX Then
Msg("error", "Form of curve not solvable with current algorithm and given inputs")
Return
End If
refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2)
If multiple_m.Count > 1 Then ' if there is more than one m value returned, calculate the width, angle, and curve for each
Dim multi_pts As New DataTree(Of Point3d)
Dim multi_crv As New List(Of Curve)
Dim tmp_pts As New List(Of Point3d)
Dim multi_W, multi_A, multi_F As New List(Of Double)
Dim j As Integer = 0 ' used for creating a new branch (GH_Path) for storing pts which is itself a list of points
For Each m_val As Double In multiple_m
width = Cal_W(length, m_val) 'length * (2 * EllipticE(m_val) / EllipticK(m_val) - 1)
If width < 0 And ignoreSelfIntersecting Then
Msg("warning", "One curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False")
Continue For
End If
If m_val >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve whose width = " & Math.Round(width, 4) & " is not guaranteed")
angle = Cal_A(m_val) 'Math.Asin(2 * m_val - 1)
refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2)
tmp_pts = FindBendForm(length, width, m_val, angle, refPlane)
multi_pts.AddRange(tmp_pts, New GH_Path(j))
multi_crv.Add(MakeCurve(tmp_pts, angle, refPlane))
multi_W.Add(width)
If flip_A Then angle = -angle
multi_A.Add(angle)
E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2)
multi_F.Add(EllipticK(m_val) ^ 2 * E * I / length ^ 2) ' from reference {4} pg. 79
j += 1
refPlane.Origin = PtA ' reset the reference plane origin to PtA for the next m_val
'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m_val & ", k=" & Math.Sqrt(m_val) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height)
Next
' assign the outputs
Pts = multi_pts
Crv = multi_crv
L = length
W = multi_W
If flip_H Then height = -height
H = height
A = multi_A
F = multi_F
Else ' only deal with the single m value
If m >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve at these parameters is not guaranteed")
If width < 0 And ignoreSelfIntersecting Then
Msg("error", "Curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False")
Return
End If
Pts = FindBendForm(length, width, m, angle, refPlane)
Crv = MakeCurve(pts, angle, refPlane)
L = length
W = width
If flip_H Then height = -height
H = height
If flip_A Then angle = -angle
A = angle
E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2)
F = EllipticK(m) ^ 2 * E * I / length ^ 2 ' from reference {4} pg. 79. Note: the critical buckling (that makes the rod/wire start to bend) can be found at height=0 (width=length)
'height = Math.Sqrt(((2 * Len / 5) ^ 2 - ((Wid - Len / 5) / 2) ^ 2) ' quick approximation discovered by Mårten of 'Geometry of Bending' fame ( http://tiny.cc/it2pbx )
'width = (Len +/- 2 * Math.Sqrt(4 * Len ^ 2 - 25 * Ht ^ 2)) / 5 ' derived from above
'length = (2 * Math.Sqrt(15 * Ht ^ 2 + 4 * Wid ^ 2) - Wid) / 3 ' derived from above
'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m & ", k=" & Math.Sqrt(m) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height)
End If
-
2239
2912
84
184
-
2281
3004
- 9
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 8
- 3ede854e-c753-40eb-84cb-b48008f14fd4
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- true
- Script Variable PtA
- c384ac3f-df4d-453d-a7c5-387e93a60b13
- PtA
- PtA
- true
- 0
- true
- 0
- e1937b56-b1da-4c12-8bd8-e34ee81746ef
-
2241
2914
25
20
-
2255
2924
- 1
- 1
- {0}
-
0
0
0
- Grasshopper.Kernel.Types.GH_Point
- true
- Script Variable PtB
- 8bddec7a-5cee-4c2d-a042-aa892fd83b36
- PtB
- PtB
- true
- 0
- true
- 0
- e1937b56-b1da-4c12-8bd8-e34ee81746ef
-
2241
2934
25
20
-
2255
2944
- true
- Script Variable Pln
- b3259d85-c916-4d9a-99bf-7e895fca6eec
- Pln
- Pln
- true
- 0
- true
- 0
- 3897522d-58e9-4d60-b38c-978ddacfedd8
-
2241
2954
25
20
-
2255
2964
- 1
- 1
- {0}
- Grasshopper.Kernel.Types.GH_Plane
-
0
0
0
1
0
0
0
1
0
- true
- Script Variable Len
- fb43f351-f380-4f29-8e4f-9fb2010411db
- Len
- Len
- true
- 0
- true
- 0
- 8e991e99-5fb8-41e1-928d-1bba8fb9f7d7
-
2241
2974
25
20
-
2255
2984
- true
- Script Variable Wid
- 93dbd769-ff0d-4cae-938b-75d6be10d33d
- Wid
- Wid
- true
- 0
- true
- 5efa96ce-0a9b-4178-9dd5-b7e889d7e5f9
- 1
- 8e991e99-5fb8-41e1-928d-1bba8fb9f7d7
-
2241
2994
25
20
-
2255
3004
- true
- Script Variable Ht
- 9ce1f865-89f1-4a5b-a1c9-65f77f658109
- Ht
- Ht
- true
- 0
- true
- 0
- 8e991e99-5fb8-41e1-928d-1bba8fb9f7d7
-
2241
3014
25
20
-
2255
3024
- true
- Script Variable Ang
- 717409d3-a5de-4c70-987d-4ebacb963883
- Ang
- Ang
- true
- 0
- true
- f67b69a9-68b4-4391-9b0b-36f79b377ace
- 1
- 8e991e99-5fb8-41e1-928d-1bba8fb9f7d7
-
2241
3034
25
20
-
2255
3044
- true
- Script Variable E
- e7404a32-6dcf-4dac-96ec-df9fcf003e19
- E
- E
- true
- 0
- true
- 0
- 8e991e99-5fb8-41e1-928d-1bba8fb9f7d7
-
2241
3054
25
20
-
2255
3064
- true
- Script Variable I
- 3b61faa3-6a4f-4d43-96da-0fe1d52fda2b
- I
- I
- true
- 0
- true
- 0
- 8e991e99-5fb8-41e1-928d-1bba8fb9f7d7
-
2241
3074
25
20
-
2255
3084
- 1
- Print, Reflect and Error streams
- 7de3b2dc-fe4e-43e1-a0a8-4bc81691250c
- out
- out
- false
- 0
-
2296
2914
25
22
-
2308.5
2925.25
- Output parameter Pts
- e309227c-8c84-4572-b1a0-62b15cb940a1
- Pts
- Pts
- false
- 0
-
2296
2936
25
23
-
2308.5
2947.75
- Output parameter Crv
- 5a25ab62-6c28-4610-a63f-6f176662a312
- Crv
- Crv
- false
- 0
-
2296
2959
25
22
-
2308.5
2970.25
- Output parameter L
- 9b38a7ff-5647-4812-906b-0380c8c21268
- L
- L
- false
- 0
-
2296
2981
25
23
-
2308.5
2992.75
- Output parameter W
- 280df3eb-0705-4e69-a3c9-6590c1a91136
- W
- W
- false
- 0
-
2296
3004
25
22
-
2308.5
3015.25
- Output parameter H
- 42e4bfc9-2a39-48b3-8134-0710963c7972
- H
- H
- false
- 0
-
2296
3026
25
23
-
2308.5
3037.75
- Output parameter A
- dea0908a-7936-4573-864b-36836a562088
- A
- A
- false
- 0
-
2296
3049
25
22
-
2308.5
3060.25
- Output parameter F
- 720572bc-2bf4-4e70-ae3b-809c1be16c82
- F
- F
- false
- 0
-
2296
3071
25
23
-
2308.5
3082.75
- 9c85271f-89fa-4e9f-9f4a-d75802120ccc
- Division
- Mathematical division
- 97ab47f4-b3a2-4564-9661-8a5c3ac8c83b
- Division
- Division
-
2093
3067
85
44
-
2124
3089
- Item to divide (dividend)
- 2db69d8c-38ac-4c96-b360-bef99ba41020
- A
- A
- false
- 5efa96ce-0a9b-4178-9dd5-b7e889d7e5f9
- 1
-
2095
3069
14
20
-
2103.5
3079
- Item to divide with (divisor)
- f262caa8-23c8-4c87-a3e1-aab77ecc8452
- B
- B
- false
- 0
-
2095
3089
14
20
-
2103.5
3099
- 1
- 1
- {0}
- Grasshopper.Kernel.Types.GH_Integer
- 4
- The result of the Division
- 3d453240-0714-43b0-9db3-0e05947c2bae
- Result
- Result
- false
- 0
-
2139
3069
37
40
-
2157.5
3089
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- 5efa96ce-0a9b-4178-9dd5-b7e889d7e5f9
- Panel
- false
- 0
- 0
- sqrt(2)/2
-
1972
3010
74
40
- 0
- 0
- 0
-
1972.334
3010.739
-
255;255;250;90
- true
- true
- true
- false
- false
- true
- d5967b9f-e8ee-436b-a8ad-29fdcecf32d5
- Curve
- Contains a collection of generic curves
- true
- 01ec555e-389e-4f79-97f1-1e34a435f926
- Curve
- Curve
- false
- 5a25ab62-6c28-4610-a63f-6f176662a312
- 1
-
2360
2993
50
24
-
2385.325
3005.589
- 11bbd48b-bb0a-4f1b-8167-fa297590390d
- End Points
- Extract the end points of a curve.
- true
- 4e129894-4acb-4e3e-9863-9f02f2b80c22
- End Points
- End Points
-
2474
3599
99
44
-
2524
3621
- Curve to evaluate
- 77310ce5-68e0-49e6-92ca-50d1c7d0596c
- Curve
- Curve
- false
- d72b105e-c560-49a3-88af-d38a5fcc6218
- 1
-
2476
3601
33
40
-
2494
3621
- Curve start point
- 0cbeac5f-bb06-499c-a5bd-0cad96bfe260
- Start
- Start
- false
- 0
-
2539
3601
32
20
-
2555
3611
- Curve end point
- 8c7568cf-d561-4af4-aaac-9c6d9d1f0a49
- End
- End
- false
- 0
-
2539
3621
32
20
-
2555
3631
- be907708-07eb-456c-9f92-40f2ce6d3745
- 1c9de8a1-315f-4c56-af06-8f69fee80a7a
- Points Trim Curve
- Trim a curve with a set of points (or optionally a set of parameters) like a dash pattern, if points are not on the curve they will be pulled to it.
- true
- 26431423-61ab-49d1-8368-fced14900c9d
- Points Trim Curve
- Points Trim Curve
-
2606
3455
164
84
-
2681
3497
- Curve to trim
- 42d2d5d3-68cf-4430-ba72-2438a6b322aa
- Curve
- Curve
- false
- d72b105e-c560-49a3-88af-d38a5fcc6218
- 1
-
2608
3457
58
20
-
2638.5
3467
- 1
- Points to trim with
- 372630ea-71a0-4f68-94d7-38efc8854536
- Points
- Points
- true
- 72ecb537-67d8-4cef-8f39-2f72e8125b26
- d5b47c77-5cd0-4170-867f-ca163e32c1cb
- 2
-
2608
3477
58
20
-
2638.5
3487
- 1
- Optional parameters to trim with instead of points (will override points if points are also input)
- ee0f3b05-838e-4adc-9697-16d1a1834bfb
- Parameters
- Parameters
- true
- 0
-
2608
3497
58
20
-
2638.5
3507
- Flip the trimming pattern to switch which parts of the curve get trimmed away
- 3b29b120-33b8-4411-8ccc-751d5827bd91
- Flip
- Flip
- false
- 0
-
2608
3517
58
20
-
2638.5
3527
- 1
- 1
- {0}
- false
- 1
- Resulting trimmed curves
- 906326de-dd53-486c-ba85-24d817bedbfc
- Trimmed
- Trimmed
- false
- 0
-
2696
3457
72
26
-
2732
3470.333
- 1
- Curve sub-domain for each remaining part of the curve after trimming
- fcd822f6-4443-4c23-82e0-23438c49863d
- Sub-Domains
- Sub-Domains
- false
- 0
-
2696
3483
72
27
-
2732
3497
- True if the points trimmed the curve, False if the points did not trim the curve
- 75f86ecb-5aac-483f-b6a8-54641851bde3
- Intersected
- Intersected
- false
- 0
-
2696
3510
72
27
-
2732
3523.667
- fbac3e32-f100-4292-8692-77240a42fd1a
- Point
- Contains a collection of three-dimensional points
- true
- 72ecb537-67d8-4cef-8f39-2f72e8125b26
- Point
- Point
- false
- 0cbeac5f-bb06-499c-a5bd-0cad96bfe260
- 1
-
2547
3566
50
24
-
2572.885
3578.891
- ccc7b468-e743-4049-891f-299432545898
- Curve Middle
- Get the point in the middle of a curve
- 70518cdb-7ee0-4314-8da7-706740513e8f
- Curve Middle
- Curve Middle
-
2627
3344
116
28
-
2677
3358
- Curve for mid-point.
- e232d78f-395c-4808-b966-1c0174b7afea
- Curve
- Curve
- false
- d72b105e-c560-49a3-88af-d38a5fcc6218
- 1
-
2629
3346
33
24
-
2647
3358
- Point in the middle of the curve
- d5b47c77-5cd0-4170-867f-ca163e32c1cb
- Midpoint
- Midpoint
- false
- 0
-
2692
3346
49
24
-
2716.5
3358
- 310f9597-267e-4471-a7d7-048725557528
- 08bdcae0-d034-48dd-a145-24a9fcf3d3ff
- GraphMapper+
- External Graph mapper
You can Right click on the Heteromapper's icon and choose "AutoDomain" mode to define Output domain based on input domain interval; otherwise it'll be set to 0-1 in "Normalized" mode.
- 20c6552b-b3bb-4a89-94ca-13c4e2e43db9
- GraphMapper+
- GraphMapper+
- false
-
1801
2724
129
104
-
1868
2776
- External curve as a graph
- 6c693ab3-3b94-405b-adbc-1512efb9d9a9
- Curve
- Curve
- false
- 888980c4-0dec-45f4-8006-fa5b932a754f
- 1
-
1803
2726
50
20
-
1829.5
2736
- Optional Rectangle boundary. If omitted the curve's would be landed
- 9b3712d5-0c29-4704-b116-357d73c66bd9
- Boundary
- Boundary
- true
- d222d866-05d2-41e8-9567-8cca0e0544d2
- 1
-
1803
2746
50
20
-
1829.5
2756
- 1
- List of input numbers
- 0e38d596-b622-4667-b4b9-ae05975994a4
- Numbers
- Numbers
- false
- bd4aaa1e-5c93-4d92-a13b-51513caaff31
- 1
-
1803
2766
50
20
-
1829.5
2776
- 1
- 9
- {0}
- 0.1
- 0.2
- 0.3
- 0.4
- 0.5
- 0.6
- 0.7
- 0.8
- 0.9
- (Optional) Input Domain
if omitted, it would be 0-1 in "Normalize" mode by default
or be the interval of the input list in case of selecting "AutoDomain" mode
- 5bcbd057-e761-453c-8d9b-0c136cd52c8a
- Input
- Input
- true
- 0
-
1803
2786
50
20
-
1829.5
2796
- (Optional) Output Domain
if omitted, it would be 0-1 in "Normalize" mode by default
or be the interval of the input list in case of selecting "AutoDomain" mode
- cb3c83b1-ea5d-4556-a2cd-947db2b85070
- Output
- Output
- true
- 0
-
1803
2806
50
20
-
1829.5
2816
- 1
- Output Numbers
- aa99eb53-f847-4761-874c-b2b7a794afd6
- Number
- Number
- false
- 0
-
1883
2726
45
100
-
1905.5
2776
- 575660b1-8c79-4b8d-9222-7ab4a6ddb359
- Rectangle 2Pt
- Create a rectangle from a base plane and two points
- true
- 854346d9-987e-4342-8d62-d29ccc1a4cd3
- Rectangle 2Pt
- Rectangle 2Pt
-
1934
2464
129
84
-
1992
2506
- Rectangle base plane
- c5fedded-f2bb-44cc-a6db-545b7f0215de
- Plane
- RANGE
- false
- 0
-
1936
2466
41
20
-
1958
2476
- 1
- 1
- {0}
-
0
0
0
1
0
0
0
1
0
- First corner point.
- 2c06c2ff-6848-4d61-8acd-ae78937cb293
- Point A
- Point A
- false
- 52cef00d-db8e-4b87-8695-4352608b0e17
- 1
-
1936
2486
41
20
-
1958
2496
- 1
- 1
- {0}
-
0
0
0
- Second corner point.
- 114f8d8e-db76-4e96-86ba-7a143c7ced74
- Point B
- Point B
- false
- 011b00fc-5add-41a0-9757-9d38ebdc9d11
- 1
-
1936
2506
41
20
-
1958
2516
- 1
- 1
- {0}
-
1
1
0
- Rectangle corner fillet radius
- a236b107-43f0-4732-ab0f-101a758127ea
- Radius
- Radius
- false
- 0
-
1936
2526
41
20
-
1958
2536
- 1
- 1
- {0}
- 0
- Rectangle defined by P, A and B
- d222d866-05d2-41e8-9567-8cca0e0544d2
- Rectangle
- Rectangle
- false
- 0
-
2007
2466
54
40
-
2034
2486
- Length of rectangle curve
- 830470ec-1feb-48e8-bbd9-ef386ee8c7cc
- Length
- Length
- false
- 0
-
2007
2506
54
40
-
2034
2526
- b6236720-8d88-4289-93c3-ac4c99f9b97b
- Relay
- 2
- A wire relay object
- bd4aaa1e-5c93-4d92-a13b-51513caaff31
- Relay
- Relay
- false
- 8d0d12bd-da23-49cc-b34c-50a33768057a
- 1
-
2819
2867
44
16
-
2841
2875
- e9eb1dcf-92f6-4d4d-84ae-96222d60f56b
- Move
- Translate (move) an object along a vector.
- true
- f678f333-3b39-4b6c-bd80-2b85058c90ac
- Move
- Move
-
2868
2923
141
44
-
2936
2945
- Base geometry
- 7cab920d-d74d-4e0c-8312-2eeecf42c38b
- Geometry
- Geometry
- true
- 3a20ff06-eeb1-4b64-926b-3dfaf9128bc9
- 1
-
2870
2925
51
20
-
2897
2935
- Translation vector
- cff43877-ee64-4b45-9621-9ab78fdbe784
- Motion
- Motion
- false
- 0c707852-20e8-4815-9445-3fe270b3ab5b
- 1
-
2870
2945
51
20
-
2897
2955
- 1
- 1
- {0}
-
0
0
10
- Translated geometry
- 9d691b43-c570-4280-97d7-5f1b84e62bac
- Geometry
- Geometry
- false
- 0
-
2951
2925
56
20
-
2979
2935
- Transformation data
- 626436ef-0482-4ada-97e5-693d8281ed11
- Transform
- Transform
- false
- 0
-
2951
2945
56
20
-
2979
2955
- 4c4e56eb-2f04-43f9-95a3-cc46a14f495a
- Line
- Create a line between two points.
- true
- 55fdd8e2-6ed0-4f24-88d8-94d449dfe815
- Line
- Line
-
2841
3566
117
44
-
2913
3588
- Line start point
- d8c018ef-493f-49db-b7f3-21301fec544e
- Start Point
- Start Point
- false
- 72ecb537-67d8-4cef-8f39-2f72e8125b26
- 1
-
2843
3568
55
20
-
2872
3578
- Line end point
- 4e3b1748-0d5a-4b92-92f1-4c2c570cf1f8
- End Point
- End Point
- false
- d5b47c77-5cd0-4170-867f-ca163e32c1cb
- 1
-
2843
3588
55
20
-
2872
3598
- Line segment
- d059be0c-4090-490e-a401-02c4c42d0e64
- Line
- Line
- false
- 0
-
2928
3568
28
40
-
2942
3588
- fbac3e32-f100-4292-8692-77240a42fd1a
- Point
- Contains a collection of three-dimensional points
- true
- 7c8554dc-77a9-4f2d-a00d-ed5180e8d21c
- Point
- Point
- false
- e309227c-8c84-4572-b1a0-62b15cb940a1
- 1
-
2362
2943
50
24
-
2387.679
2955.742
- b7798b74-037e-4f0c-8ac7-dc1043d093e0
- Rotate
- Rotate an object in a plane.
- true
- af4e5930-41a9-427c-86d8-99365f78aab9
- Rotate
- Rotate
-
2427
2992
141
64
-
2495
3024
- Base geometry
- 6b566a37-e83d-473d-8cc1-0c08a064cb4f
- Geometry
- Geometry
- true
- 01ec555e-389e-4f79-97f1-1e34a435f926
- 1
-
2429
2994
51
20
-
2456
3004
- Rotation angle in radians
- aca27465-1f43-49df-a779-65df3110b2a4
- Angle
- Angle
- false
- 0
- false
-
2429
3014
51
20
-
2456
3024
- 1
- 1
- {0}
- 0.78539816339744828
- Rotation plane
- d170ea32-fc51-46dc-980c-1763b657e23c
- Plane
- Plane
- false
- 0
-
2429
3034
51
20
-
2456
3044
- 1
- 1
- {0}
-
0
0
0
1
0
0
0
1
0
- Rotated geometry
- c8cb0202-0ba9-413f-8c18-78a41199eff6
- Geometry
- Geometry
- false
- 0
-
2510
2994
56
30
-
2538
3009
- Transformation data
- b98b2b1f-87b9-4da5-84dd-6c473ae1e526
- Transform
- Transform
- false
- 0
-
2510
3024
56
30
-
2538
3039
- 7376fe41-74ec-497e-b367-1ffe5072608b
- Curvature Graph
- Draws Rhino Curvature Graphs.
- c87abc29-194c-4036-933b-8f0747cc8976
- Curvature Graph
- Curvature Graph
-
5599
3393
71
64
-
5656
3425
- Curve for Curvature graph display
- true
- 0c1236a3-1968-48db-af7c-61e00644cfb4
- Curve
- Curve
- false
- b75a0e49-7509-488b-94f8-b51b4bf11f2d
- 1
-
5601
3395
40
20
-
5622.5
3405
- Sampling density of the Graph
- 7a05d6a0-86c7-4550-b98f-3202010f750f
- Density
- Density
- false
- 0
-
5601
3415
40
20
-
5622.5
3425
- 1
- 1
- {0}
- 1
- Scale of graph
- f45fa326-9ffd-4918-8076-081b2acdb1c3
- Scale
- Scale
- false
- 2a0c1556-bd05-4482-b651-4fd3859576a2
- 1
-
5601
3435
40
20
-
5622.5
3445
- 1
- 1
- {0}
- 105
- 33bcf975-a0b2-4b54-99fd-585c893b9e88
- Digit Scroller
- Numeric scroller for single numbers
- 2a0c1556-bd05-4482-b651-4fd3859576a2
- Digit Scroller
- Digit Scroller
- false
- 0
- 12
- Digit Scroller
- 11
- 95.0
-
5536
3542
250
20
-
5536.763
3542.561
- 11bbd48b-bb0a-4f1b-8167-fa297590390d
- End Points
- Extract the end points of a curve.
- true
- 93f1758c-16b2-47e0-9871-afe9a3c07192
- End Points
- End Points
-
2635
3153
99
44
-
2685
3175
- Curve to evaluate
- a3e0b1a1-c0ff-40d8-a23a-6735946903a9
- Curve
- Curve
- false
- 3a20ff06-eeb1-4b64-926b-3dfaf9128bc9
- 1
-
2637
3155
33
40
-
2655
3175
- Curve start point
- daf1895d-8166-4bdc-ad22-e212ef083484
- Start
- Start
- false
- 0
-
2700
3155
32
20
-
2716
3165
- Curve end point
- ce5fe135-fef0-44f7-964b-dee0af11743b
- End
- End
- false
- 0
-
2700
3175
32
20
-
2716
3185
- 4c4e56eb-2f04-43f9-95a3-cc46a14f495a
- Line
- Create a line between two points.
- true
- a724e5f9-d3b4-4904-85ed-571c608ddc9d
- Line
- Line
-
2751
3093
117
44
-
2823
3115
- Line start point
- f355542c-c932-44af-9d08-b6201a513b4b
- Start Point
- Start Point
- false
- daf1895d-8166-4bdc-ad22-e212ef083484
- 1
-
2753
3095
55
20
-
2782
3105
- 1
- 1
- {0}
-
0
0
0
- Line end point
- 3993a4f5-894d-4aa8-89eb-80548d0ad96d
- End Point
- End Point
- false
- ce5fe135-fef0-44f7-964b-dee0af11743b
- 1
-
2753
3115
55
20
-
2782
3125
- Line segment
- 0c707852-20e8-4815-9445-3fe270b3ab5b
- Line
- Line
- false
- 0
-
2838
3095
28
40
-
2852
3115
- a4cd2751-414d-42ec-8916-476ebf62d7fe
- Radians
- Convert an angle specified in degrees to radians
- b254acc1-4dfa-4c4f-aad0-ccd1396b9649
- Radians
- Radians
-
2083
3120
123
28
-
2144
3134
- Angle in degrees
- 973f26ed-5dd3-4096-a3de-7544409d532c
- Degrees
- Degrees
- false
- 6b57512c-182b-4345-bcd0-089ea0276076
- 1
-
2085
3122
44
24
-
2108.5
3134
- Angle in radians
- f67b69a9-68b4-4391-9b0b-36f79b377ace
- Radians
- Radians
- false
- 0
-
2159
3122
45
24
-
2181.5
3134
- 33bcf975-a0b2-4b54-99fd-585c893b9e88
- Digit Scroller
- Numeric scroller for single numbers
- 6b57512c-182b-4345-bcd0-089ea0276076
- Digit Scroller
- Digit Scroller
- false
- 0
- 12
- Digit Scroller
- 2
- 45.0000000000
-
1895
3161
250
20
-
1895.314
3161.471
- 8073a420-6bec-49e3-9b18-367f6fd76ac3
- Join Curves
- Join as many curves as possible
- true
- c414aca5-bb51-4900-b198-4c86419d65d4
- Join Curves
- Join Curves
-
3157
3065
137
44
-
3236
3087
- 1
- Curves to join
- 32373b89-9c7c-40b0-9ab5-c5e5f5ea0b4b
- 1
- Curves
- Curves
- false
- 9d691b43-c570-4280-97d7-5f1b84e62bac
- 95808d86-d6c9-4382-9226-e80f2969b037
- 2
-
3159
3067
62
20
-
3199.5
3077
- Preserve direction of input curves
- 9b2a9ea2-b4aa-427a-8e09-f5d92e00fc54
- Preserve
- Preserve
- false
- 0
-
3159
3087
62
20
-
3199.5
3097
- 1
- 1
- {0}
- false
- 1
- Joined curves and individual curves that could not be joined.
- 758b07e1-eba4-4854-bc42-821bfaf9cf50
- Curves
- Curves
- false
- 0
-
3251
3067
41
40
-
3271.5
3087
- 079bd9bd-54a0-41d4-98af-db999015f63d
- VB Script
- Private Function IsSet(ByVal param As String) As Boolean ' Check if an input parameter has data
Dim i As Integer = Component.Params.IndexOfInputParam(param)
If i > -1 Then
Return Component.Params.Input.ElementAt(i).DataType > 1 ' input parameter DataType of 1 means it's not receiving input (internal or external)
Else
Msg("error", "Input parameter '" & param & "' not found")
Return False
End If
End Function
Private Sub Msg(ByVal type As String, ByVal msg As String) ' Output an error, warning, or informational message
Select Case type
Case "error"
Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, msg)
Print("Error: " & msg)
Case "warning"
Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, msg)
Print("Warning: " & msg)
Case "info"
Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Remark, msg)
Print(msg)
End Select
End Sub
' Solve for the m parameter from length and width (reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m))
Private Function SolveMFromLenWid(ByVal L As Double, ByVal w As Double) As Double
If w = 0 Then
Return Defined.M_ZERO_W ' for the boundry condition width = 0, bypass the function and return the known m value
End If
Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT)
Dim lower As Double = 0 ' m must be within this range
Dim upper As Double = 1
Dim m As Double
Dim cwl As Double
Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT
m = (upper + lower) / 2
cwl = 2 * EllipticE(m) / EllipticK(m) - 1 ' calculate w/L with the test value of m
If cwl < w / L Then ' compares the calculated w/L with the actual w/L then narrows the range of possible m
upper = m
Else
lower = m
End If
n += 1
Loop
Return m
End Function
' Solve for the m parameter from length and height (reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m))
' Note that it's actually possible to find 2 valid values for m (hence 2 width values) at certain height values
Private Function SolveMFromLenHt(ByVal L As Double, ByVal h As Double) As List(Of Double)
Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT)
Dim lower As Double = 0 ' m must be within this range
Dim upper As Double = 1
Dim twoWidths As Boolean = h / L >= Defined.DOUBLE_W_HL_RATIO And h / L < Defined.MAX_HL_RATIO ' check to see if h/L is within the range where 2 solutions for the width are possible
Dim m As Double
Dim mult_m As New List(Of Double)
Dim chl As Double
If twoWidths Then
' find the first of two possible solutions for m with the following limits:
lower = Defined.M_DOUBLE_W ' see constants at bottom of script
upper = Defined.M_MAXHEIGHT ' see constants at bottom of script
Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT
m = (upper + lower) / 2
chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m
If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m
upper = m
Else
lower = m
End If
n += 1
Loop
mult_m.Add(m)
' then find the second of two possible solutions for m with the following limits:
lower = Defined.M_MAXHEIGHT ' see constants at bottom of script
upper = 1
Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT
m = (upper + lower) / 2
chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m
If chl < h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m
upper = m
Else
lower = m
End If
n += 1
Loop
If m <= Defined.M_MAX Then ' return this m parameter only if it falls within the maximum useful value (above which the curve breaks down)
mult_m.Add(m)
End If
Else
' find the one possible solution for the m parameter
upper = Defined.M_DOUBLE_W ' limit the upper end of the search to the maximum value of m for which only one solution exists
Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT
m = (upper + lower) / 2
chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m
If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m
upper = m
Else
lower = m
End If
n += 1
Loop
mult_m.Add(m)
End If
Return mult_m
End Function
' Solve for the m parameter from width and height (derived from reference {1} equations (33) and (34) with same notes as above)
Private Function SolveMFromWidHt(ByVal w As Double, ByVal h As Double) As Double
Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT)
Dim lower As Double = 0 ' m must be within this range
Dim upper As Double = 1
Dim m As Double
Dim cwh As Double
Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT
m = (upper + lower) / 2
cwh = (2 * EllipticE(m) - EllipticK(m)) / Math.Sqrt(m) ' calculate w/h with the test value of m
If cwh < w / h Then ' compares the calculated w/h with the actual w/h then narrows the range of possible m
upper = m
Else
lower = m
End If
n += 1
Loop
Return m
End Function
' Calculate length based on height and an m parameter, derived from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m)
Private Function Cal_L(ByVal h As Double, ByVal m As Double) As Double
Return h * EllipticK(m) / Math.Sqrt(m)
End Function
' Calculate width based on length and an m parameter, derived from reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m)
Private Function Cal_W(ByVal L As Double, ByVal m As Double) As Double
Return L * (2 * EllipticE(m) / EllipticK(m) - 1)
End Function
' Calculate height based on length and an m parameter, from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m)
Private Function Cal_H(ByVal L As Double, ByVal m As Double) As Double
Return L * Math.Sqrt(m) / EllipticK(m)
End Function
' Calculate the unique m parameter based on a start tangent angle, from reference {2}, just above equation (9a), that states k = Sin(angle / 2 + Pi / 4),
' but as m = k^2 and due to this script's need for an angle rotated 90° versus the one in reference {1}, the following formula is the result
' New note: verified by reference {4}, pg. 78 at the bottom
Private Function Cal_M(ByVal a As Double) As Double
Return (1 - Math.Cos(a)) / 2 ' equal to Sin^2(a/2) too
End Function
' Calculate start tangent angle based on an m parameter, derived from above formula
Private Function Cal_A(ByVal m As Double) As Double
Return Math.Acos(1 - 2 * m)
End Function
' This is the heart of this script, taking the found (or specified) length, width, and angle values along with the found m parameter to create
' a list of points that approximate the shape or form of the elastica. It works by finding the x and y coordinates (which are reversed versus
' the original equations (12a) and (12b) from reference {2} due to the 90° difference in orientation) based on the tangent angle along the curve.
' See reference {2} for more details on how they derived it. Note that to simplify things, the algorithm only calculates the points for half of the
' curve, then mirrors those points along the y-axis.
Private Function FindBendForm(ByVal L As Double, ByVal w As Double, ByVal m As Double, ByVal ang As Double, ByVal refPln As Plane) As List(Of Point3d)
L = L / 2 ' because the below algorithm is based on the formulas in reference {2} for only half of the curve
w = w / 2 ' same
If ang = 0 Then ' if angle (and height) = 0, then simply return the start and end points of the straight line
Dim out As New List(Of Point3d)
out.Add(refPln.PointAt(w, 0, 0))
out.Add(refPln.PointAt(-w, 0, 0))
Return out
End If
Dim x As Double
Dim y As Double
Dim halfCurvePts As New List(Of Point3d)
Dim fullCurvePts As New List(Of Point3d)
Dim translatedPts As New List(Of Point3d)
ang -= Math.PI / 2 ' a hack to allow this algorithm to work, since the original curve in paper {2} was rotated 90°
Dim angB As Double = ang + (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' angB is the 'lowercase theta' which should be in formula {2}(12b) as the interval
' start [a typo...see equation(3)]. It's necessary to start angB at ang + [interval] instead of just ang due to integration failing at angB = ang
halfCurvePts.Add(New Point3d(w, 0, 0)) ' start with this known initial point, as integration will fail when angB = ang
' each point {x, y} is calculated from the tangent angle, angB, that occurs at each point (which is why this iterates from ~ang to -pi/2, the known end condition)
Do While Math.Round(angB, Defined.ROUNDTO) >= Math.Round(-Math.PI / 2, Defined.ROUNDTO)
y = (Math.Sqrt(2) * Math.Sqrt(Math.Sin(ang) - Math.Sin(angB)) * (w + L)) / (2 * EllipticE(m)) ' note that x and y are swapped vs. (12a) and (12b)
x = (L / (Math.Sqrt(2) * EllipticK(m))) * Simpson(angB, -Math.PI / 2, 500, ang) ' calculate the Simpson approximation of the integral (function f below)
' over the interval angB ('lowercase theta') to -pi/2. side note: is 500 too few iterations for the Simson algorithm?
If Math.Round(x, Defined.ROUNDTO) = 0 Then x = 0
halfCurvePts.Add(New Point3d(x, y, 0))
angB += (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' onto the next tangent angle
Loop
' After finding the x and y values for half of the curve, add the {-x, y} values for the rest of the curve
For Each point As Point3d In halfCurvePts
If Math.Round(point.X, Defined.ROUNDTO) = 0 Then
If Math.Round(point.Y, Defined.ROUNDTO) = 0 Then
fullCurvePts.Add(New Point3d(0, 0, 0)) ' special case when width = 0: when x = 0, only duplicate the point when y = 0 too
End If
Else
fullCurvePts.Add(New Point3d(-point.X, point.Y, 0))
End If
Next
halfCurvePts.Reverse
fullCurvePts.AddRange(halfCurvePts)
For Each p As Point3d In fullCurvePts
translatedPts.Add(refPln.PointAt(p.X, p.Y, p.Z)) ' translate the points from the reference plane to the world plane
Next
Return translatedPts
End Function
' Interpolates the points from FindBendForm to create the Elastica curve. Uses start & end tangents for greater accuracy.
Private Function MakeCurve(ByVal pts As List(Of Point3d), ByVal ang As Double, ByVal refPln As Plane) As Curve
If ang <> 0 Then
Dim ts, te As New Vector3d(refPln.XAxis)
ts.Rotate(ang, refPln.ZAxis)
te.Rotate(-ang, refPln.ZAxis)
Return Curve.CreateInterpolatedCurve(pts, 3, CurveKnotStyle.Chord, ts, te) ' 3rd degree curve with 'Chord' Knot Style
Else
Return Curve.CreateInterpolatedCurve(pts, 3) ' if angle (and height) = 0, then simply interpolate the straight line (no start/end tangents)
End If
End Function
' Implements the Simpson approximation for an integral of function f below
Public Function Simpson(a As Double, b As Double, n As Integer, theta As Double) As Double 'n should be an even number
Dim j As Integer, s1 As Double, s2 As Double, h As Double
h = (b - a) / n
s1 = 0
s2 = 0
For j = 1 To n - 1 Step 2
s1 = s1 + fn(a + j * h, theta)
Next j
For j = 2 To n - 2 Step 2
s2 = s2 + fn(a + j * h, theta)
Next j
Simpson = h / 3 * (fn(a, theta) + 4 * s1 + 2 * s2 + fn(b, theta))
End Function
' Specific calculation for the above integration
Public Function fn(x As Double, theta As Double) As Double
fn = Math.Sin(x) / (Math.Sqrt(Math.Sin(theta) - Math.Sin(x))) ' from reference {2} formula (12b)
End Function
' Return the Complete Elliptic integral of the 1st kind
' Abramowitz and Stegun p.591, formula 17.3.11
' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals
Public Function EllipticK(ByVal m As Double) As Double
Dim sum, term, above, below As Double
sum = 1
term = 1
above = 1
below = 2
For i As Integer = 1 To 100
term *= above / below
sum += Math.Pow(m, i) * Math.Pow(term, 2)
above += 2
below += 2
Next
sum *= 0.5 * Math.PI
Return sum
End Function
' Return the Complete Elliptic integral of the 2nd kind
' Abramowitz and Stegun p.591, formula 17.3.12
' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals
Public Function EllipticE(ByVal m As Double) As Double
Dim sum, term, above, below As Double
sum = 1
term = 1
above = 1
below = 2
For i As Integer = 1 To 100
term *= above / below
sum -= Math.Pow(m, i) * Math.Pow(term, 2) / above
above += 2
below += 2
Next
sum *= 0.5 * Math.PI
Return sum
End Function
Friend Partial NotInheritable Class Defined
Private Sub New()
End Sub
' Note: most of these values for m and h/L ratio were found with Wolfram Alpha and either specific intercepts (x=0) or local minima/maxima. They should be constant.
Public Const M_SKETCHY As Double = 0.95 ' value of the m parameter where the curvature near the ends of the curve gets wonky
Public Const M_MAX As Double = 0.993 ' maximum useful value of the m parameter, above which this algorithm for the form of the curve breaks down
Public Const M_ZERO_W As Double = 0.826114765984970336 ' value of the m parameter when width = 0
Public Const M_MAXHEIGHT As Double = 0.701327460663101223 ' value of the m parameter at maximum possible height of the bent rod/wire
Public Const M_DOUBLE_W As Double = 0.180254422335013983 ' minimum value of the m parameter when two width values are possible for a given height and length
Public Const DOUBLE_W_HL_RATIO As Double = 0.257342117984635757 ' value of the height/length ratio above which there are two possible width values
Public Const MAX_HL_RATIO As Double = 0.403140189705650243 ' maximum possible value of the height/length ratio
Public Const MAXERR As Double = 0.0000000001 ' error tolerance
Public Const MAXIT As Integer = 100 ' maximum number of iterations
Public Const ROUNDTO As Integer = 10 ' number of decimal places to round off to
Public Const CURVEDIVS As Integer = 50 ' number of sample points for building the curve (or half-curve as it were)
End Class
- A VB.NET scriptable component
-
98
86
- true
- 0ee0d29e-783d-4fcb-832e-e2bc26ea1e1d
- VB Script
- VB Script
- true
- 0
- ' -----------------------------------------------------------------
' Elastic Bending Script by Will McElwain
' Created February 2014
'
' DESCRIPTION:
' This beast creates the so-called 'elastica curve', the shape a long, thin rod or wire makes when it is bent elastically (i.e. not permanently). In this case, force
' is assumed to only be applied horizontally (which would be in line with the rod at rest) and both ends are assumed to be pinned or hinged meaning they are free
' to rotate (as opposed to clamped, when the end tangent angle is fixed, usually horizontally). An interesting finding is that it doesn't matter what the material or
' cross-sectional area is, as long as they're uniform along the entire length. Everything makes the same shape when bent as long as it doesn't cross the threshold
' from elastic to plastic (permanent) deformation (I don't bother to find that limit here, but can be found if the yield stress for a material is known).
'
' Key to the formulas used in this script are elliptic integrals, specifically K(m), the complete elliptic integral of the first kind, and E(m), the complete elliptic
' integral of the second kind. There was a lot of confusion over the 'm' and 'k' parameters for these functions, as some people use them interchangeably, but they are
' not the same. m = k^2 (thus k = Sqrt(m)). I try to use the 'm' parameter exclusively to avoid this confusion. Note that there is a unique 'm' parameter for every
' configuration/shape of the elastica curve.
'
' This script tries to find that unique 'm' parameter based on the inputs. The algorithm starts with a test version of m, evaluates an expression, say 2*E(m)/K(m)-1,
' then compares the result to what it should be (in this case, a known width/length ratio). Iterate until the correct m is found. Once we have m, we can then calculate
' all of the other unknowns, then find points that lie on that curve, then interpolate those points for the actual curve. You can also use Wolfram|Alpha as I did to
' find the m parameter based on the equations in this script (example here: http://tiny.cc/t4tpbx for when say width=45.2 and length=67.1).
'
' Other notes:
' * This script works with negative values for width, which will creat a self-intersecting curve (as it should). The curvature of the elastica starts to break down around
' m=0.95 (~154°), but this script will continue to work until M_MAX, m=0.993 (~169°). If you wish to ignore self-intersecting curves, set ignoreSelfIntersecting to True
' * When the only known values are length and height, it is actually possible for certain ratios of height to length to have two valid m values (thus 2 possible widths
' and angles). This script will return them both.
' * Only the first two valid parameters (of the required ones) will be used, meaning if all four are connected (length, width or a PtB, height, and angle), this script will
' only use length and width (or a PtB).
' * Depending on the magnitude of your inputs (say if they're really small, like if length < 10), you might have to increase the constant ROUNDTO at the bottom
'
' REFERENCES:
' {1} "The elastic rod" by M.E. Pacheco Q. & E. Pina, http://www.scielo.org.mx/pdf/rmfe/v53n2/v53n2a8.pdf
' {2} "An experiment in nonlinear beam theory" by A. Valiente, http://www.deepdyve.com/lp/doc/I3lwnxdfGz , also here: http://tiny.cc/Valiente_AEiNBT
' {3} "Snap buckling, writhing and Loop formation In twisted rods" by V.G.A. GOSS, http://myweb.lsbu.ac.uk/~gossga/thesisFinal.pdf
' {4} "Theory of Elastic Stability" by Stephen Timoshenko, http://www.scribd.com/doc/50402462/Timoshenko-Theory-of-Elastic-Stability (start on p. 76)
'
' INPUT:
' PtA - First anchor point (required)
' PtB - Second anchor point (optional, though 2 out of the 4--length, width, height, angle--need to be specified)
' [note that PtB can be the same as PtA (meaning width would be zero)]
' [also note that if a different width is additionally specified that's not equal to the distance between PtA and PtB, then the end point will not equal PtB anymore]
' Pln - Plane of the bent rod/wire, which bends up in the +y direction. The line between PtA and PtB (if specified) must be parallel to the x-axis of this plane
'
' ** 2 of the following 4 need to be specified **
' Len - Length of the rod/wire, which needs to be > 0
' Wid - Width between the endpoints of the curve [note: if PtB is specified in addition, and distance between PtA and PtB <> width, the end point will be relocated
' Ht - Height of the bent rod/wire (when negative, curve will bend downward, relative to the input plane, instead)
' Ang - Inner departure angle or tangent angle (in radians) at the ends of the bent rod/wire. Set up so as width approaches length (thus height approaches zero), angle approaches zero
'
' * Following variables only needed for optional calculating of bending force, not for shape of curve.
' E - Young's modulus (modulus of elasticity) in GPa (=N/m^2) (material-specific. for example, 7075 aluminum is roughly 71.7 GPa)
' I - Second moment of area (or area moment of inertia) in m^4 (cross-section-specific. for example, a hollow rod
' would have I = pi * (outer_diameter^4 - inner_diameter^4) / 32
' Note: E*I is also known as flexural rigidity or bending stiffness
'
' OUTPUT:
' out - only for debugging messages
' Pts - the list of points that approximate the shape of the elastica
' Crv - the 3rd-degree curve interpolated from those points (with accurate start & end tangents)
' L - the length of the rod/wire
' W - the distance (width) between the endpoints of the rod/wire
' H - the height of the bent rod/wire
' A - the tangent angle at the (start) end of the rod/wire
' F - the force needed to hold the rod/wire in a specific shape (based on the material properties & cross-section) **be sure your units for 'I' match your units for the
' rest of your inputs (length, width, etc.). Also note that the critical buckling load (force) that makes the rod/wire start to bend can be found at height=0
'
' THANKS TO:
' Mårten Nettelbladt (thegeometryofbending.blogspot.com)
' Daniel Piker (Kangaroo plugin)
' David Rutten (Grasshopper guru)
' Euler & Bernoulli (the O.G.'s)
'
' -----------------------------------------------------------------
Dim ignoreSelfIntersecting As Boolean = False ' set to True if you don't want to output curves where width < 0, which creates a self-intersecting curve
Dim inCt As Integer = 0 ' count the number of required parameters that are receiving data
Dim length As Double
Dim width As System.Object = Nothing ' need to set as Nothing so we can check if it has been assigned a value later
Dim height As Double
Dim angle As Double
Dim m As Double
Dim multiple_m As New List(Of Double)
Dim AtoB As Line
Dim flip_H As Boolean = False ' if height is negative, this flag will be set
Dim flip_A As Boolean = False ' if angle is negative, this flag will be set
If Not IsSet("Pln") Then
Msg("error", "Base plane is not set")
Return
End If
If Not IsSet("PtA") Then
Msg("error", "Point A is not set")
Return
End If
If Math.Round(Pln.DistanceTo(PtA), Defined.ROUNDTO) <> 0 Then
Msg("error", "Point A is not on the base plane")
Return
End If
Dim refPlane As Plane = Pln ' create a reference plane = input plane and set the origin of it to PtA in case PtA isn't the origin already
refPlane.Origin = PtA
If IsSet("PtB") Then
If Math.Round(Pln.DistanceTo(PtB), Defined.ROUNDTO) <> 0 Then
Msg("error", "Point B is not on the base plane")
Return
End If
AtoB = New Line(PtA, PtB)
If AtoB.Length <> 0 And Not AtoB.Direction.IsPerpendicularTo(Pln.YAxis) Then
Msg("error", "The line between PtA and PtB is not perpendicular to the Y-axis of the specified plane")
Return
End If
inCt += 1
If IsSet("Wid") Then Msg("info", "Wid will override the distance between PtA and PtB. If you do not want this to happen, disconnect PtB or Wid.")
width = PtA.DistanceTo(PtB) ' get the width (distance) between PtA and PtB
Dim refPtB As Point3d
refPlane.RemapToPlaneSpace(PtB, refPtB)
If refPtB.X < 0 Then width = -width ' check if PtB is to the left of PtA...if so, width is negative
End If
If IsSet("Len") Then inCt += 1
If IsSet("Wid") Then inCt += 1
If IsSet("Ht") Then inCt += 1
If IsSet("Ang") Then inCt += 1
If inCt > 2 Then Msg("info", "More parameters set than are required (out of length, width, height, angle). Only using the first two valid ones.")
' check for connected/specified inputs. note: only the first two that it comes across will be used
If IsSet("Len") Then ' if length is specified then...
If Len <= 0 Then
Msg("error", "Length cannot be negative or zero")
Return
End If
If IsSet("Wid") Then ' find height & angle based on length and specified width
If Wid > Len Then
Msg("error", "Width is greater than length")
Return
End If
If Wid = Len Then ' skip the solver and set the known values
height = 0
m = 0
angle = 0
width = Wid
Else
m = SolveMFromLenWid(Len, Wid)
height = Cal_H(Len, m) ' L * Sqrt(m) / K(m)
angle = Cal_A(m) ' Acos(1 - 2 * m)
width = Wid
End If
Else If width IsNot Nothing Then ' find height & angle based on length and calculated width (distance between PtA and PtB)
If width > Len Then
Msg("error", "Width is greater than length")
Return
End If
If width = Len Then ' skip the solver and set the known values
height = 0
m = 0
angle = 0
Else
m = SolveMFromLenWid(Len, width)
height = Cal_H(Len, m) ' L * Sqrt(m) / K(m)
angle = Cal_A(m) ' Acos(1 - 2 * m)
End If
Else If IsSet("Ht") Then ' find width & angle based on length and height ** possible to return 2 results **
If Math.Abs(Ht / Len) > Defined.MAX_HL_RATIO Then
Msg("error", "Height not possible with given length")
Return
End If
If Ht < 0 Then
Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_A = True
flip_H = True
End If
If Ht = 0 Then ' skip the solver and set the known values
width = Len
angle = 0
Else
multiple_m = SolveMFromLenHt(Len, Ht) ' note that it's possible for two values of m to be found if height is close to max height
If multiple_m.Count = 1 Then ' if there's only one m value returned, calculate the width & angle here. we'll deal with multiple m values later
m = multiple_m.Item(0)
width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1)
angle = Cal_A(m) ' Acos(1 - 2 * m)
End If
End If
height = Ht
Else If IsSet("Ang") Then ' find width & height based on length and angle
If Ang < 0 Then
Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_A = True
flip_H = True
End If
m = Cal_M(Ang) ' (1 - Cos(a)) / 2
If Ang = 0 Then ' skip the solver and set the known values
width = Len
height = 0
Else
width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1)
height = Cal_H(Len, m) ' L * Sqrt(m) / K(m)
End If
angle = Ang
Else
Msg("error", "Need to specify one more parameter in addition to length")
Return
End If
length = Len
Else If IsSet("Wid") Then ' if width is specified then...
If IsSet("Ht") Then ' find length & angle based on specified width and height
If Ht < 0 Then
Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_A = True
flip_H = True
End If
If Ht = 0 Then ' skip the solver and set the known values
length = Wid
angle = 0
Else
m = SolveMFromWidHt(Wid, Ht)
length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m)
angle = Cal_A(m) ' Acos(1 - 2 * m)
End If
height = Ht
Else If IsSet("Ang") Then ' find length & height based on specified width and angle
If Wid = 0 Then
Msg("error", "Curve not possible with width = 0 and an angle as inputs")
Return
End If
If Ang < 0 Then
Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_A = True
flip_H = True
End If
m = Cal_M(Ang) ' (1 - Cos(a)) / 2
If Ang = 0 Then ' skip the solver and set the known values
length = Wid
height = 0
Else
length = Wid / (2 * EllipticE(m) / EllipticK(m) - 1)
If length < 0 Then
Msg("error", "Curve not possible at specified width and angle (calculated length is negative)")
Return
End If
height = Cal_H(length, m) ' L * Sqrt(m) / K(m)
End If
angle = Ang
Else
Msg("error", "Need to specify one more parameter in addition to width (Wid)")
Return
End If
width = Wid
Else If width IsNot Nothing Then ' if width is determined by PtA and PtB then...
If IsSet("Ht") Then ' find length & angle based on calculated width and height
If Ht < 0 Then
Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_A = True
flip_H = True
End If
If Ht = 0 Then ' skip the solver and set the known values
length = width
angle = 0
Else
m = SolveMFromWidHt(width, Ht)
length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m)
angle = Cal_A(m) ' Acos(1 - 2 * m)
End If
height = Ht
Else If IsSet("Ang") Then ' find length & height based on calculated width and angle
If width = 0 Then
Msg("error", "Curve not possible with width = 0 and an angle as inputs")
Return
End If
If Ang < 0 Then
Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_A = True
flip_H = True
End If
m = Cal_M(Ang) ' (1 - Cos(a)) / 2
If Ang = 0 Then ' skip the solver and set the known values
length = width
height = 0
Else
length = width / (2 * EllipticE(m) / EllipticK(m) - 1)
If length < 0 Then
Msg("error", "Curve not possible at specified width and angle (calculated length is negative)")
Return
End If
height = Cal_H(length, m) ' L * Sqrt(m) / K(m)
End If
angle = Ang
Else
Msg("error", "Need to specify one more parameter in addition to PtA and PtB")
Return
End If
Else If IsSet("Ht") Then ' if height is specified then...
If IsSet("Ang") Then ' find length & width based on height and angle
If Ht < 0 Then
Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_H = True
flip_A = True
End If
If Ht = 0 Then
Msg("error", "Height can't = 0 if only height and angle are specified")
Return
Else
If Ang < 0 Then
Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis
refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis)))
flip_A = Not flip_A
flip_H = Not flip_H
End If
m = Cal_M(Ang) ' (1 - Cos(a)) / 2
If Ang = 0 Then
Msg("error", "Angle can't = 0 if only height and angle are specified")
Return
Else
length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m)
width = Cal_W(length, m) ' L * (2 * E(m) / K(m) - 1)
End If
angle = Ang
End If
height = Ht
Else
Msg("error", "Need to specify one more parameter in addition to height")
Return
End If
Else If IsSet("Ang") Then
Msg("error", "Need to specify one more parameter in addition to angle")
Return
Else
Msg("error", "Need to specify two of the four parameters: length, width (or PtB), height, and angle")
Return
End If
If m > Defined.M_MAX Then
Msg("error", "Form of curve not solvable with current algorithm and given inputs")
Return
End If
refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2)
If multiple_m.Count > 1 Then ' if there is more than one m value returned, calculate the width, angle, and curve for each
Dim multi_pts As New DataTree(Of Point3d)
Dim multi_crv As New List(Of Curve)
Dim tmp_pts As New List(Of Point3d)
Dim multi_W, multi_A, multi_F As New List(Of Double)
Dim j As Integer = 0 ' used for creating a new branch (GH_Path) for storing pts which is itself a list of points
For Each m_val As Double In multiple_m
width = Cal_W(length, m_val) 'length * (2 * EllipticE(m_val) / EllipticK(m_val) - 1)
If width < 0 And ignoreSelfIntersecting Then
Msg("warning", "One curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False")
Continue For
End If
If m_val >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve whose width = " & Math.Round(width, 4) & " is not guaranteed")
angle = Cal_A(m_val) 'Math.Asin(2 * m_val - 1)
refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2)
tmp_pts = FindBendForm(length, width, m_val, angle, refPlane)
multi_pts.AddRange(tmp_pts, New GH_Path(j))
multi_crv.Add(MakeCurve(tmp_pts, angle, refPlane))
multi_W.Add(width)
If flip_A Then angle = -angle
multi_A.Add(angle)
E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2)
multi_F.Add(EllipticK(m_val) ^ 2 * E * I / length ^ 2) ' from reference {4} pg. 79
j += 1
refPlane.Origin = PtA ' reset the reference plane origin to PtA for the next m_val
'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m_val & ", k=" & Math.Sqrt(m_val) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height)
Next
' assign the outputs
Pts = multi_pts
Crv = multi_crv
L = length
W = multi_W
If flip_H Then height = -height
H = height
A = multi_A
F = multi_F
Else ' only deal with the single m value
If m >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve at these parameters is not guaranteed")
If width < 0 And ignoreSelfIntersecting Then
Msg("error", "Curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False")
Return
End If
Pts = FindBendForm(length, width, m, angle, refPlane)
Crv = MakeCurve(pts, angle, refPlane)
L = length
W = width
If flip_H Then height = -height
H = height
If flip_A Then angle = -angle
A = angle
E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2)
F = EllipticK(m) ^ 2 * E * I / length ^ 2 ' from reference {4} pg. 79. Note: the critical buckling (that makes the rod/wire start to bend) can be found at height=0 (width=length)
'height = Math.Sqrt(((2 * Len / 5) ^ 2 - ((Wid - Len / 5) / 2) ^ 2) ' quick approximation discovered by Mårten of 'Geometry of Bending' fame ( http://tiny.cc/it2pbx )
'width = (Len +/- 2 * Math.Sqrt(4 * Len ^ 2 - 25 * Ht ^ 2)) / 5 ' derived from above
'length = (2 * Math.Sqrt(15 * Ht ^ 2 + 4 * Wid ^ 2) - Wid) / 3 ' derived from above
'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m & ", k=" & Math.Sqrt(m) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height)
End If
-
2318
3341
84
184
-
2360
3433
- 9
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 84fa917c-1ed8-4db3-8be1-7bdc4a6495a2
- 8
- 3ede854e-c753-40eb-84cb-b48008f14fd4
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- true
- Script Variable PtA
- e0b340a6-33e3-4438-bc60-5fea5b18f4fa
- PtA
- PtA
- true
- 0
- true
- 0
- e1937b56-b1da-4c12-8bd8-e34ee81746ef
-
2320
3343
25
20
-
2334
3353
- 1
- 1
- {0}
-
0
0
0
- Grasshopper.Kernel.Types.GH_Point
- true
- Script Variable PtB
- a74e4c29-c138-4cd0-b6ec-cd627a642509
- PtB
- PtB
- true
- 0
- true
- 0
- e1937b56-b1da-4c12-8bd8-e34ee81746ef
-
2320
3363
25
20
-
2334
3373
- true
- Script Variable Pln
- f4a02e94-d4ad-4590-84da-4f3345f5db67
- Pln
- Pln
- true
- 0
- true
- 0
- 3897522d-58e9-4d60-b38c-978ddacfedd8
-
2320
3383
25
20
-
2334
3393
- 1
- 1
- {0}
- Grasshopper.Kernel.Types.GH_Plane
-
0
0
0
1
0
0
0
1
0
- true
- Script Variable Len
- e8ad0a50-2a34-4c5c-abc5-fbeb62b12cf3
- Len
- Len
- true
- 0
- true
- 0
- 8e991e99-5fb8-41e1-928d-1bba8fb9f7d7
-
2320
3403
25
20
-
2334
3413
- true
- Script Variable Wid
- 3d51ade1-9c1d-448d-ae91-7266d9eeadc1
- Wid
- Wid
- true
- 0
- true
- 0c529f4b-39cf-4343-8565-04e4988cf6c0
- 1
- 8e991e99-5fb8-41e1-928d-1bba8fb9f7d7
-
2320
3423
25
20
-
2334
3433
- true
- Script Variable Ht
- 42b3091b-80e1-471c-a7f5-f1248e8297a0
- Ht
- Ht
- true
- 0
- true
- e0ec9007-74c8-4451-9373-9d9815942542
- 1
- 8e991e99-5fb8-41e1-928d-1bba8fb9f7d7
-
2320
3443
25
20
-
2334
3453
- true
- Script Variable Ang
- 8c2cb104-2fdb-463a-9d03-caa3dc8e6828
- Ang
- Ang
- true
- 0
- true
- 0
- 8e991e99-5fb8-41e1-928d-1bba8fb9f7d7
-
2320
3463
25
20
-
2334
3473
- true
- Script Variable E
- f1b789aa-353e-4333-a570-95733cae4b39
- E
- E
- true
- 0
- true
- 0
- 8e991e99-5fb8-41e1-928d-1bba8fb9f7d7
-
2320
3483
25
20
-
2334
3493
- true
- Script Variable I
- c95788d2-4a1a-44bf-a2f3-e275b3a140ea
- I
- I
- true
- 0
- true
- 0
- 8e991e99-5fb8-41e1-928d-1bba8fb9f7d7
-
2320
3503
25
20
-
2334
3513
- 1
- Print, Reflect and Error streams
- fa2597fb-ad52-4ad7-9f68-56f0ba98f216
- out
- out
- false
- 0
-
2375
3343
25
22
-
2387.5
3354.25
- Output parameter Pts
- 4fecf712-f978-4ff9-b599-c7123ce298cb
- Pts
- Pts
- false
- 0
-
2375
3365
25
23
-
2387.5
3376.75
- Output parameter Crv
- 85964c8e-57ef-45e8-8254-561b34e4791d
- Crv
- Crv
- false
- 0
-
2375
3388
25
22
-
2387.5
3399.25
- Output parameter L
- ac6ba150-f790-44ec-a438-7c12be8544ee
- L
- L
- false
- 0
-
2375
3410
25
23
-
2387.5
3421.75
- Output parameter W
- 685d261b-2e57-4de3-88c1-b53a7e4828c6
- W
- W
- false
- 0
-
2375
3433
25
22
-
2387.5
3444.25
- Output parameter H
- 99095cd4-3684-4b3e-bea7-c8ffb6520772
- H
- H
- false
- 0
-
2375
3455
25
23
-
2387.5
3466.75
- Output parameter A
- b9e6ad28-add8-420b-948a-b9279ad8639a
- A
- A
- false
- 0
-
2375
3478
25
22
-
2387.5
3489.25
- Output parameter F
- e30242aa-438c-437f-ad33-e353fcbc48a9
- F
- F
- false
- 0
-
2375
3500
25
23
-
2387.5
3511.75
- 9c85271f-89fa-4e9f-9f4a-d75802120ccc
- Division
- Mathematical division
- ba901ef1-d5bb-488c-bed2-4d5efcaf066a
- Division
- Division
-
2134
3523
85
44
-
2165
3545
- Item to divide (dividend)
- 9ccc7383-23f3-43af-8052-b389131cec7e
- A
- A
- false
- 0c529f4b-39cf-4343-8565-04e4988cf6c0
- 1
-
2136
3525
14
20
-
2144.5
3535
- Item to divide with (divisor)
- 8ea54c3d-a3c0-4996-af5a-57b158fd7368
- B
- B
- false
- 0
-
2136
3545
14
20
-
2144.5
3555
- 1
- 1
- {0}
- Grasshopper.Kernel.Types.GH_Integer
- 2
- The result of the Division
- e0ec9007-74c8-4451-9373-9d9815942542
- Result
- Result
- false
- 0
-
2180
3525
37
40
-
2198.5
3545
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- 0c529f4b-39cf-4343-8565-04e4988cf6c0
- Panel
- false
- 0
- 0
- 1
-
2073
3401
50
40
- 0
- 0
- 0
-
2073.659
3401.652
-
255;255;250;90
- true
- true
- true
- false
- false
- true
- d5967b9f-e8ee-436b-a8ad-29fdcecf32d5
- Curve
- Contains a collection of generic curves
- true
- d72b105e-c560-49a3-88af-d38a5fcc6218
- Curve
- Curve
- false
- 85964c8e-57ef-45e8-8254-561b34e4791d
- 1
-
2502
3422
50
24
-
2527.107
3434.742
- fbac3e32-f100-4292-8692-77240a42fd1a
- Point
- Contains a collection of three-dimensional points
- true
- 8b426ac6-24de-4f08-ad84-83617eecb720
- Point
- Point
- false
- 4fecf712-f978-4ff9-b599-c7123ce298cb
- 1
-
2473
3357
50
24
-
2498.377
3369.371
- 5edaea74-32cb-4586-bd72-66694eb73160
- Rotate Direction
- Rotate an object from one direction to another.
- true
- 3ca9109e-5711-4668-aa7a-76e025e71ad5
- Rotate Direction
- Rotate Direction
-
2930
3025
141
84
-
2998
3067
- Base geometry
- be1d3f68-1fcc-4419-ad85-22d9d3e8eab6
- Geometry
- Geometry
- true
- 9d691b43-c570-4280-97d7-5f1b84e62bac
- 1
-
2932
3027
51
20
-
2959
3037
- Rotation center point
- f7caea19-11f5-4dff-8813-34938da071bf
- Center
- Center
- false
- ce5fe135-fef0-44f7-964b-dee0af11743b
- 1
-
2932
3047
51
20
-
2959
3057
- 1
- 1
- {0}
-
0
0
0
- Initial direction
- f3b75996-879a-4307-9a74-e978eb3499ab
- From
- From
- false
- 0
-
2932
3067
51
20
-
2959
3077
- 1
- 1
- {0}
-
0
1.4375
0
- Final direction
- bffb57d0-a6bd-4b3e-b070-7949b4a2658a
- To
- To
- false
- 0
-
2932
3087
51
20
-
2959
3097
- 1
- 1
- {0}
-
0
-0.4375
0
- Rotated geometry
- 95808d86-d6c9-4382-9226-e80f2969b037
- Geometry
- Geometry
- false
- 0
-
3013
3027
56
40
-
3041
3047
- Transformation data
- bd8e3bd1-96c0-4cbc-ae55-68541dba89cc
- Transform
- Transform
- false
- 0
-
3013
3067
56
40
-
3041
3087
- e9eb1dcf-92f6-4d4d-84ae-96222d60f56b
- Move
- Translate (move) an object along a vector.
- true
- 38b73c41-dd47-42c4-a343-1585add88094
- Move
- Move
-
2822
3483
141
44
-
2890
3505
- Base geometry
- a46e87ba-876d-44df-a6e1-178ead5de52b
- Geometry
- Geometry
- true
- 906326de-dd53-486c-ba85-24d817bedbfc
- 1
-
2824
3485
51
20
-
2851
3495
- Translation vector
- abf6c321-9050-420b-9965-5c0891ceb67c
- Motion
- Motion
- false
- d059be0c-4090-490e-a401-02c4c42d0e64
- 1
-
2824
3505
51
20
-
2851
3515
- 1
- 1
- {0}
-
0
0
10
- Translated geometry
- 1f0edef8-f630-4c9b-ab05-943f35e216fe
- Geometry
- Geometry
- false
- 0
-
2905
3485
56
20
-
2933
3495
- Transformation data
- bcc76fc5-9c2f-42ea-bf2f-2e92cfc7afe7
- Transform
- Transform
- false
- 0
-
2905
3505
56
20
-
2933
3515
- 5edaea74-32cb-4586-bd72-66694eb73160
- Rotate Direction
- Rotate an object from one direction to another.
- true
- 2b145999-86bb-4d5d-aaeb-6c6eb29e750d
- Rotate Direction
- Rotate Direction
-
3184
3569
141
84
-
3252
3611
- Base geometry
- 05db87bc-84af-4828-a400-01d83ec6db33
- Geometry
- Geometry
- true
- 1f0edef8-f630-4c9b-ab05-943f35e216fe
- 1
-
3186
3571
51
20
-
3213
3581
- Rotation center point
- 4a4c5c55-44b5-4148-9eea-d29da354727c
- Center
- Center
- false
- d5b47c77-5cd0-4170-867f-ca163e32c1cb
- 1
-
3186
3591
51
20
-
3213
3601
- 1
- 1
- {0}
-
0
0
0
- Initial direction
- 3d9b489c-abf3-455a-9b02-adf96edcc74f
- From
- From
- false
- 0
-
3186
3611
51
20
-
3213
3621
- 1
- 1
- {0}
-
0
1.4375
0
- Final direction
- 281fdcb4-bbe8-4310-833a-697f11915b5b
- To
- To
- false
- 0
-
3186
3631
51
20
-
3213
3641
- 1
- 1
- {0}
-
0
-0.4375
0
- Rotated geometry
- 9a89200f-f4c2-4c65-a052-afed86b461c2
- Geometry
- Geometry
- false
- 0
-
3267
3571
56
40
-
3295
3591
- Transformation data
- c86117cb-c85d-4d07-843a-ccb69a4bf337
- Transform
- Transform
- false
- 0
-
3267
3611
56
40
-
3295
3631
- 8073a420-6bec-49e3-9b18-367f6fd76ac3
- Join Curves
- Join as many curves as possible
- 078c6506-4f72-4372-8f91-5deb76a93fe4
- Join Curves
- Join Curves
-
3288
3372
121
44
-
3351
3394
- 1
- Curves to join
- 79539ab7-4342-4290-89a8-1f3fbba43c0c
- Curves
- Curves
- false
- 1f0edef8-f630-4c9b-ab05-943f35e216fe
- 9a89200f-f4c2-4c65-a052-afed86b461c2
- 2
-
3290
3374
46
20
-
3314.5
3384
- Preserve direction of input curves
- d3760e74-bd51-457f-9c51-ff5cdb2bec85
- Preserve
- Preserve
- false
- 0
-
3290
3394
46
20
-
3314.5
3404
- 1
- 1
- {0}
- false
- 1
- Joined curves and individual curves that could not be joined.
- e7274196-c69b-461c-966a-aaa3b6bc4020
- Curves
- Curves
- false
- 0
-
3366
3374
41
40
-
3386.5
3394
- 3581f42a-9592-4549-bd6b-1c0fc39d067b
- Construct Point
- Construct a point from {xyz} coordinates.
- true
- b8db0342-47bb-44ee-8a08-130ef408e66f
- Construct Point
- Construct Point
-
1688
2529
132
64
-
1770
2561
- {x} coordinate
- 01cd14f3-2c1e-4279-935e-f0b00af0c9f8
- X coordinate
- X coordinate
- false
- 0ab31ee5-a662-42db-a9f0-ca0831013edc
- 1
-
1690
2531
65
20
-
1724
2541
- 1
- 1
- {0}
- 0
- {y} coordinate
- 63868fb4-9bf2-4e3f-963b-29443ca99af1
- Y coordinate
- Y coordinate
- false
- 0ab31ee5-a662-42db-a9f0-ca0831013edc
- 1
-
1690
2551
65
20
-
1724
2561
- 1
- 1
- {0}
- 0
- {z} coordinate
- d4325105-b09e-4ce7-b978-59a6855e5c0d
- Z coordinate
- Z coordinate
- false
- 0
-
1690
2571
65
20
-
1724
2581
- 1
- 1
- {0}
- 0
- Point coordinate
- 011b00fc-5add-41a0-9757-9d38ebdc9d11
- Point
- Point
- false
- 0
-
1785
2531
33
60
-
1801.5
2561
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 6ecfa3d1-7e96-49b0-9f64-5a35c882f968
- Number Slider
- Number Slider
- false
- 0
-
1338
2511
198
20
-
1338.134
2511.813
- 6
- 1
- 0
- 2
- 0
- 0
- 1.256412
- eeafc956-268e-461d-8e73-ee05c6f72c01
- Stream Filter
- Filters a collection of input streams
- true
- 5840f73e-243d-4142-b769-dd8891e36334
- Stream Filter
- LENGTH HALF/FUL
-
3690
3051
131
84
-
3774
3093
- 4
- 2e3ab970-8545-46bb-836c-1c11e5610bce
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- Index of Gate stream
- ffd627e0-e54e-4e0c-bcc5-60b32e18cea3
- Gate
- CURVE TYPE
- false
- 0f588dae-4330-4978-89d6-31e140c1ef33
- 1
-
3692
3053
67
20
-
3727
3063
- 1
- 1
- {0}
- 0
- 2
- Input stream at index 0
- 9e868ff4-d200-4ddd-a0b9-50abf423f440
- false
- Stream 0
- 0
- true
- e7274196-c69b-461c-966a-aaa3b6bc4020
- 1
-
3692
3073
67
20
-
3727
3083
- 2
- Input stream at index 1
- 78fcba4f-4ce2-47c9-bf9b-c4adff508a7f
- false
- Stream 1
- 1
- true
- 758b07e1-eba4-4854-bc42-821bfaf9cf50
- 1
-
3692
3093
67
20
-
3727
3103
- 2
- Input stream at index 2
- 5dff9f76-eb50-44dc-b1eb-c9898788a0a5
- false
- Stream 2
- 2
- true
- 0
-
3692
3113
67
20
-
3727
3123
- 2
- Filtered stream
- 95ca53c7-443e-429f-a7dc-278f84d0a48c
- false
- Stream
- S(0)
- false
- 0
-
3789
3053
30
80
-
3804
3093
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 0f588dae-4330-4978-89d6-31e140c1ef33
- Number Slider
- Number Slider
- false
- 0
-
3438
3047
198
20
- 3
- 1
- 1
- 2
- 0
- 0
- 0
- f12daa2f-4fd5-48c1-8ac3-5dea476912ca
- Mirror
- Mirror an object.
- true
- ff7f5b2c-a915-4c5e-886d-6ec174279627
- Mirror
- Mirror
-
3667
3471
141
44
-
3735
3493
- Base geometry
- 431aeb3e-993a-47b5-920b-24347721f626
- Geometry
- Geometry
- true
- 95ca53c7-443e-429f-a7dc-278f84d0a48c
- 1
-
3669
3473
51
20
-
3696
3483
- Mirror plane
- 03d6e1b5-01ed-4dd2-8734-4bb536b18334
- Plane
- Plane
- false
- 779eff81-4202-43c4-b822-be6d5708a2ad
- 1
-
3669
3493
51
20
-
3696
3503
- 1
- 1
- {0}
-
0
0
0
0
1
0
0
0
1
- Mirrored geometry
- 69d8adef-a727-4fa0-95ae-f21809de9848
- Geometry
- Geometry
- false
- 0
-
3750
3473
56
20
-
3778
3483
- Transformation data
- 1561f8f2-e4a6-48df-98a1-9a689c70d76d
- Transform
- Transform
- false
- 0
-
3750
3493
56
20
-
3778
3503
- 8529dbdf-9b6f-42e9-8e1f-c7a2bde56a70
- Line
- Contains a collection of line segments
- true
- 779eff81-4202-43c4-b822-be6d5708a2ad
- Line
- Line
- false
- 0
-
3587
3536
50
24
-
3612
3548
- 1
- 1
- {0}
-
0.5
0.5
0
1
0.5
0
- eeafc956-268e-461d-8e73-ee05c6f72c01
- Stream Filter
- Filters a collection of input streams
- true
- 38e2ed78-3a97-41e1-948b-a55ed34f8f19
- Stream Filter
- Stream Filter
-
3889
3405
111
64
-
3953
3437
- 3
- 2e3ab970-8545-46bb-836c-1c11e5610bce
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- Index of Gate stream
- b4efe14a-5e77-49f3-ac0d-d8c027ecae3f
- Gate
- INVERSE
- false
- 3b27b381-d905-4990-82e0-6406c2491f3b
- 1
-
3891
3407
47
20
-
3916
3417
- 1
- 1
- {0}
- 0
- 2
- Input stream at index 0
- e73560a2-4caf-428b-b3ba-27c7b17699d7
- false
- Stream 0
- 0
- true
- 95ca53c7-443e-429f-a7dc-278f84d0a48c
- 1
-
3891
3427
47
20
-
3916
3437
- 2
- Input stream at index 1
- b4fc22b3-5b97-48b9-96e0-54d84d86fce8
- false
- Stream 1
- 1
- true
- 69d8adef-a727-4fa0-95ae-f21809de9848
- 1
-
3891
3447
47
20
-
3916
3457
- 2
- Filtered stream
- 7421a218-027d-49f4-995f-e5ea05249d8d
- false
- Stream
- S(0)
- false
- 0
-
3968
3407
30
60
-
3983
3437
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 3b27b381-d905-4990-82e0-6406c2491f3b
- Number Slider
- Number Slider
- false
- 0
-
3623
3396
198
20
- 3
- 1
- 1
- 1
- 0
- 0
- 0
- b6236720-8d88-4289-93c3-ac4c99f9b97b
- Relay
- 2
- A wire relay object
- b75a0e49-7509-488b-94f8-b51b4bf11f2d
- Relay
- Relay
- false
- 882400bc-d4cf-428b-bfa4-53f56cbcc266
- 1
-
5379
3351
44
16
-
5401
3359
- b6236720-8d88-4289-93c3-ac4c99f9b97b
- Relay
- 2
- A wire relay object
- 125a372b-916c-4b37-84e8-53786f7108ea
- Relay
- Relay
- false
- 6ecfa3d1-7e96-49b0-9f64-5a35c882f968
- 1
-
1596
2488
44
16
-
1618
2496
- 9df5e896-552d-4c8c-b9ca-4fc147ffa022
- Expression
- Evaluate an expression
- SQRT(.5^2-(X-.5)^2)
- cb8ec022-a111-4dc0-a87f-bd75075a2189
- Expression
- Expression
-
2978
2495
218
28
-
3086
2509
- 1
- ba80fd98-91a1-4958-b6a7-a94e40e52bdb
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- Expression variable
- ffbdf6aa-4a5c-41a5-9597-7cf05d6e7248
- Variable X
- X
- true
- 9e9f4f4f-a388-4f49-8d53-728a6060a353
- 1
-
2980
2497
14
24
-
2988.5
2509
- Result of expression
- d61f0e54-a368-4744-9900-999ee664a002
- Result
- R
- false
- 0
-
3178
2497
16
24
-
3186
2509
- 9445ca40-cc73-4861-a455-146308676855
- Range
- Create a range of numbers.
- f60618ee-abe9-4d04-838d-e97d9bbd4c50
- Range
- Range
-
2814
2482
129
44
-
2888
2504
- Domain of numeric range
- 358be461-3b86-4650-be18-191234e9f8eb
- Domain
- Domain
- false
- 84010b74-1472-4b6f-b22b-76c13308c5f0
- 1
-
2816
2484
57
20
-
2854
2494
- 1
- 1
- {0}
-
0
1
- Number of steps
- 77c4007b-a224-467c-934c-2ba972202963
- x-1
- Steps
- Steps
- false
- 20752e07-ebcc-4d02-a6cd-d82084b6b31e
- 1
-
2816
2504
57
20
-
2854
2514
- 1
- 1
- {0}
- 10
- 1
- Range of numbers
- 9e9f4f4f-a388-4f49-8d53-728a6060a353
- Range
- Range
- false
- 0
-
2903
2484
38
40
-
2922
2504
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 20752e07-ebcc-4d02-a6cd-d82084b6b31e
- Number Slider
- Number Slider
- false
- 0
-
2372
2574
256
20
-
2372.196
2574.041
- 3
- 1
- 1
- 1024
- 0
- 0
- 1024
- 9445ca40-cc73-4861-a455-146308676855
- Range
- Create a range of numbers.
- c4a486d6-6db4-4b93-b4b2-1215072b97e9
- Range
- Range
-
2667
2558
129
44
-
2741
2580
- Domain of numeric range
- 6af85166-98f6-458a-b28b-b8abf7051847
- Domain
- Domain
- false
- 84010b74-1472-4b6f-b22b-76c13308c5f0
- 1
-
2669
2560
57
20
-
2707
2570
- 1
- 1
- {0}
-
0
1
- Number of steps
- 4e049b87-bafc-4dc7-a896-c4f45eafbfec
- x-1
- Steps
- Steps
- false
- 20752e07-ebcc-4d02-a6cd-d82084b6b31e
- 1
-
2669
2580
57
20
-
2707
2590
- 1
- 1
- {0}
- 10
- 1
- Range of numbers
- 6b4e3bee-632c-48c2-b1ff-6409e6bd940b
- Range
- Range
- false
- 0
-
2756
2560
38
40
-
2775
2580
- 3581f42a-9592-4549-bd6b-1c0fc39d067b
- Construct Point
- Construct a point from {xyz} coordinates.
- true
- d182f473-7281-4969-9552-b4c7eeb99315
- Construct Point
- Construct Point
-
2827
2550
132
64
-
2909
2582
- {x} coordinate
- fc6f82b1-fa90-42e7-9d87-684e1be89ed9
- X coordinate
- X coordinate
- false
- 6b4e3bee-632c-48c2-b1ff-6409e6bd940b
- 1
-
2829
2552
65
20
-
2863
2562
- 1
- 1
- {0}
- 0
- {y} coordinate
- 4712f5ee-0d95-456c-849d-a3ea0090476d
- Y coordinate
- Y coordinate
- false
- d61f0e54-a368-4744-9900-999ee664a002
- 1
-
2829
2572
65
20
-
2863
2582
- 1
- 1
- {0}
- 0
- {z} coordinate
- b0c8bbef-3b86-4cab-817c-42b668b68cc4
- Z coordinate
- Z coordinate
- false
- 0
-
2829
2592
65
20
-
2863
2602
- 1
- 1
- {0}
- 0
- Point coordinate
- 4083ea09-cc94-40b5-9ff3-cec56f81d4a1
- Point
- Point
- false
- 0
-
2924
2552
33
60
-
2940.5
2582
- 2b2a4145-3dff-41d4-a8de-1ea9d29eef33
- Interpolate
- Create an interpolated curve through a set of points.
- true
- 0974ed3a-cf56-4777-994e-616c5436f465
- Interpolate
- Interpolate
-
2985
2536
128
84
-
3052
2578
- 1
- Interpolation points
- 5379013a-34f1-4ad7-92e4-b5fe055722ff
- Vertices
- Vertices
- false
- 4083ea09-cc94-40b5-9ff3-cec56f81d4a1
- 1
-
2987
2538
50
20
-
3013.5
2548
- Curve degree
- c542417b-2adc-4ac4-9888-a0240e431bf7
- Degree
- Degree
- false
- 0
-
2987
2558
50
20
-
3013.5
2568
- 1
- 1
- {0}
- 3
- Periodic curve
- 83ec7924-a6ec-4d49-bc94-f9cd25dcd48f
- Periodic
- Periodic
- false
- 0
-
2987
2578
50
20
-
3013.5
2588
- 1
- 1
- {0}
- false
- Knot spacing (0=uniform, 1=chord, 2=sqrtchord)
- 8cf7ec2a-bc2c-4bac-9921-a5233118e292
- KnotStyle
- KnotStyle
- false
- 0
-
2987
2598
50
20
-
3013.5
2608
- 1
- 1
- {0}
- 0
- Resulting nurbs curve
- 710fdf45-f9ba-4d67-a78e-ca6a2c7d480d
- Curve
- Curve
- false
- 0
-
3067
2538
44
26
-
3089
2551.333
- Curve length
- 5d50c135-660f-4974-89a5-9e85c1d47a37
- Length
- Length
- false
- 0
-
3067
2564
44
27
-
3089
2578
- Curve domain
- ae7780b8-4c5e-4512-82fc-4ef57b12e15a
- Domain
- Domain
- false
- 0
-
3067
2591
44
27
-
3089
2604.667
- d1a28e95-cf96-4936-bf34-8bf142d731bf
- Construct Domain
- Create a numeric domain from two numeric extremes.
- 6c9fb824-d4fa-47c3-b084-f57486e39c83
- Construct Domain
- Construct Domain
-
2644
2482
143
44
-
2726
2504
- Start value of numeric domain
- 3118bc41-1e08-484b-9cf8-25a54b9611d9
- Domain start
- Domain start
- false
- 79948b5c-accb-4874-82f5-80f6d481f9be
- 1
-
2646
2484
65
20
-
2680
2494
- 1
- 1
- {0}
- 0
- End value of numeric domain
- 683657b3-b493-4d55-874a-804536797f9c
- Domain end
- Domain end
- false
- 9537fbd4-118a-4c90-ad08-af82a9111050
- 1
-
2646
2504
65
20
-
2680
2514
- 1
- 1
- {0}
- 1
- Numeric domain between {A} and {B}
- 84010b74-1472-4b6f-b22b-76c13308c5f0
- Domain
- Domain
- false
- 0
-
2741
2484
44
40
-
2763
2504
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 9537fbd4-118a-4c90-ad08-af82a9111050
- Number Slider
- Number Slider
- false
- 0
-
2333
2510
256
20
-
2333.584
2510.481
- 3
- 1
- 0
- 16
- 0
- 0
- 0.5
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 79948b5c-accb-4874-82f5-80f6d481f9be
- Number Slider
- Number Slider
- false
- 0
-
2371
2484
256
20
-
2371.6
2484.241
- 3
- 1
- 0
- 100
- 0
- 0
- 0
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 1
-
255;255;255;255
- A group of Grasshopper objects
- cb8ec022-a111-4dc0-a87f-bd75075a2189
- f60618ee-abe9-4d04-838d-e97d9bbd4c50
- 20752e07-ebcc-4d02-a6cd-d82084b6b31e
- c4a486d6-6db4-4b93-b4b2-1215072b97e9
- d182f473-7281-4969-9552-b4c7eeb99315
- 0974ed3a-cf56-4777-994e-616c5436f465
- 6c9fb824-d4fa-47c3-b084-f57486e39c83
- 9537fbd4-118a-4c90-ad08-af82a9111050
- 79948b5c-accb-4874-82f5-80f6d481f9be
- bfdc16c2-8a8e-4556-b19c-220b0aeb4340
- b4cc584f-7b40-4647-89e7-8b7f5680c28d
- 7e8d883b-2637-4556-8b0c-a4dd67804f95
- ebeb1b10-dbbd-48e6-8ad0-50330378b54d
- 377ad2c5-d633-428b-9ccd-176001388528
- a99ceacf-2966-48c6-8fba-fe644a6b0725
- 15
- de9faebe-cf94-46a8-be84-81888b293ae0
- Group
- 33bcf975-a0b2-4b54-99fd-585c893b9e88
- Digit Scroller
- Numeric scroller for single numbers
- bfdc16c2-8a8e-4556-b19c-220b0aeb4340
- Digit Scroller
- Digit Scroller
- false
- 0
- 12
- Digit Scroller
- 9
- 0.018
-
3233
2601
250
20
- 5a41528b-12b9-40dc-a3f2-842034d267c4
- Text Tag 3D
- Represents a list of 3D text tags in a Rhino viewport
- true
- ebeb1b10-dbbd-48e6-8ad0-50330378b54d
- Text Tag 3D
- Text Tag 3D
-
3582
2524
92
104
-
3660
2576
- Location and orientation of text tag
- true
- f86ef879-b68d-419c-a791-e4913174ef58
- Location
- Location
- false
- e557ad21-f790-4ef2-a195-f6d92dadcc52
- 1
-
3584
2526
61
20
-
3616
2536
- The text to display
- 7bdd5bce-5031-40c6-9203-64a660006dd2
- Text
- Text
- true
- 0
-
3584
2546
61
20
-
3616
2556
- 1
- 1
- {0}
- false
- SQRT(.5^2-(X-.5)^2)
- Size of text
- 458e4487-618e-4885-be55-caddf58824df
- Size
- Size
- false
- bfdc16c2-8a8e-4556-b19c-220b0aeb4340
- 1
-
3584
2566
61
20
-
3616
2576
- 1
- 1
- {0}
- 1
- Optional colour of tag
- f198067a-34b0-4e2e-ad91-dc1c8de64868
- Colour
- Colour
- true
- 0
-
3584
2586
61
20
-
3616
2596
- 1
- 1
- {0}
-
255;212;212;212
- Text justification
- 8bcd2047-4bb9-4113-a532-16fcd3cd3a0d
- Justification
- Justification
- false
- 0
-
3584
2606
61
20
-
3616
2616
- 1
- 1
- {0}
- 8
- c048ad76-ffcd-43b1-a007-4dd1b2373326
- Horizontal Frame
- Get a horizontally aligned frame along a curve at a specified parameter.
- 377ad2c5-d633-428b-9ccd-176001388528
- Horizontal Frame
- Horizontal Frame
-
3436
2546
125
44
-
3506
2568
- Curve to evaluate
- 47377e50-3a9a-4171-b1ce-5bd90932649c
- Curve
- Curve
- false
- 710fdf45-f9ba-4d67-a78e-ca6a2c7d480d
- 1
-
3438
2548
53
20
-
3466
2558
- Parameter on curve domain to evaluate
- 6d0f185c-e196-4216-8e5b-730aa1f8d194
- Parameter
- Parameter
- false
- a99ceacf-2966-48c6-8fba-fe644a6b0725
- 1
-
3438
2568
53
20
-
3466
2578
- Horizontal curve frame at {t}
- e557ad21-f790-4ef2-a195-f6d92dadcc52
- Frame
- Frame
- false
- 0
-
3521
2548
38
40
-
3540
2568
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- a99ceacf-2966-48c6-8fba-fe644a6b0725
- Number Slider
- Number Slider
- false
- 0
-
3221
2568
198
20
- 6
- 1
- 0
- 255
- 0
- 0
- 63
- eeafc956-268e-461d-8e73-ee05c6f72c01
- Stream Filter
- Filters a collection of input streams
- true
- 3279d68f-7597-44b9-8aad-e4fe735828f7
- Stream Filter
- Stream Filter
-
2596
2881
142
64
-
2691
2913
- 3
- 2e3ab970-8545-46bb-836c-1c11e5610bce
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- Index of Gate stream
- 10ba25b6-e04d-4cf7-9dd8-4c8daa39cb53
- Gate
- ARC/ELASTICA
- false
- ff680718-832f-4986-8b29-3aff2ad3133a
- 1
-
2598
2883
78
20
-
2638.5
2893
- 1
- 1
- {0}
- 0
- 2
- Input stream at index 0
- 3efba95c-dff5-407f-8ce8-4cbed2c3354b
- false
- Stream 0
- 0
- true
- 710fdf45-f9ba-4d67-a78e-ca6a2c7d480d
- 1
-
2598
2903
78
20
-
2638.5
2913
- 2
- Input stream at index 1
- 150b4c0e-979b-45cd-998a-05ac030ec92b
- false
- Stream 1
- 1
- true
- c8cb0202-0ba9-413f-8c18-78a41199eff6
- 1
-
2598
2923
78
20
-
2638.5
2933
- 2
- Filtered stream
- d93f3ae5-6608-4cd2-ba51-d27384a4dc2f
- false
- Stream
- S(1)
- false
- 0
-
2706
2883
30
60
-
2721
2913
- b6236720-8d88-4289-93c3-ac4c99f9b97b
- Relay
- 2
- A wire relay object
- 3a20ff06-eeb1-4b64-926b-3dfaf9128bc9
- Relay
- Relay
- false
- d93f3ae5-6608-4cd2-ba51-d27384a4dc2f
- 1
-
2722
2980
44
16
-
2744
2988
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- ff680718-832f-4986-8b29-3aff2ad3133a
- Number Slider
- Number Slider
- false
- 0
-
2213
2836
198
20
-
2213.644
2836.331
- 3
- 1
- 1
- 1
- 0
- 0
- 1
- 2162e72e-72fc-4bf8-9459-d4d82fa8aa14
- Divide Curve
- Divide a curve into equal length segments
- true
- 32e88abc-cfdf-4e61-ae3f-e4129c2c5df5
- Divide Curve
- Divide Curve
-
4098
3456
128
64
-
4148
3488
- Curve to divide
- cabea499-c2af-407c-980e-96deb3d15c1b
- Curve
- Curve
- false
- 7421a218-027d-49f4-995f-e5ea05249d8d
- 1
-
4100
3458
33
20
-
4118
3468
- Number of segments
- 1525861f-b7e1-492e-a217-8df2b5f1a722
- Count
- Count
- false
- 577a0c63-7505-4fc3-994b-d5d38301a3fc
- 1
-
4100
3478
33
20
-
4118
3488
- 1
- 1
- {0}
- 10
- Split segments at kinks
- ec09d0b6-53d6-4eb8-b46c-8b1cfbecc318
- Kinks
- Kinks
- false
- 0
-
4100
3498
33
20
-
4118
3508
- 1
- 1
- {0}
- true
- 1
- Division points
- b03b55af-9732-4b7c-98ff-c56c1740de98
- Points
- Points
- false
- 0
-
4163
3458
61
20
-
4193.5
3468
- 1
- Tangent vectors at division points
- 8854baf9-cf78-45a1-8262-d3d0990ba0b3
- Tangents
- Tangents
- false
- 0
-
4163
3478
61
20
-
4193.5
3488
- 1
- Parameter values at division points
- f8847ac1-f514-4b7a-a694-6d68a3582041
- Parameters
- Parameters
- false
- 0
-
4163
3498
61
20
-
4193.5
3508
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 577a0c63-7505-4fc3-994b-d5d38301a3fc
- Number Slider
- Number Slider
- false
- 0
-
4026
3584
198
20
- 3
- 1
- 1
- 4096
- 0
- 0
- 771
- 2b2a4145-3dff-41d4-a8de-1ea9d29eef33
- Interpolate
- Create an interpolated curve through a set of points.
- 037aecf6-bd80-4ff2-9f79-297d0c92e8ad
- Interpolate
- Interpolate
-
4281
3445
128
84
-
4348
3487
- 1
- Interpolation points
- 99844fad-bde2-4a19-bba5-1567f450e0bc
- Vertices
- Vertices
- false
- b03b55af-9732-4b7c-98ff-c56c1740de98
- 1
-
4283
3447
50
20
-
4309.5
3457
- Curve degree
- a959dd2a-7364-45cf-bf88-876a52aa0d8c
- Degree
- Degree
- false
- 0
-
4283
3467
50
20
-
4309.5
3477
- 1
- 1
- {0}
- 3
- Periodic curve
- f3a51e4c-62cb-44d6-8eb6-f713fd1968aa
- Periodic
- Periodic
- false
- 0
-
4283
3487
50
20
-
4309.5
3497
- 1
- 1
- {0}
- false
- Knot spacing (0=uniform, 1=chord, 2=sqrtchord)
- cfaf952d-296c-4916-8d20-1237992d32ea
- KnotStyle
- KnotStyle
- false
- 0
-
4283
3507
50
20
-
4309.5
3517
- 1
- 1
- {0}
- 1
- Resulting nurbs curve
- 84483650-6de2-4340-95b5-2a3cc431dd70
- Curve
- Curve
- false
- 0
-
4363
3447
44
26
-
4385
3460.333
- Curve length
- 73c19336-c5e0-418f-ad77-8f5064ed9f0d
- Length
- Length
- false
- 0
-
4363
3473
44
27
-
4385
3487
- Curve domain
- eb56cecb-2f9e-4037-9aff-6c57a0b75202
- Domain
- Domain
- false
- 0
-
4363
3500
44
27
-
4385
3513.667
- eeafc956-268e-461d-8e73-ee05c6f72c01
- Stream Filter
- Filters a collection of input streams
- true
- f90c3e55-584b-49ac-b3b1-816024d60148
- Stream Filter
- REBUILD
-
4422
3364
111
64
-
4486
3396
- 3
- 2e3ab970-8545-46bb-836c-1c11e5610bce
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- Index of Gate stream
- ee9e9541-44da-419f-8139-b2ce704b0bfc
- Gate
- REBUILD
- false
- 7c933fbe-4308-4b2b-961e-960cdef76722
- 1
-
4424
3366
47
20
-
4449
3376
- 1
- 1
- {0}
- 0
- 2
- Input stream at index 0
- 8ba40bbc-8b6d-409c-ae28-586d7b4b6ba8
- false
- Stream 0
- 0
- true
- 7421a218-027d-49f4-995f-e5ea05249d8d
- 1
-
4424
3386
47
20
-
4449
3396
- 2
- Input stream at index 1
- 94662ab1-ecd9-4786-832d-3fa5f6029e0a
- false
- Stream 1
- 1
- true
- 84483650-6de2-4340-95b5-2a3cc431dd70
- 1
-
4424
3406
47
20
-
4449
3416
- 2
- Filtered stream
- 864fffcb-78f2-4f1d-984d-c524b8bd661d
- false
- Stream
- S(0)
- false
- 0
-
4501
3366
30
60
-
4516
3396
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 7c933fbe-4308-4b2b-961e-960cdef76722
- Number Slider
- Number Slider
- false
- 0
-
4304
3313
198
20
- 3
- 1
- 1
- 1
- 0
- 0
- 0
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- ec572a50-b5f4-4170-9323-7003be9b43b3
- Number Slider
- Number Slider
- false
- 0
-
2973
655
198
20
-
2973.93
655.7738
- 3
- 1
- 1
- 2
- 0
- 0
- 2
- b6236720-8d88-4289-93c3-ac4c99f9b97b
- Relay
- 2
- A wire relay object
- 26aaa1d5-1508-4eca-81e0-1445e9996c66
- Relay
- Relay
- false
- ea3716e7-2081-4c05-8195-f83a4ab37d5e
- 1
-
5251
461
44
16
-
5273
469
- 4c619bc9-39fd-4717-82a6-1e07ea237bbe
- Line SDL
- Create a line segment defined by start point, tangent and length.}
- true
- 719b60d9-6fe8-4351-814d-4a1a53a216df
- Line SDL
- Line SDL
-
4545
542
109
64
-
4609
574
- Line start point
- 4f8acb7d-921f-4cca-8712-b7cb6675cf7a
- Start
- Start
- false
- 0
-
4547
544
47
20
-
4572
554
- 1
- 1
- {0}
-
0
0
0
- Line tangent (direction)
- 1eaec4e2-c83c-4ece-979b-f45b285a34fb
- Direction
- Direction
- false
- 0
-
4547
564
47
20
-
4572
574
- 1
- 1
- {0}
-
65.875
0
0
- Line length
- 07595e14-1844-4c4d-95ad-34d563fad49a
- Length
- Length
- false
- 7a7c446d-c7b5-478c-85d3-38514268a55d
- 1
-
4547
584
47
20
-
4572
594
- 1
- 1
- {0}
- 1
- Line segment
- c61c1322-6bbb-4acb-b40d-8ae95ef13892
- Line
- Line
- false
- 0
-
4624
544
28
60
-
4638
574
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 7a7c446d-c7b5-478c-85d3-38514268a55d
- Number Slider
- Number Slider
- false
- 0
-
4468
663
198
20
- 3
- 1
- 1
- 256
- 0
- 0
- 128
- 4c619bc9-39fd-4717-82a6-1e07ea237bbe
- Line SDL
- Create a line segment defined by start point, tangent and length.}
- true
- ec285bec-b16a-434d-86aa-a3aa372a0f05
- Line SDL
- MIRROR LINE
-
5021
679
152
64
-
5085
711
- Line start point
- abcc7ceb-47cc-4dbe-95ce-ca6b35f27a9b
- Start
- Start
- false
- 85c0355c-c111-48bb-954d-f48b78d77eb6
- 1
-
5023
681
47
20
-
5048
691
- 1
- 1
- {0}
-
0
0
0
- Line tangent (direction)
- 6d6f8f52-8c55-477f-bbf2-2bba07b01c37
- Direction
- Direction
- false
- 0
-
5023
701
47
20
-
5048
711
- 1
- 1
- {0}
-
-1
-1
0
- Line length
- 88bef87d-45b6-40fa-bb19-17dff7035205
- Length
- Length
- false
- 0
-
5023
721
47
20
-
5048
731
- 1
- 1
- {0}
- 1
- Line segment
- 59b9138e-ce78-40d9-8cb1-87a7d9936c9c
- Line
- MIRROR LINE
- false
- 0
-
5100
681
71
60
-
5135.5
711
- 11bbd48b-bb0a-4f1b-8167-fa297590390d
- End Points
- Extract the end points of a curve.
- true
- d377e323-bd41-4750-91c4-0876fdef2858
- End Points
- End Points
-
4676
500
99
44
-
4726
522
- Curve to evaluate
- 56876946-f35b-4819-91b0-3c57658cd104
- Curve
- Curve
- false
- c61c1322-6bbb-4acb-b40d-8ae95ef13892
- 1
-
4678
502
33
40
-
4696
522
- Curve start point
- c5d2e187-1805-4037-b4a3-a62c37ac0cf6
- Start
- Start
- false
- 0
-
4741
502
32
20
-
4757
512
- Curve end point
- cf11138f-f85a-4ee6-a215-a6263d8393c1
- End
- End
- false
- 0
-
4741
522
32
20
-
4757
532
- 4c619bc9-39fd-4717-82a6-1e07ea237bbe
- Line SDL
- Create a line segment defined by start point, tangent and length.}
- true
- 9ddba3f5-8f43-4cf1-b299-d21c2b6c3f70
- Line SDL
- Line SDL
-
4750
610
109
64
-
4814
642
- Line start point
- 840d3ba4-9f1a-4771-90f3-5673e4b0d885
- Start
- Start
- false
- cf11138f-f85a-4ee6-a215-a6263d8393c1
- 1
-
4752
612
47
20
-
4777
622
- 1
- 1
- {0}
-
0
0
0
- Line tangent (direction)
- 86a0460c-675a-4181-bab5-5eb0f6fa9c46
- Direction
- Direction
- false
- 0
-
4752
632
47
20
-
4777
642
- 1
- 1
- {0}
-
-1
1
0
- Line length
- 50fd7288-95ab-4e84-a473-f8638edfb46a
- Length
- Length
- false
- 7a7c446d-c7b5-478c-85d3-38514268a55d
- 1
-
4752
652
47
20
-
4777
662
- 1
- 1
- {0}
- 1
- Line segment
- f95e29d5-4bc0-4786-85f4-893aacd2d9d8
- Line
- Line
- false
- 0
-
4829
612
28
60
-
4843
642
- 6b7ba278-5c9d-42f1-a61d-6209cbd44907
- Curve Proximity
- Find the pair of closest points between two curves.
- f5ccc54d-6cb6-4b5d-9e83-ea97921972f8
- Curve Proximity
- Curve Proximity
-
4662
421
126
64
-
4723
453
- First curve
- c7d572f6-76c0-4965-a2fd-098bf72bf991
- Curve A
- Curve A
- false
- fbac77a5-b15a-4a25-8bf0-69012470613a
- 1
-
4664
423
44
30
-
4687.5
438
- Second curve
- 08582a6c-4d15-4e55-85aa-85d3b7060f45
- Curve B
- Curve B
- false
- d3b2d65f-7b80-4df2-91ae-3509446f422e
- 1
-
4664
453
44
30
-
4687.5
468
- Point on curve A closest to curve B
- 3f24c2f4-a57e-4682-8f22-f875a1c0bfae
- Point A
- Point A
- false
- 0
-
4738
423
48
20
-
4762
433
- Point on curve B closest to curve A
- 1afe42e1-bc59-406e-81b5-253216722a55
- Point B
- Point B
- false
- 0
-
4738
443
48
20
-
4762
453
- Smallest distance between two curves
- aec1af83-2284-4687-9aec-0790a24f74d6
- Distance
- Distance
- false
- 0
-
4738
463
48
20
-
4762
473
- 4c4e56eb-2f04-43f9-95a3-cc46a14f495a
- Line
- Create a line between two points.
- true
- 0f4e29a4-53aa-4f3d-9b6f-0c32287a6c34
- Line
- MIRROR LINE
-
4941
468
200
44
-
5013
490
- Line start point
- 9d7b31f2-e4c2-4d0e-8c0b-58934341d34d
- Start Point
- Start Point
- false
- 3f24c2f4-a57e-4682-8f22-f875a1c0bfae
- 1
-
4943
470
55
20
-
4972
480
- Line end point
- c718e8fd-37bd-43a1-9ce6-8f5ae3b5e8ac
- End Point
- End Point
- false
- 1afe42e1-bc59-406e-81b5-253216722a55
- 1
-
4943
490
55
20
-
4972
500
- Line segment
- d6eec887-16e2-4f6a-b973-1c656787bada
- Line
- MIRROR CUTING LINE
- false
- 0
-
5028
470
111
40
-
5083.5
490
- 84627490-0fb2-4498-8138-ad134ee4cb36
- Curve | Curve
- Solve intersection events for two curves.
- true
- ca0ac8cb-0afb-40ef-ab66-a0c1a4912072
- Curve | Curve
- Curve | Curve
-
4914
561
133
64
-
4975
593
- First curve
- d006c797-ce32-4a5c-8fce-eeece7dd1ead
- Curve A
- Curve A
- false
- d6eec887-16e2-4f6a-b973-1c656787bada
- 1
-
4916
563
44
30
-
4939.5
578
- Second curve
- d472f470-0275-4dea-b327-457e10278d4c
- Curve B
- Curve B
- false
- c61c1322-6bbb-4acb-b40d-8ae95ef13892
- 1
-
4916
593
44
30
-
4939.5
608
- 1
- Intersection events
- 85c0355c-c111-48bb-954d-f48b78d77eb6
- Points
- Points
- false
- 0
-
4990
563
55
20
-
5017.5
573
- 1
- Parameters on first curve
- a574f5f0-9645-4f0e-8a48-024fddcb2988
- Params A
- Params A
- false
- 0
-
4990
583
55
20
-
5017.5
593
- 1
- Parameters on second curve
- b618f41f-8347-42b4-bcce-bbfdeae83bc8
- Params B
- Params B
- false
- 0
-
4990
603
55
20
-
5017.5
613
- f12daa2f-4fd5-48c1-8ac3-5dea476912ca
- Mirror
- Mirror an object.
- true
- 6addf0b0-489a-40c6-a48e-74d5b13dfb6e
- Mirror
- Mirror
-
4958
381
141
44
-
5026
403
- Base geometry
- fefc1139-1162-49a0-acb4-8df8341fec0e
- Geometry
- Geometry
- true
- fbac77a5-b15a-4a25-8bf0-69012470613a
- 1
-
4960
383
51
20
-
4987
393
- Mirror plane
- a61e136e-3c52-4403-92cb-3691508b47c7
- Plane
- Plane
- false
- f95e29d5-4bc0-4786-85f4-893aacd2d9d8
- 1
-
4960
403
51
20
-
4987
413
- 1
- 1
- {0}
-
0
0
0
0
1
0
0
0
1
- Mirrored geometry
- d3b2d65f-7b80-4df2-91ae-3509446f422e
- Geometry
- Geometry
- false
- 0
-
5041
383
56
20
-
5069
393
- Transformation data
- cc63d2a4-59c0-4ee5-8971-0812b43527be
- Transform
- Transform
- false
- 0
-
5041
403
56
20
-
5069
413
- 65f34325-a2fe-4fd6-8ac7-1cc9e6455bfb
- 1c9de8a1-315f-4c56-af06-8f69fee80a7a
- Mirror Cut Curve
- Cut a curve with a plane, mirror the kept side of the cut across a mirror plane, and combine it with the kept side.
- true
- 240c211c-ba42-4048-bc97-e44d2e18170a
- Mirror Cut Curve
- Mirror Cut Curve
-
4843
132
183
184
-
4943
224
- Curve to mirror cut
- 7a36101f-56a8-45bf-8dcb-d1a619652b91
- Curve
- Curve
- false
- fbac77a5-b15a-4a25-8bf0-69012470613a
- 1
-
4845
134
83
20
-
4888
144
- Plane that the kept side of the curve cut gets mirrored across
- c73f3bfd-66b5-46bc-89e3-979e655b37f2
- Mirror Plane
- Mirror Plane
- false
- 59b9138e-ce78-40d9-8cb1-87a7d9936c9c
- 1
-
4845
154
83
20
-
4888
164
- Parts of the curve within this distance from the mirror plane will be additionally cut away
- 2b0959c7-f4db-4e35-bb02-936aaa10d53a
- Reach
- Reach
- false
- 0
-
4845
174
83
20
-
4888
184
- 1
- 1
- {0}
- 0
- Distance to offset the kept parts of the curve from the mirror plane (or offset from the reach if reach in not zero)
- b5ca8561-cb23-42c8-bfd3-daae40f670e9
- Offset
- Offset
- false
- 0
-
4845
194
83
20
-
4888
204
- 1
- 1
- {0}
- 0
- Flip the mirror direction
- 2df1e4de-b4a9-49a5-bd1e-d2e545096824
- Flip
- Flip
- false
- 0
-
4845
214
83
20
-
4888
224
- 1
- 1
- {0}
- false
- Join the mirror cut curves
- 76c6073f-e5c8-45e1-9f4a-1c08ca966c8d
- Join
- Join
- false
- 0
-
4845
234
83
20
-
4888
244
- 1
- 1
- {0}
- true
- Keep the curve and mirror it normally if it is mirror cut into non-existence
- e0909465-6595-400c-a10c-7f83a50dd4c1
- Keep
- Keep
- false
- 0
-
4845
254
83
20
-
4888
264
- 1
- 1
- {0}
- false
- Determines how the mirror cut curves are connected
0 = Linear
1 = Tangency
2 = Curvature
3 = Meet Ends
- 6d0ebce5-38b2-4d13-9a4c-bec59d394b73
- Connection Type
- Connection Type
- false
- 0
-
4845
274
83
20
-
4888
284
- 1
- 1
- {0}
- 0
- Bulge factor for the mirror cut curve connections (-B = Negative Bulge, 0.0 = No Bulge, +B = Positive Bulge)
- 76871e12-a380-4bfc-a766-7fbc0b21876e
- Bulge
- Bulge
- false
- 0
-
4845
294
83
20
-
4888
304
- 1
- 1
- {0}
- 0
- 1
- Resulting mirror cut curves
- 92f661f6-4319-4861-ad6a-a59b608327fc
- Mirror Cut
- Mirror Cut
- false
- 0
-
4958
134
66
36
-
4991
152
- The splitting index (only if Join is false)
To split the mirror cut curve set at the mirror use this as the index input on Grasshopper's Split List component.
- 2930bdfc-a558-40f6-9dcb-da855adbb036
- Split Index
- Split Index
- false
- 0
-
4958
170
66
36
-
4991
188
- The plane at the reach distance
- e8b32b49-9ae0-4958-b375-30f99fc9a1e5
- Reach Plane
- Reach Plane
- false
- 0
-
4958
206
66
36
-
4991
224
- The plane at the offset distance
- dcdbf4e7-5dfc-4e6d-8716-a19152e42ade
- Offset Plane
- Offset Plane
- false
- 0
-
4958
242
66
36
-
4991
260
- True if the curve was intersected by the mirror cut, False if the curve was not intersected by the mirror cut
- 308874a3-735e-4350-901b-90ca30ecd1de
- Intersected
- Intersected
- false
- 0
-
4958
278
66
36
-
4991
296
- eeafc956-268e-461d-8e73-ee05c6f72c01
- Stream Filter
- Filters a collection of input streams
- 979151a5-e3ce-4c44-9a9c-741915882b6c
- Stream Filter
- Stream Filter
-
5109
294
92
64
-
5154
326
- 3
- 2e3ab970-8545-46bb-836c-1c11e5610bce
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- Index of Gate stream
- 3894d296-76b4-465c-bd68-877edf10a6ad
- Gate
- Gate
- false
- cd7ea3bd-3415-417e-ba5d-c031853b6eef
- 1
-
5111
296
28
20
-
5126.5
306
- 1
- 1
- {0}
- 0
- 2
- Input stream at index 0
- 5801260e-8c4f-4ed8-8d16-86247fb09e4b
- false
- Stream 0
- 0
- true
- fbac77a5-b15a-4a25-8bf0-69012470613a
- 1
-
5111
316
28
20
-
5126.5
326
- 2
- Input stream at index 1
- 9d902d16-dbe2-4524-8bfe-2599aeb14f79
- false
- Stream 1
- 1
- true
- 92f661f6-4319-4861-ad6a-a59b608327fc
- 1
-
5111
336
28
20
-
5126.5
346
- 2
- Filtered stream
- ea3716e7-2081-4c05-8195-f83a4ab37d5e
- false
- Stream
- S(0)
- false
- 0
-
5169
296
30
60
-
5184
326
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- cd7ea3bd-3415-417e-ba5d-c031853b6eef
- Number Slider
- Number Slider
- false
- 0
-
5108
206
198
20
- 3
- 1
- 1
- 1
- 0
- 0
- 0
- b7798b74-037e-4f0c-8ac7-dc1043d093e0
- Rotate
- Rotate an object in a plane.
- true
- 488c670f-c4ab-4751-877c-6fb093be3ccb
- Rotate
- Rotate
-
4998
775
141
64
-
5066
807
- Base geometry
- be6e2de5-14ca-4c17-8fde-a2b3e16e49d4
- Geometry
- Geometry
- true
- d6eec887-16e2-4f6a-b973-1c656787bada
- 1
-
5000
777
51
20
-
5027
787
- Rotation angle in radians
- d10e0b7a-8a49-47a6-b0b6-bfe3b3be2b19
- Angle
- Angle
- false
- 99f948aa-ab0f-4331-99f0-8e49f4381ea3
- 1
- false
-
5000
797
51
20
-
5027
807
- 1
- 1
- {0}
- 1.5707963267948966
- Rotation plane
- 42a99a4c-28c4-4cb9-acf1-ff642a4e983c
- Plane
- Plane
- false
- 1afe42e1-bc59-406e-81b5-253216722a55
- 1
-
5000
817
51
20
-
5027
827
- 1
- 1
- {0}
-
0
0
0
1
0
0
0
1
0
- Rotated geometry
- cbcaca56-5288-457f-baee-891e32e535d7
- Geometry
- Geometry
- false
- 0
-
5081
777
56
30
-
5109
792
- Transformation data
- 5a95a0a0-42bd-4d31-8229-8c15dae9d9b3
- Transform
- Transform
- false
- 0
-
5081
807
56
30
-
5109
822
- a4cd2751-414d-42ec-8916-476ebf62d7fe
- Radians
- Convert an angle specified in degrees to radians
- afa2ae6d-563a-411a-8b73-f0b45df727d3
- Radians
- Radians
-
4786
822
123
28
-
4847
836
- Angle in degrees
- 23595876-82ff-4a6c-a6a8-2873214b3922
- Degrees
- Degrees
- false
- 6da939a1-5898-43d5-b831-243d9c406cb2
- 1
-
4788
824
44
24
-
4811.5
836
- Angle in radians
- 99f948aa-ab0f-4331-99f0-8e49f4381ea3
- Radians
- Radians
- false
- 0
-
4862
824
45
24
-
4884.5
836
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 6da939a1-5898-43d5-b831-243d9c406cb2
- Number Slider
- Number Slider
- false
- 0
-
4607
758
198
20
- 3
- 1
- 1
- 90
- 0
- 0
- 90
- fe502a6c-31bc-4089-821d-05de68d7fe76
- 1c9de8a1-315f-4c56-af06-8f69fee80a7a
- Curve Length At
- Get the length along a curve from its start to a point on the curve (or optionally to a parameter on the curve), if point is not on the curve it will be pulled to it.
- true
- 1db1e857-d74f-42e1-b4c0-6099a830a680
- Curve Length At
- Curve Length At
-
4646
5
147
84
-
4720
47
- Curve to get length along
- ea7720f2-a320-4004-aa0c-00e4e4b01239
- Curve
- Curve
- false
- fbac77a5-b15a-4a25-8bf0-69012470613a
- 1
-
4648
7
57
20
-
4678
17
- Point on curve to get length to
- 2a018bf0-6ca3-4dd6-8ea5-c67710ab1fef
- Point
- Point
- true
- 76429ee8-2e7d-4d4b-ac2b-34e913d1b9c1
- 1
-
4648
27
57
20
-
4678
37
- Optional parameter on curve to get length to instead of a point (will override point if a point is also input)
- 46f156d1-c6b3-405e-951a-e0b9dd83df0c
- Parameter
- Parameter
- true
- 0
-
4648
47
57
20
-
4678
57
- If true, the length output is normalized (0.0 - 1.0)
- 47d1919c-cf07-4b64-88a7-9ce7df657d25
- Normalized
- Normalized
- false
- 0
-
4648
67
57
20
-
4678
77
- 1
- 1
- {0}
- false
- Length along curve from start to the point on curve
- 92606c4d-9209-45eb-a092-288edcad529f
- Length
- Length
- false
- 0
-
4735
7
56
40
-
4763
27
- Curve parameter at the point on curve
- 36f96bb6-fa93-41f7-bb71-890789aafcc4
- Parameter
- Parameter
- false
- 0
-
4735
47
56
40
-
4763
67
- 7f6a9d34-0470-4bb7-aadd-07496bcbe572
- Point On Curve
- Evaluates a curve at a specific location
- true
- 76429ee8-2e7d-4d4b-ac2b-34e913d1b9c1
- Point On Curve
- Point On Curve
- false
- fbac77a5-b15a-4a25-8bf0-69012470613a
- 1
- 0.343
-
4595
127
120
20
- aaa665bd-fd6e-4ccb-8d2c-c5b33072125d
- Curvature
- Evaluate the curvature of a curve at a specified parameter.
- true
- af0bea5e-7bf6-4f1b-933a-80fba4a8f309
- Curvature
- Curvature
-
4725
-81
140
64
-
4795
-49
- Curve to evaluate
- 807d3d4d-8588-4f72-977d-f085af7710a4
- Curve
- Curve
- false
- fbac77a5-b15a-4a25-8bf0-69012470613a
- 1
-
4727
-79
53
30
-
4755
-64
- Parameter on curve domain to evaluate
- b158b1fe-7b33-4623-be1f-9dc9d935a7be
- Parameter
- Parameter
- false
- 36f96bb6-fa93-41f7-bb71-890789aafcc4
- 1
-
4727
-49
53
30
-
4755
-34
- Point on curve at {t}
- fddf3285-20a3-42a4-b39d-b9a2a9609ec5
- Point
- Point
- false
- 0
-
4810
-79
53
20
-
4836.5
-69
- Curvature vector at {t}
- 82c9a2b9-6b13-43ad-b872-5de4d684d071
- Curvature
- Curvature
- false
- 0
-
4810
-59
53
20
-
4836.5
-49
- Curvature circle at {t}
- 924ff156-a262-48aa-bf78-1115b8290baa
- Curvature
- Curvature
- false
- 0
-
4810
-39
53
20
-
4836.5
-29
- 3c5edcba-b7a5-4710-b076-4b19a7080a2b
- 08bdcae0-d034-48dd-a145-24a9fcf3d3ff
- Center
- Returns the center of a geometry and the Diameter of it's bounding box as the Dimention
You can Right Click on the component's icon and choose "ForAll" option to have center point of a group of geometries.
Besides You can Right click on the component's icon and choose one of three provided options (Spacial/ Planar/ Basement ) to have Desired type of center.
- true
- 6a0e5005-183c-4ece-be96-cf4cb7eb9dc7
- Center
- Center
-
4974
-132
144
44
-
5044
-110
- 1
- Geometric
- 66855b2d-500d-4bb4-a0d8-ba9ed331c1c0
- Geometric
- Geometric
- false
- 924ff156-a262-48aa-bf78-1115b8290baa
- 1
-
4976
-130
53
40
-
5004
-110
- 1
- Center
- c8443129-e88c-4956-8575-af5b2757c37b
- Center
- Center
- false
- 0
-
5059
-130
57
20
-
5087.5
-120
- 1
- Diagonal size of geometry's bounding box
- a7eabf9f-e9ed-4702-ad86-89b594e75b66
- Dimension
- Dimension
- false
- 0
-
5059
-110
57
20
-
5087.5
-100
- 4c4e56eb-2f04-43f9-95a3-cc46a14f495a
- Line
- Create a line between two points.
- true
- 673b9d07-1207-465a-a8ea-e01c348f1ac2
- Line
- Line
-
4944
27
117
44
-
5016
49
- Line start point
- 88114937-6f3e-4b14-a462-0fc8c506efe2
- Start Point
- Start Point
- false
- 76429ee8-2e7d-4d4b-ac2b-34e913d1b9c1
- 1
-
4946
29
55
20
-
4975
39
- Line end point
- ca1637a6-80ed-42d2-87b6-41e3388f143b
- End Point
- End Point
- false
- c8443129-e88c-4956-8575-af5b2757c37b
- 1
-
4946
49
55
20
-
4975
59
- Line segment
- dd0c862c-c189-496a-87a8-cc52af55c562
- Line
- Line
- false
- 0
-
5031
29
28
40
-
5045
49
- b7798b74-037e-4f0c-8ac7-dc1043d093e0
- Rotate
- Rotate an object in a plane.
- true
- 79439e82-c4d8-4436-b0ad-cda16c6aa83b
- Rotate
- Rotate
-
5130
-13
141
64
-
5198
19
- Base geometry
- fc12ed3d-ffad-41d5-85d7-13516c3f64a1
- Geometry
- Geometry
- true
- dd0c862c-c189-496a-87a8-cc52af55c562
- 1
-
5132
-11
51
20
-
5159
-1
- Rotation angle in radians
- cbf10d6b-ae54-47b2-9028-581079ab99c3
- Angle
- Angle
- false
- 0
- false
-
5132
9
51
20
-
5159
19
- 1
- 1
- {0}
- 1.5707963267948966
- Rotation plane
- 3af0fe48-16b1-431a-b366-9ef2be1b5e8c
- Plane
- Plane
- false
- fddf3285-20a3-42a4-b39d-b9a2a9609ec5
- 1
-
5132
29
51
20
-
5159
39
- 1
- 1
- {0}
-
0
0
0
1
0
0
0
1
0
- Rotated geometry
- 31d60323-1eef-4417-85fb-8764785d56f7
- Geometry
- Geometry
- false
- 0
-
5213
-11
56
30
-
5241
4
- Transformation data
- a3296a2d-933d-47d8-b2e0-809e4a55cf77
- Transform
- Transform
- false
- 0
-
5213
19
56
30
-
5241
34
- 4d2a06bd-4b0f-4c65-9ee0-4220e4c01703
- Scale
- Scale an object uniformly in all directions.
- true
- d42e858d-8437-4870-af59-81c5025866e7
- Scale
- Scale
-
5382
-35
141
64
-
5450
-3
- Base geometry
- 1237ed46-855f-4f2e-a5a3-96a4dea47090
- Geometry
- Geometry
- true
- 31d60323-1eef-4417-85fb-8764785d56f7
- 1
-
5384
-33
51
20
-
5411
-23
- Center of scaling
- e3a882e9-5f59-4b36-8cfe-d4a648a34166
- Center
- Center
- false
- fddf3285-20a3-42a4-b39d-b9a2a9609ec5
- 1
-
5384
-13
51
20
-
5411
-3
- 1
- 1
- {0}
-
0
0
0
- Scaling factor
- 7bda9ed9-ae4e-43ac-b87a-6bee4a56e282
- Factor
- Factor
- false
- 1cbbdc3e-57b5-4089-93fb-4522f2f7834a
- 1
-
5384
7
51
20
-
5411
17
- 1
- 1
- {0}
- 0.5
- Scaled geometry
- b772f85b-98e0-4e36-ae96-f51b17b2c411
- Geometry
- Geometry
- false
- 0
-
5465
-33
56
30
-
5493
-18
- Transformation data
- 06265c1f-3652-4a94-b8f6-6edd376dbb34
- Transform
- Transform
- false
- 0
-
5465
-3
56
30
-
5493
12
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- d82e34b8-7fcf-49ee-9d53-a7d05165198f
- Number Slider
- Number Slider
- false
- 0
-
5136
102
198
20
-
5136.684
102.2449
- 3
- 1
- 1
- 10
- 0
- 0
- 6
- a3371040-e552-4bc8-b0ff-10a840258e88
- Negative
- Compute the negative of a value.
- true
- 264fbfa5-781a-4fa7-a58a-4cf1522dbf35
- Negative
- Negative
-
5370
65
103
28
-
5419
79
- Input value
- 63cddb0c-d4c3-41f7-be6e-db11d395f22a
- Value
- Value
- false
- d82e34b8-7fcf-49ee-9d53-a7d05165198f
- 1
-
5372
67
32
24
-
5389.5
79
- Output value
- 1cbbdc3e-57b5-4089-93fb-4522f2f7834a
- Result
- Result
- false
- 0
-
5434
67
37
24
-
5452.5
79
- 11bbd48b-bb0a-4f1b-8167-fa297590390d
- End Points
- Extract the end points of a curve.
- d4e41e66-e5b0-41a3-9efa-ae69bdd9bed7
- End Points
- End Points
-
3144
3172
99
44
-
3194
3194
- Curve to evaluate
- 4ad9e46d-6a98-43d5-a873-1c099de1f7a0
- Curve
- Curve
- false
- 9d691b43-c570-4280-97d7-5f1b84e62bac
- 1
-
3146
3174
33
40
-
3164
3194
- Curve start point
- 73e31c66-775b-40b7-8b1a-4a625bf9aa32
- Start
- Start
- false
- 0
-
3209
3174
32
20
-
3225
3184
- Curve end point
- 65549b65-763e-42a9-a596-c9d1e4aeb398
- End
- End
- false
- 0
-
3209
3194
32
20
-
3225
3204
- f12daa2f-4fd5-48c1-8ac3-5dea476912ca
- Mirror
- Mirror an object.
- f67fe8ff-4d10-425b-8c75-79702721c7c3
- Mirror
- Mirror
-
4606
3437
141
44
-
4674
3459
- Base geometry
- 58fbca11-6629-48f5-9530-e0f25c9d5c88
- Geometry
- Geometry
- true
- 864fffcb-78f2-4f1d-984d-c524b8bd661d
- 1
-
4608
3439
51
20
-
4635
3449
- Mirror plane
- e19d9396-296b-466c-a0fa-a1edb2deb830
- Plane
- Plane
- false
- 520a508f-2426-4a9a-a491-89d5c13cb6d0
- 1
-
4608
3459
51
20
-
4635
3469
- 1
- 1
- {0}
-
0
0
0
0
1
0
0
0
1
- Mirrored geometry
- 988e111a-f147-4329-96de-2f47316d01b2
- Geometry
- Geometry
- false
- 0
-
4689
3439
56
20
-
4717
3449
- Transformation data
- ee9e6cb5-5d5e-4771-828a-93ffb7bf57cd
- Transform
- Transform
- false
- 0
-
4689
3459
56
20
-
4717
3469
- 8529dbdf-9b6f-42e9-8e1f-c7a2bde56a70
- Line
- Contains a collection of line segments
- 520a508f-2426-4a9a-a491-89d5c13cb6d0
- Line
- Line
- false
- 0
-
4457
3574
50
24
-
4482.037
3586.759
- 1
- 1
- {0}
-
1
1
0
0
1
0
- ce46b74e-00c9-43c4-805a-193b69ea4a11
- Multiplication
- Mathematical multiplication
- 161d2c09-fdf9-441c-b323-5007b0507897
- Multiplication
- Multiplication
-
1509
2593
85
44
-
1540
2615
- 2
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- First item for multiplication
- 1a351b03-fc07-444b-ad10-fa7cfeee3af5
- A
- A
- true
- 125a372b-916c-4b37-84e8-53786f7108ea
- 1
-
1511
2595
14
20
-
1519.5
2605
- Second item for multiplication
- a0660bb3-8f0d-4b46-b26d-d4863f815158
- B
- B
- true
- 0
-
1511
2615
14
20
-
1519.5
2625
- 1
- 1
- {0}
- Grasshopper.Kernel.Types.GH_Integer
- 16
- Result of multiplication
- 0ab31ee5-a662-42db-a9f0-ca0831013edc
- Result
- Result
- false
- 0
-
1555
2595
37
40
-
1573.5
2615
- 8073a420-6bec-49e3-9b18-367f6fd76ac3
- Join Curves
- Join as many curves as possible
- 7221b5e9-2e77-4ecb-9ad6-90532f7e7415
- Join Curves
- Join Curves
-
4651
3276
137
44
-
4730
3298
- 1
- Curves to join
- 641d539a-1d45-4c8e-ab8e-726e6ecfafd6
- 1
- Curves
- Curves
- false
- 864fffcb-78f2-4f1d-984d-c524b8bd661d
- 988e111a-f147-4329-96de-2f47316d01b2
- 2
-
4653
3278
62
20
-
4693.5
3288
- Preserve direction of input curves
- ac794d57-8162-4c4b-85b0-a021a860160a
- Preserve
- Preserve
- false
- 0
-
4653
3298
62
20
-
4693.5
3308
- 1
- 1
- {0}
- false
- 1
- Joined curves and individual curves that could not be joined.
- 8f93381c-91c2-49bd-a529-a5ce8f8e4702
- Curves
- Curves
- false
- 0
-
4745
3278
41
40
-
4765.5
3298
- cae9fe53-6d63-44ed-9d6d-13180fbf6f89
- 1c9de8a1-315f-4c56-af06-8f69fee80a7a
- Curve Graph Mapper
- Remap values with a custom graph using input curves.
- b37eac67-0843-4344-9956-3d92330016a1
- Curve Graph Mapper
- Curve Graph Mapper
-
1777
2862
163
224
-
1845
2974
- 1
- One or multiple graph curves to graph map values with
- 120f989a-d69b-47cc-8833-f7f4a9083270
- Curves
- Curves
- false
- bf230807-dbf0-49e8-9136-fa1e124bdb30
- 1
-
1779
2864
51
27
-
1806
2877.75
- Rectangle which defines the boundary of the graph, graph curves should be atleast partially inside this boundary
- c1169407-50c6-4509-a033-ee580e697555
- Rectangle
- Rectangle
- false
- d222d866-05d2-41e8-9567-8cca0e0544d2
- 1
-
1779
2891
51
28
-
1806
2905.25
- 1
- Values to graph map. Values are plotted along the X Axis, intersected with the graph curves, then mapped to the Y Axis
- c07225be-f364-4a48-b228-f0a151a71478
- Values
- Values
- false
- bd4aaa1e-5c93-4d92-a13b-51513caaff31
- 1
-
1779
2919
51
27
-
1806
2932.75
- Domain of the graphs X Axis, where the values get plotted (if omitted the input value lists domain bounds is used)
- 86925885-b3fa-4a0a-90fc-85f970b7e3d1
- X Axis
- X Axis
- true
- 0
-
1779
2946
51
28
-
1806
2960.25
- Domain of the graphs Y Axis, where the values get mapped to (if omitted the input value lists domain bounds is used)
- 8547247e-48ec-468f-a4fe-e5fa45ef9233
- Y Axis
- Y Axis
- true
- 0
-
1779
2974
51
27
-
1806
2987.75
- Flip the graphs X Axis from the bottom of the graph to the top of the graph
- b2fa0ece-a9e9-43af-bddd-c034bd468744
- Flip
- Flip
- false
- 0
-
1779
3001
51
28
-
1806
3015.25
- 1
- 1
- {0}
- false
- Resize the graph by snapping it to the extents of the graph curves, in the plane of the boundary rectangle
- 71e58007-a301-489b-8e47-b1b188a2c6ac
- Snap
- Snap
- false
- 0
-
1779
3029
51
27
-
1806
3042.75
- 1
- 1
- {0}
- false
- Size of the graph labels
- e99fdbfe-34d3-4457-9597-fbc92fec43ef
- Text Size
- Text Size
- false
- 0
-
1779
3056
51
28
-
1806
3070.25
- 1
- 1
- {0}
- 0.25
- 1
- Resulting graph mapped values, mapped on the Y Axis
- d3c05f2f-fcc7-4063-ac10-b690ce1be88f
- Mapped
- Mapped
- false
- 0
-
1860
2864
78
20
-
1899
2874
- 1
- The graph curves inside the boundary of the graph
- c332f52b-f404-4ea7-9fe5-ff625e090375
- Graph Curves
- Graph Curves
- false
- 0
-
1860
2884
78
20
-
1899
2894
- 1
- The points on the graph curves where the X Axis input values intersected
- true
- ff6e9d06-30f0-4e2b-8866-7f0eea59f480
- Graph Points
- Graph Points
- false
- 0
-
1860
2904
78
20
-
1899
2914
- 1
- The lines from the X Axis input values to the graph curves
- true
- 7a1f249a-242a-4474-be0d-53c66a2e4afa
- Value Lines
- Value Lines
- false
- 0
-
1860
2924
78
20
-
1899
2934
- 1
- The points plotted on the X Axis which represent the input values
- true
- 4bc60ac5-5e44-4cce-92af-4b69b946ebb0
- Value Points
- Value Points
- false
- 0
-
1860
2944
78
20
-
1899
2954
- 1
- The lines from the graph curves to the Y Axis graph mapped values
- true
- 060cb155-b497-47d4-82f3-738947f3705a
- Mapped Lines
- Mapped Lines
- false
- 0
-
1860
2964
78
20
-
1899
2974
- 1
- The points mapped on the Y Axis which represent the graph mapped values
- true
- f62c3a5d-6d87-46f3-9414-6dbf016061ff
- Mapped Points
- Mapped Points
- false
- 0
-
1860
2984
78
20
-
1899
2994
- The graph boundary background as a surface
- 9668f4a4-b08e-436b-bcb7-0eb76b4842ba
- Boundary
- Boundary
- false
- 0
-
1860
3004
78
20
-
1899
3014
- 1
- The graph labels as curve outlines
- 20801864-ac3f-422d-9cd8-23260a3aa1ac
- Labels
- Labels
- false
- 0
-
1860
3024
78
20
-
1899
3034
- 1
- True for input values outside of the X Axis domain bounds
False for input values inside of the X Axis domain bounds
- dec45669-43cf-4f0a-a7a0-e259b267fd84
- Out Of Bounds
- Out Of Bounds
- false
- 0
-
1860
3044
78
20
-
1899
3054
- 1
- True for input values on the X Axis which intersect a graph curve
False for input values on the X Axis which do not intersect a graph curve
- 529404f3-0177-4622-95b7-a4912efa5d9a
- Intersected
- Intersected
- false
- 0
-
1860
3064
78
20
-
1899
3074
- b6236720-8d88-4289-93c3-ac4c99f9b97b
- Relay
- 2
- A wire relay object
- 888980c4-0dec-45f4-8006-fa5b932a754f
- Relay
- Relay
- false
- b75a0e49-7509-488b-94f8-b51b4bf11f2d
- 1
-
1619
2720
44
16
-
1641
2728
- b6236720-8d88-4289-93c3-ac4c99f9b97b
- Relay
- 2
- A wire relay object
- bf230807-dbf0-49e8-9136-fa1e124bdb30
- Relay
- Relay
- false
- b75a0e49-7509-488b-94f8-b51b4bf11f2d
- 1
-
1645
2914
44
16
-
1667
2922
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- f3dcc498-5332-4136-8b5d-8307a1699189
- Number Slider
- Number Slider
- false
- 0
-
1934
2681
198
20
-
1934.588
2681.381
- 3
- 1
- 1
- 1
- 0
- 0
- 1
- eeafc956-268e-461d-8e73-ee05c6f72c01
- Stream Filter
- Filters a collection of input streams
- 1f435ea7-b15e-42a2-b05d-d86d6095476b
- Stream Filter
- Stream Filter
-
2172
2725
92
64
-
2217
2757
- 3
- 2e3ab970-8545-46bb-836c-1c11e5610bce
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- Index of Gate stream
- cfe0f6d4-2600-4fc2-a693-ca2a11a72f45
- Gate
- Gate
- false
- f3dcc498-5332-4136-8b5d-8307a1699189
- 1
-
2174
2727
28
20
-
2189.5
2737
- 1
- 1
- {0}
- 0
- 2
- Input stream at index 0
- 2ec69885-a97f-42a1-87e4-db80fe69bf3f
- false
- Stream 0
- 0
- true
- aa99eb53-f847-4761-874c-b2b7a794afd6
- 1
-
2174
2747
28
20
-
2189.5
2757
- 2
- Input stream at index 1
- 25105d7c-2bee-4104-9638-bd9b09c56d05
- false
- Stream 1
- 1
- true
- d3c05f2f-fcc7-4063-ac10-b690ce1be88f
- 1
-
2174
2767
28
20
-
2189.5
2777
- 2
- Filtered stream
- f7b0f737-7ab2-4e8c-b330-bda8f73ff3ab
- false
- Stream
- S(1)
- false
- 0
-
2232
2727
30
60
-
2247
2757
- 2b69bf71-4e69-43aa-b7be-4f6ce7e45bef
- Quick Graph
- 1
- Display a set of y-values as a graph
- 36ed4567-d839-4fe6-8bea-38b48834ede6
- Quick Graph
- Quick Graph
- false
- 0
- f7b0f737-7ab2-4e8c-b330-bda8f73ff3ab
- 1
-
2150
2536
150
150
-
2150.525
2536.906
- 0
- f12daa2f-4fd5-48c1-8ac3-5dea476912ca
- Mirror
- Mirror an object.
- true
- 963306af-b369-4549-91c6-d87b15ddcd8b
- Mirror
- Mirror
-
4752
3513
141
44
-
4820
3535
- Base geometry
- 158bac51-def3-4482-84b1-d2af3d89e96a
- Geometry
- Geometry
- true
- 8f93381c-91c2-49bd-a529-a5ce8f8e4702
- 1
-
4754
3515
51
20
-
4781
3525
- Mirror plane
- aca91943-0176-490c-9c09-4c5706a99c08
- Plane
- Plane
- false
- ac386334-feed-477a-8bc6-c95a5def5d4f
- 1
-
4754
3535
51
20
-
4781
3545
- 1
- 1
- {0}
-
0
0
0
0
1
0
0
0
1
- Mirrored geometry
- 30ab48f0-9c91-4105-b339-743bf77a2ee0
- Geometry
- Geometry
- false
- 0
-
4835
3515
56
20
-
4863
3525
- Transformation data
- 406788d9-d23d-4528-a0b3-a32ca9571f34
- Transform
- Transform
- false
- 0
-
4835
3535
56
20
-
4863
3545
- 8529dbdf-9b6f-42e9-8e1f-c7a2bde56a70
- Line
- Contains a collection of line segments
- ac386334-feed-477a-8bc6-c95a5def5d4f
- Line
- Line
- false
- 0
-
4710
3657
50
24
-
4735.909
3669.756
- 1
- 1
- {0}
-
2
1
0
0
1
0
- 8073a420-6bec-49e3-9b18-367f6fd76ac3
- Join Curves
- Join as many curves as possible
- e0bf787e-e463-473e-a0e4-a0d615f46a68
- Join Curves
- Join Curves
-
4934
3326
137
44
-
5013
3348
- 1
- Curves to join
- 340d4f7e-b03a-4b70-bb3f-0301bd27cdd4
- 1
- Curves
- Curves
- false
- 8f93381c-91c2-49bd-a529-a5ce8f8e4702
- d3d6ce8c-75f1-4f3a-a3b1-d149d1d7ed4e
- 2
-
4936
3328
62
20
-
4976.5
3338
- Preserve direction of input curves
- cdb6b7f6-7975-4b40-b7ac-962f0f587d4c
- Preserve
- Preserve
- false
- 0
-
4936
3348
62
20
-
4976.5
3358
- 1
- 1
- {0}
- false
- 1
- Joined curves and individual curves that could not be joined.
- f19f5885-3af6-43ca-a9b1-f19c6f0d7d9b
- Curves
- Curves
- false
- 0
-
5028
3328
41
40
-
5048.5
3348
- f12daa2f-4fd5-48c1-8ac3-5dea476912ca
- Mirror
- Mirror an object.
- 02dcbd3d-c189-40fb-b0cb-b9b6e2503e80
- Mirror
- Mirror
-
5133
3499
141
44
-
5201
3521
- Base geometry
- af9fdc06-0e22-4fb4-a730-d370ea3d586f
- Geometry
- Geometry
- true
- f19f5885-3af6-43ca-a9b1-f19c6f0d7d9b
- 1
-
5135
3501
51
20
-
5162
3511
- Mirror plane
- 4e45551b-b6b6-4ab5-bb08-7903b9e73728
- Plane
- Plane
- false
- 5fe31173-9882-4eb9-a1ff-69261d6a1d6d
- 1
-
5135
3521
51
20
-
5162
3531
- 1
- 1
- {0}
-
0
0
0
0
1
0
0
0
1
- Mirrored geometry
- fa886a6f-7dd3-4fcd-91a0-ef9b0aee0827
- Geometry
- Geometry
- false
- 0
-
5216
3501
56
20
-
5244
3511
- Transformation data
- 7228596e-ff77-4761-8d2d-0547ed6c6ca3
- Transform
- Transform
- false
- 0
-
5216
3521
56
20
-
5244
3531
- 8529dbdf-9b6f-42e9-8e1f-c7a2bde56a70
- Line
- Contains a collection of line segments
- 5fe31173-9882-4eb9-a1ff-69261d6a1d6d
- Line
- Line
- false
- 0
-
5070
3721
50
24
-
5095.282
3733.534
- 1
- 1
- {0}
-
4
1
0
0
1
0
- 8073a420-6bec-49e3-9b18-367f6fd76ac3
- Join Curves
- Join as many curves as possible
- a3bdb442-4f6c-49ca-8ee1-e86a20ba335a
- Join Curves
- Join Curves
-
5129
3358
137
44
-
5208
3380
- 1
- Curves to join
- fa68183e-24b1-4ec9-9786-56e15e83e8ce
- 1
- Curves
- Curves
- false
- f19f5885-3af6-43ca-a9b1-f19c6f0d7d9b
- fa886a6f-7dd3-4fcd-91a0-ef9b0aee0827
- 2
-
5131
3360
62
20
-
5171.5
3370
- Preserve direction of input curves
- 1582c345-e0c8-4e7c-8992-e012336cfdd7
- Preserve
- Preserve
- false
- 0
-
5131
3380
62
20
-
5171.5
3390
- 1
- 1
- {0}
- false
- 1
- Joined curves and individual curves that could not be joined.
- 5fb9981e-83a0-4f44-86f1-b9f2a8df2415
- Curves
- Curves
- false
- 0
-
5223
3360
41
40
-
5243.5
3380
- 9df5e896-552d-4c8c-b9ca-4fc147ffa022
- Expression
- Evaluate an expression
- 1/2*X^2+1/6*X^3+1/24*X^4+1/120*X^5+1/720*X^6+1/5040*X^7+1/40320*X^8++1/322560*X^9
- ea7761dd-655e-4acc-8f08-7e9de359b17b
- Expression
- Expression
-
2834
2211
729
28
-
3198
2225
- 1
- ba80fd98-91a1-4958-b6a7-a94e40e52bdb
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- Expression variable
- adf5a857-cde7-4109-a163-329db95d1fbc
- Variable X
- X
- true
- 479e2e0d-a780-4b8b-8880-296c2865d84f
- 1
-
2836
2213
14
24
-
2844.5
2225
- Result of expression
- a3e572b7-8460-477e-8b21-a0f6ccee4a09
- Result
- R
- false
- 0
-
3545
2213
16
24
-
3553
2225
- 9445ca40-cc73-4861-a455-146308676855
- Range
- Create a range of numbers.
- 3fe23929-c54b-4d69-8906-060ddf419ffb
- Range
- Range
-
2759
2266
129
44
-
2833
2288
- Domain of numeric range
- e14a9133-fd37-40c0-a725-c17711b8674b
- Domain
- Domain
- false
- c2e3ed25-7bc5-41d4-8d91-64fb92727afb
- 1
-
2761
2268
57
20
-
2799
2278
- 1
- 1
- {0}
-
0
1
- Number of steps
- ac4e8e3c-8162-466b-b199-7c681eb6409b
- x-1
- Steps
- Steps
- false
- 128af242-c5d6-4c33-9c40-346db3a83c21
- 1
-
2761
2288
57
20
-
2799
2298
- 1
- 1
- {0}
- 10
- 1
- Range of numbers
- 479e2e0d-a780-4b8b-8880-296c2865d84f
- Range
- Range
- false
- 0
-
2848
2268
38
40
-
2867
2288
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 128af242-c5d6-4c33-9c40-346db3a83c21
- Number Slider
- Number Slider
- false
- 0
-
2372
2354
256
20
-
2372.616
2354.125
- 3
- 1
- 1
- 1024
- 0
- 0
- 16
- 9445ca40-cc73-4861-a455-146308676855
- Range
- Create a range of numbers.
- b6fa66bc-8f51-4fd9-8900-73bd82d43231
- Range
- Range
-
2667
2338
129
44
-
2741
2360
- Domain of numeric range
- bfb41409-fc68-4fc1-ae4f-29f9a0f0661b
- Domain
- Domain
- false
- c2e3ed25-7bc5-41d4-8d91-64fb92727afb
- 1
-
2669
2340
57
20
-
2707
2350
- 1
- 1
- {0}
-
0
1
- Number of steps
- ba3e4a9e-2404-446f-962a-97139f98e4b7
- x-1
- Steps
- Steps
- false
- 128af242-c5d6-4c33-9c40-346db3a83c21
- 1
-
2669
2360
57
20
-
2707
2370
- 1
- 1
- {0}
- 10
- 1
- Range of numbers
- 71eca093-1cad-437e-b31b-a8b5721370b1
- Range
- Range
- false
- 0
-
2756
2340
38
40
-
2775
2360
- 3581f42a-9592-4549-bd6b-1c0fc39d067b
- Construct Point
- Construct a point from {xyz} coordinates.
- true
- 099ea0a7-4500-425d-af87-263944178b1a
- Construct Point
- Construct Point
-
2827
2330
132
64
-
2909
2362
- {x} coordinate
- cbb670ad-76f5-4a9a-9fb9-b531947e0415
- X coordinate
- X coordinate
- false
- 71eca093-1cad-437e-b31b-a8b5721370b1
- 1
-
2829
2332
65
20
-
2863
2342
- 1
- 1
- {0}
- 0
- {y} coordinate
- 37fd5c61-a605-4c07-aa74-5dc386832cfb
- Y coordinate
- Y coordinate
- false
- a3e572b7-8460-477e-8b21-a0f6ccee4a09
- 1
-
2829
2352
65
20
-
2863
2362
- 1
- 1
- {0}
- 0
- {z} coordinate
- aa93adc8-6fe4-44d4-8cc6-b26dafd7d4fb
- Z coordinate
- Z coordinate
- false
- 0
-
2829
2372
65
20
-
2863
2382
- 1
- 1
- {0}
- 0
- Point coordinate
- 78f00297-bf52-47d2-a199-6521f677a9eb
- Point
- Point
- false
- 0
-
2924
2332
33
60
-
2940.5
2362
- 2b2a4145-3dff-41d4-a8de-1ea9d29eef33
- Interpolate
- Create an interpolated curve through a set of points.
- 5b608709-26d9-4260-a2d0-d87f9b17f070
- Interpolate
- Interpolate
-
2985
2316
128
84
-
3052
2358
- 1
- Interpolation points
- 2cdb773d-deca-4027-908c-66a79f997282
- Vertices
- Vertices
- false
- 78f00297-bf52-47d2-a199-6521f677a9eb
- 1
-
2987
2318
50
20
-
3013.5
2328
- Curve degree
- 597cc886-1b9d-4515-a57f-a290a0120159
- Degree
- Degree
- false
- 0
-
2987
2338
50
20
-
3013.5
2348
- 1
- 1
- {0}
- 3
- Periodic curve
- 0b5282c4-f52e-4553-ae8a-3f348c586329
- Periodic
- Periodic
- false
- 0
-
2987
2358
50
20
-
3013.5
2368
- 1
- 1
- {0}
- false
- Knot spacing (0=uniform, 1=chord, 2=sqrtchord)
- 3f4e46d0-611a-4865-97d0-66615ba2544c
- KnotStyle
- KnotStyle
- false
- 0
-
2987
2378
50
20
-
3013.5
2388
- 1
- 1
- {0}
- 0
- Resulting nurbs curve
- 89e2ec6c-a9fa-4ef6-a9f0-3e7b66a23ba8
- Curve
- Curve
- false
- 0
-
3067
2318
44
26
-
3089
2331.333
- Curve length
- cb32704c-8f69-43d8-a130-5082d2fcfd6a
- Length
- Length
- false
- 0
-
3067
2344
44
27
-
3089
2358
- Curve domain
- 13e1f870-b7c5-444c-bb5f-23d2a81c7a1e
- Domain
- Domain
- false
- 0
-
3067
2371
44
27
-
3089
2384.667
- d1a28e95-cf96-4936-bf34-8bf142d731bf
- Construct Domain
- Create a numeric domain from two numeric extremes.
- 415240eb-c8ac-4c48-b1e7-d3a9fca14a2d
- Construct Domain
- Construct Domain
-
2626
2202
143
44
-
2708
2224
- Start value of numeric domain
- ef805826-d683-40a2-aa34-35eef78b83ec
- Domain start
- Domain start
- false
- 4e4e4d5e-77d8-4f77-9214-00afbe9031a0
- 1
-
2628
2204
65
20
-
2662
2214
- 1
- 1
- {0}
- 0
- End value of numeric domain
- 11482385-4d54-4b89-9af0-40fea82601fd
- Domain end
- Domain end
- false
- 33012ff9-30c1-4d12-9636-3332639b69c7
- 1
-
2628
2224
65
20
-
2662
2234
- 1
- 1
- {0}
- 1
- Numeric domain between {A} and {B}
- c2e3ed25-7bc5-41d4-8d91-64fb92727afb
- Domain
- Domain
- false
- 0
-
2723
2204
44
40
-
2745
2224
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 3f7559cd-f8eb-4863-be0f-771c48551385
- Number Slider
- Number Slider
- false
- 0
-
2335
2332
256
20
-
2335.004
2332.565
- 3
- 1
- 0
- 16
- 0
- 0
- 1.523
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 4e4e4d5e-77d8-4f77-9214-00afbe9031a0
- Number Slider
- Number Slider
- false
- 0
-
2332
2240
256
20
-
2332.915
2240.862
- 3
- 1
- 0
- 100
- 0
- 0
- 0
- c552a431-af5b-46a9-a8a4-0fcbc27ef596
- Group
- 1
-
255;255;255;255
- A group of Grasshopper objects
- ea7761dd-655e-4acc-8f08-7e9de359b17b
- 3fe23929-c54b-4d69-8906-060ddf419ffb
- 128af242-c5d6-4c33-9c40-346db3a83c21
- b6fa66bc-8f51-4fd9-8900-73bd82d43231
- 099ea0a7-4500-425d-af87-263944178b1a
- 5b608709-26d9-4260-a2d0-d87f9b17f070
- 415240eb-c8ac-4c48-b1e7-d3a9fca14a2d
- 3f7559cd-f8eb-4863-be0f-771c48551385
- 4e4e4d5e-77d8-4f77-9214-00afbe9031a0
- 3f621e53-c84c-4cd8-9769-b0fc97b7f070
- b4cc584f-7b40-4647-89e7-8b7f5680c28d
- 7e8d883b-2637-4556-8b0c-a4dd67804f95
- 1159ebe2-0417-4b81-8df3-428aed44a53f
- 18011aa7-9bd0-4594-8ecd-100d2cc17275
- 4dacb4e3-e780-4884-9caf-85921383b97a
- 15
- 697acc61-d5aa-4fd7-9449-e439a05879c5
- Group
- 33bcf975-a0b2-4b54-99fd-585c893b9e88
- Digit Scroller
- Numeric scroller for single numbers
- 3f621e53-c84c-4cd8-9769-b0fc97b7f070
- Digit Scroller
- Digit Scroller
- false
- 0
- 12
- Digit Scroller
- 9
- 0.018
-
3233
2381
250
20
-
3233.42
2381.084
- 5a41528b-12b9-40dc-a3f2-842034d267c4
- Text Tag 3D
- Represents a list of 3D text tags in a Rhino viewport
- true
- 1159ebe2-0417-4b81-8df3-428aed44a53f
- Text Tag 3D
- Text Tag 3D
-
3582
2304
92
104
-
3660
2356
- Location and orientation of text tag
- true
- 7f153151-4e27-4b7f-ae73-4bebdd148e92
- Location
- Location
- false
- a2e949e5-7faa-40b6-b24e-f5e40fe331ad
- 1
-
3584
2306
61
20
-
3616
2316
- The text to display
- 1c9b22aa-1533-4c50-bcbd-8e13ee18b30e
- Text
- Text
- true
- 0
-
3584
2326
61
20
-
3616
2336
- 1
- 1
- {0}
- false
- 1/2*X^2+1/6*X^3+1/24*X^4+1/120*X^5+1/720*X^6+1/5040*X^7+1/40320*X^8++1/322560*X^9
- Size of text
- 6aca2fa8-0ab4-4403-b7ed-9a64ef625ed8
- Size
- Size
- false
- 3f621e53-c84c-4cd8-9769-b0fc97b7f070
- 1
-
3584
2346
61
20
-
3616
2356
- 1
- 1
- {0}
- 1
- Optional colour of tag
- aa7c0ab5-9993-49d0-8108-b793645c6db7
- Colour
- Colour
- true
- 0
-
3584
2366
61
20
-
3616
2376
- 1
- 1
- {0}
-
255;212;212;212
- Text justification
- cb1cdcf2-4788-47a0-bc2e-83302f713edc
- Justification
- Justification
- false
- 0
-
3584
2386
61
20
-
3616
2396
- 1
- 1
- {0}
- 8
- c048ad76-ffcd-43b1-a007-4dd1b2373326
- Horizontal Frame
- Get a horizontally aligned frame along a curve at a specified parameter.
- 18011aa7-9bd0-4594-8ecd-100d2cc17275
- Horizontal Frame
- Horizontal Frame
-
3436
2314
125
44
-
3506
2336
- Curve to evaluate
- 81a5bd15-3a5a-4dc4-9650-33e88f1d33b3
- Curve
- Curve
- false
- 89e2ec6c-a9fa-4ef6-a9f0-3e7b66a23ba8
- 1
-
3438
2316
53
20
-
3466
2326
- Parameter on curve domain to evaluate
- 34176a8a-27b4-4406-b953-94c8889264a8
- Parameter
- Parameter
- false
- 4dacb4e3-e780-4884-9caf-85921383b97a
- 1
-
3438
2336
53
20
-
3466
2346
- Horizontal curve frame at {t}
- a2e949e5-7faa-40b6-b24e-f5e40fe331ad
- Frame
- Frame
- false
- 0
-
3521
2316
38
40
-
3540
2336
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 4dacb4e3-e780-4884-9caf-85921383b97a
- Number Slider
- Number Slider
- false
- 0
-
3223
2340
198
20
-
3223.686
2340.154
- 6
- 1
- 0
- 255
- 0
- 0
- 63
- 11bbd48b-bb0a-4f1b-8167-fa297590390d
- End Points
- Extract the end points of a curve.
- 0231c638-75e9-4782-a081-934beba9e3dc
- End Points
- End Points
-
3012
2700
99
44
-
3062
2722
- Curve to evaluate
- b5a228d2-e3cc-48ef-83a2-c1234d10225d
- Curve
- Curve
- false
- 89e2ec6c-a9fa-4ef6-a9f0-3e7b66a23ba8
- 1
-
3014
2702
33
40
-
3032
2722
- Curve start point
- 1ad04470-0f1b-4c92-bd76-252ab82becc0
- Start
- Start
- false
- 0
-
3077
2702
32
20
-
3093
2712
- Curve end point
- a1868f5f-c467-4273-8b35-97754bd537b4
- End
- End
- false
- 0
-
3077
2722
32
20
-
3093
2732
- b7798b74-037e-4f0c-8ac7-dc1043d093e0
- Rotate
- Rotate an object in a plane.
- ec01ab63-57bc-42d1-9d29-da092d8c7a28
- Rotate
- Rotate
-
3094
2832
141
64
-
3162
2864
- Base geometry
- c408dc85-3093-4216-a153-cdbdc6176bf0
- Geometry
- Geometry
- true
- 89e2ec6c-a9fa-4ef6-a9f0-3e7b66a23ba8
- 1
-
3096
2834
51
20
-
3123
2844
- Rotation angle in radians
- ecbb7491-44b2-4029-afde-4f6996b13d11
- Angle
- Angle
- false
- 0
- false
-
3096
2854
51
20
-
3123
2864
- 1
- 1
- {0}
- 3.1415926535897931
- Rotation plane
- 1e75cd90-fcef-4ea2-b1a2-25e9be7dbc3a
- Plane
- Plane
- false
- a1868f5f-c467-4273-8b35-97754bd537b4
- 1
-
3096
2874
51
20
-
3123
2884
- 1
- 1
- {0}
-
0
0
0
1
0
0
0
1
0
- Rotated geometry
- da6506c6-d2b3-4a8f-8217-00f0397ade8a
- Geometry
- Geometry
- false
- 0
-
3177
2834
56
30
-
3205
2849
- Transformation data
- f05340df-23c3-45f2-9d48-4cd2112d4d3a
- Transform
- Transform
- false
- 0
-
3177
2864
56
30
-
3205
2879
- 8073a420-6bec-49e3-9b18-367f6fd76ac3
- Join Curves
- Join as many curves as possible
- bad947e7-fcf0-4a5d-8bce-5e359b9fa391
- Join Curves
- Join Curves
-
3265
2962
121
44
-
3328
2984
- 1
- Curves to join
- 777156cd-0b69-409f-a453-5a71c55a78ab
- Curves
- Curves
- false
- 89e2ec6c-a9fa-4ef6-a9f0-3e7b66a23ba8
- da6506c6-d2b3-4a8f-8217-00f0397ade8a
- 2
-
3267
2964
46
20
-
3291.5
2974
- Preserve direction of input curves
- 6f8750db-b2af-47ad-a407-b3a5a7222345
- Preserve
- Preserve
- false
- 0
-
3267
2984
46
20
-
3291.5
2994
- 1
- 1
- {0}
- false
- 1
- Joined curves and individual curves that could not be joined.
- 4c0f4aae-e837-4b93-9746-6bb14388d5fe
- Curves
- Curves
- false
- 0
-
3343
2964
41
40
-
3363.5
2984
- 4c619bc9-39fd-4717-82a6-1e07ea237bbe
- Line SDL
- Create a line segment defined by start point, tangent and length.}
- 7f55bfc0-1cbf-49f8-980b-7423f1acc1ed
- Line SDL
- Line SDL
-
3240
2740
109
64
-
3304
2772
- Line start point
- 4ffd5612-ea77-4a6c-9745-1b4f374bce7c
- Start
- Start
- false
- 0
-
3242
2742
47
20
-
3267
2752
- 1
- 1
- {0}
-
0
0
0
- Line tangent (direction)
- 79419927-b4e7-4123-b879-82cdd56c2d84
- Direction
- Direction
- false
- 0
-
3242
2762
47
20
-
3267
2772
- 1
- 1
- {0}
-
1
1
0
- Line length
- d77c21a2-c64e-4606-a221-85da588dd1d6
- Length
- Length
- false
- 1aae2506-52a6-4835-a014-88f8cfb466a9
- 1
-
3242
2782
47
20
-
3267
2792
- 1
- 1
- {0}
- 2
- Line segment
- e252c987-a930-489b-8b9e-4a53418965fd
- Line
- Line
- false
- 0
-
3319
2742
28
60
-
3333
2772
- 84627490-0fb2-4498-8138-ad134ee4cb36
- Curve | Curve
- Solve intersection events for two curves.
- 2227dacf-5c5b-4f33-8527-f1ae4c3bc9bb
- Curve | Curve
- Curve | Curve
-
3381
2650
133
64
-
3442
2682
- First curve
- b86b7594-574f-40a7-87fe-4a477db10920
- Curve A
- Curve A
- false
- 89e2ec6c-a9fa-4ef6-a9f0-3e7b66a23ba8
- 1
-
3383
2652
44
30
-
3406.5
2667
- Second curve
- f7929fc5-8e1a-45bd-a65c-0fadffc3e0e7
- Curve B
- Curve B
- false
- e252c987-a930-489b-8b9e-4a53418965fd
- 1
-
3383
2682
44
30
-
3406.5
2697
- 1
- Intersection events
- 707f39c5-cce2-44d2-be1c-1565337e99aa
- Points
- Points
- false
- 0
-
3457
2652
55
20
-
3484.5
2662
- 1
- Parameters on first curve
- f31778a9-5713-4aa1-8044-e57a01d766d5
- Params A
- Params A
- false
- 0
-
3457
2672
55
20
-
3484.5
2682
- 1
- Parameters on second curve
- f9f1dd6b-c996-49bc-97d7-c4395c6986a3
- Params B
- Params B
- false
- 0
-
3457
2692
55
20
-
3484.5
2702
- 59daf374-bc21-4a5e-8282-5504fb7ae9ae
- List Item
- 0
- Retrieve a specific item from a list.
- 300ddc9e-2f43-4e1d-9ad6-96a1769464a7
- List Item
- List Item
-
3464
2808
77
64
-
3512
2840
- 3
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 2e3ab970-8545-46bb-836c-1c11e5610bce
- cb95db89-6165-43b6-9c41-5702bc5bf137
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 1
- Base list
- 3bc69290-2fb4-4f4a-8473-2266c45da205
- List
- List
- false
- 707f39c5-cce2-44d2-be1c-1565337e99aa
- 1
-
3466
2810
31
20
-
3483
2820
- Item index
- bfc8dc68-7e76-452e-b905-5f46e1aec63d
- Index
- Index
- false
- 0
-
3466
2830
31
20
-
3483
2840
- 1
- 1
- {0}
- 1
- Wrap index to list bounds
- 30e431a7-4628-4d42-b58f-69198b48b24a
- Wrap
- Wrap
- false
- 0
-
3466
2850
31
20
-
3483
2860
- 1
- 1
- {0}
- true
- Item at {i'}
- 5394ccd1-0666-4873-bd3d-f1edbf1ea26b
- false
- Item
- i
- false
- 0
-
3527
2810
12
60
-
3533
2840
- 65283518-ad00-49d3-87fb-f76823ebb162
- Data Dam
- 10000000
- 0
- Delay data on its way through the document
- true
- 2
- b3e2853d-6b13-4f01-9d5e-a2eaea483d57
- Data Dam
- Data Dam
-
3586
2822
123
36
-
3630
2824
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 2
- Data to buffer
- 3cf26102-6c7c-4702-9bda-98dc6fe8a741
- Data Data A
- Data A
- true
- 5394ccd1-0666-4873-bd3d-f1edbf1ea26b
- 1
-
3588
2824
39
32
-
3609
2840
- 2
- Buffered data
- 3c27992c-b50b-4607-b659-16dbcf7f6564
- false
- Data Data A
- Data A
- false
- 0
-
3665
2824
42
32
-
3686
2840
- 65283518-ad00-49d3-87fb-f76823ebb162
- Data Dam
- 10000000
- 0
- Delay data on its way through the document
- true
- 2
- 947994a4-1bcb-481c-a0e9-65b9b5d3dec0
- Data Dam
- Data Dam
-
3739
2822
123
36
-
3783
2824
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 2
- Data to buffer
- 7b3d0145-0d4a-4ca2-88c3-7692e4b830d0
- Data Data A
- Data A
- true
- 3c27992c-b50b-4607-b659-16dbcf7f6564
- 1
-
3741
2824
39
32
-
3762
2840
- 2
- Buffered data
- d9ec35cc-1baa-412a-8822-cb7e558e8883
- false
- Data Data A
- Data A
- false
- 0
-
3818
2824
42
32
-
3839
2840
- 9abae6b7-fa1d-448c-9209-4a8155345841
- Deconstruct
- Deconstruct a point into its component parts.
- 96ff3ff1-df8e-4bb9-822e-d450879ca889
- Deconstruct
- Deconstruct
-
2464
2090
135
64
-
2511
2122
- Input point
- 37833088-5b0a-494a-bad5-3812d584b30b
- Point
- Point
- false
- d9ec35cc-1baa-412a-8822-cb7e558e8883
- 1
-
2466
2092
30
60
-
2482.5
2122
- Point {x} component
- 7e7cd057-603d-465c-84b1-68429a049196
- X component
- X component
- false
- 0
-
2526
2092
71
20
-
2561.5
2102
- Point {y} component
- c9a930c1-c774-454f-a55a-d893de8f7b4d
- Y component
- Y component
- false
- 0
-
2526
2112
71
20
-
2561.5
2122
- Point {z} component
- e0775a27-b566-48c1-b7f2-b3231fb1c85a
- Z component
- Z component
- false
- 0
-
2526
2132
71
20
-
2561.5
2142
- 11bbd48b-bb0a-4f1b-8167-fa297590390d
- End Points
- Extract the end points of a curve.
- 5bf0574b-1ffd-4fed-93cb-86d416a3a1e7
- End Points
- End Points
-
3285
2860
99
44
-
3335
2882
- Curve to evaluate
- b0d6b75b-e8b0-405b-86eb-fb604d4fc026
- Curve
- Curve
- false
- da6506c6-d2b3-4a8f-8217-00f0397ade8a
- 1
-
3287
2862
33
40
-
3305
2882
- Curve start point
- 73545423-70e5-4c34-9d68-07e279755946
- Start
- Start
- false
- 0
-
3350
2862
32
20
-
3366
2872
- Curve end point
- 5935cb55-8461-4851-96e1-3921ba19e5b3
- End
- End
- false
- 0
-
3350
2882
32
20
-
3366
2892
- 4c619bc9-39fd-4717-82a6-1e07ea237bbe
- Line SDL
- Create a line segment defined by start point, tangent and length.}
- 2c9883b0-4204-432e-b3ce-92fb97d78f45
- Line SDL
- Line SDL
-
3485
2940
109
64
-
3549
2972
- Line start point
- 2f48ec07-a97a-498b-a856-84da307bad3b
- Start
- Start
- false
- 73545423-70e5-4c34-9d68-07e279755946
- 1
-
3487
2942
47
20
-
3512
2952
- Line tangent (direction)
- 702b7b0e-47fe-4a55-a652-1a3a9c1a2886
- Direction
- Direction
- false
- 0
-
3487
2962
47
20
-
3512
2972
- 1
- 1
- {0}
-
-0.4375
0
0
- Line length
- 96b90466-80cb-473d-9b5d-c219ccc5c6cd
- Length
- Length
- false
- 0
-
3487
2982
47
20
-
3512
2992
- 1
- 1
- {0}
- 1
- Line segment
- 1d3dad9d-0d15-4d2b-bf0e-978dd2944097
- Line
- Line
- false
- 0
-
3564
2942
28
60
-
3578
2972
- f12daa2f-4fd5-48c1-8ac3-5dea476912ca
- Mirror
- Mirror an object.
- 0999ace9-690f-4923-944f-f86c4178e380
- Mirror
- Mirror
-
3547
2884
141
44
-
3615
2906
- Base geometry
- 8c043b89-e60e-467d-98a1-5ac7ce4902d1
- Geometry
- Geometry
- true
- 4c0f4aae-e837-4b93-9746-6bb14388d5fe
- 1
-
3549
2886
51
20
-
3576
2896
- Mirror plane
- 5abafdd4-f079-4710-9ec8-8d8fe577fcdf
- Plane
- Plane
- false
- 1d3dad9d-0d15-4d2b-bf0e-978dd2944097
- 1
-
3549
2906
51
20
-
3576
2916
- 1
- 1
- {0}
-
0
0
0
0
1
0
0
0
1
- Mirrored geometry
- 71cb2f9f-c658-4161-a0bd-26275e365b65
- Geometry
- Geometry
- false
- 0
-
3630
2886
56
20
-
3658
2896
- Transformation data
- 99e0028c-f1fc-4d1c-86a0-14a8e39d77a0
- Transform
- Transform
- false
- 0
-
3630
2906
56
20
-
3658
2916
- 11bbd48b-bb0a-4f1b-8167-fa297590390d
- End Points
- Extract the end points of a curve.
- 4bfe62c3-5659-4b07-985b-4eec6a799fc2
- End Points
- End Points
-
3777
2879
99
44
-
3827
2901
- Curve to evaluate
- bd647c18-0bd5-408e-90f3-8ea0f4918e3d
- Curve
- Curve
- false
- 9714ff9c-33a4-4aa2-ac3d-47d31d846153
- 1
-
3779
2881
33
40
-
3797
2901
- Curve start point
- 8a150b4a-a3d0-49e6-adfa-283ec49d5ba6
- Start
- Start
- false
- 0
-
3842
2881
32
20
-
3858
2891
- Curve end point
- 39efff96-4789-4a4c-b9d7-6ecccde730c7
- End
- End
- false
- 0
-
3842
2901
32
20
-
3858
2911
- 8073a420-6bec-49e3-9b18-367f6fd76ac3
- Join Curves
- Join as many curves as possible
- f32c2aa3-eb6d-48dc-b2aa-d70c6b03ba21
- Join Curves
- Join Curves
-
3673
2944
121
44
-
3736
2966
- 1
- Curves to join
- 7b4f5fbe-a75d-41fa-aad3-1ac5d8f0f806
- Curves
- Curves
- false
- 71cb2f9f-c658-4161-a0bd-26275e365b65
- 4c0f4aae-e837-4b93-9746-6bb14388d5fe
- 2
-
3675
2946
46
20
-
3699.5
2956
- Preserve direction of input curves
- b0524256-55ef-41fa-afe7-aec4b4fb7837
- Preserve
- Preserve
- false
- 0
-
3675
2966
46
20
-
3699.5
2976
- 1
- 1
- {0}
- false
- 1
- Joined curves and individual curves that could not be joined.
- 9714ff9c-33a4-4aa2-ac3d-47d31d846153
- Curves
- Curves
- false
- 0
-
3751
2946
41
40
-
3771.5
2966
- e9eb1dcf-92f6-4d4d-84ae-96222d60f56b
- Move
- Translate (move) an object along a vector.
- true
- 79005952-0fc6-439d-95d0-8d595224c320
- Move
- Move
-
3879
2933
141
44
-
3947
2955
- Base geometry
- 78a8c78b-70bb-4c03-968f-6c7dddf73cce
- Geometry
- Geometry
- true
- 9714ff9c-33a4-4aa2-ac3d-47d31d846153
- 1
-
3881
2935
51
20
-
3908
2945
- Translation vector
- d16417b4-31c8-4062-ba06-4e95d8abf7b2
- Motion
- Motion
- false
- 8a150b4a-a3d0-49e6-adfa-283ec49d5ba6
- 1
-
3881
2955
51
20
-
3908
2965
- 1
- 1
- {0}
-
0
0
10
- Translated geometry
- 5e676845-b462-4583-8c24-956eaa5518fd
- Geometry
- Geometry
- false
- 0
-
3962
2935
56
20
-
3990
2945
- Transformation data
- a6a42d3f-be63-408e-84ab-042c2b1f2b5e
- Transform
- Transform
- false
- 0
-
3962
2955
56
20
-
3990
2965
- 8073a420-6bec-49e3-9b18-367f6fd76ac3
- Join Curves
- Join as many curves as possible
- bd37c7f4-ed86-4856-8314-82f907959555
- Join Curves
- Join Curves
-
4061
2996
121
44
-
4124
3018
- 1
- Curves to join
- c222c791-02ae-4feb-8332-55eed3efd991
- Curves
- Curves
- false
- 3a8ffb70-c4c4-4d77-ace6-72fdbebbf82b
- 9714ff9c-33a4-4aa2-ac3d-47d31d846153
- 2
-
4063
2998
46
20
-
4087.5
3008
- Preserve direction of input curves
- 09425dce-0231-45e1-84ff-8953a991491c
- Preserve
- Preserve
- false
- 0
-
4063
3018
46
20
-
4087.5
3028
- 1
- 1
- {0}
- false
- 1
- Joined curves and individual curves that could not be joined.
- 4bd48c64-bce6-4170-935e-14cd641fb281
- Curves
- Curves
- false
- 0
-
4139
2998
41
40
-
4159.5
3018
- 11bbd48b-bb0a-4f1b-8167-fa297590390d
- End Points
- Extract the end points of a curve.
- fcad8894-eddc-4cba-bc73-32250c865463
- End Points
- End Points
-
4163
2896
99
44
-
4213
2918
- Curve to evaluate
- 1e135b74-9615-4367-b2f3-c38f6fa2ebed
- Curve
- Curve
- false
- 4bd48c64-bce6-4170-935e-14cd641fb281
- 1
-
4165
2898
33
40
-
4183
2918
- Curve start point
- 04d54b2e-52e3-43c2-b754-9377d35c2ded
- Start
- Start
- false
- 0
-
4228
2898
32
20
-
4244
2908
- Curve end point
- 23f25f50-53a4-4383-bee1-1b4ec8c4a6bc
- End
- End
- false
- 0
-
4228
2918
32
20
-
4244
2928
- 9abae6b7-fa1d-448c-9209-4a8155345841
- Deconstruct
- Deconstruct a point into its component parts.
- b999d9a0-08d5-442d-97a3-cb8f5a273fb6
- Deconstruct
- Deconstruct
-
4645
2789
135
64
-
4692
2821
- Input point
- 4c3a69f6-30d8-452e-a548-8dc28501934b
- Point
- Point
- false
- bd6d5f7d-77c7-457d-a153-f0b0b79693ab
- 1
-
4647
2791
30
60
-
4663.5
2821
- Point {x} component
- 6290d204-9b2b-40d8-b73a-78868c2ac3c8
- X component
- X component
- false
- 0
-
4707
2791
71
20
-
4742.5
2801
- Point {y} component
- f5abf808-fb4d-4bff-b8d3-a7ffd2f5b68d
- Y component
- Y component
- false
- 0
-
4707
2811
71
20
-
4742.5
2821
- Point {z} component
- 3092fbf7-ba00-455a-8a87-9143dcb96cb3
- Z component
- Z component
- false
- 0
-
4707
2831
71
20
-
4742.5
2841
- b6236720-8d88-4289-93c3-ac4c99f9b97b
- Relay
- 2
- A wire relay object
- 2e47c938-1f06-4bde-8191-313499db9349
- Relay
- Relay
- false
- 6290d204-9b2b-40d8-b73a-78868c2ac3c8
- 1
-
1601
2664
44
16
-
1623
2672
- eeafc956-268e-461d-8e73-ee05c6f72c01
- Stream Filter
- Filters a collection of input streams
- 4b41493c-463a-4bc5-8ab9-1e3af602cbbe
- Stream Filter
- Stream Filter
-
5267
3134
92
64
-
5312
3166
- 3
- 2e3ab970-8545-46bb-836c-1c11e5610bce
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- 1
- 8ec86459-bf01-4409-baee-174d0d2b13d0
- Index of Gate stream
- ff11a81d-a9ef-4ac1-bb6c-9cfca8b9e255
- Gate
- Gate
- false
- 914063b3-1049-452e-ad52-acaf81b972d7
- 1
-
5269
3136
28
20
-
5284.5
3146
- 1
- 1
- {0}
- 0
- 2
- Input stream at index 0
- a09768e7-ac55-4ed5-9d43-8464672078a7
- false
- Stream 0
- 0
- true
- 5fb9981e-83a0-4f44-86f1-b9f2a8df2415
- 1
-
5269
3156
28
20
-
5284.5
3166
- 2
- Input stream at index 1
- cfc8aaba-df6f-40f9-b91e-5ffe2486e1ab
- false
- Stream 1
- 1
- true
- e38fdda5-295d-429f-aaff-5bf969699dff
- 1
-
5269
3176
28
20
-
5284.5
3186
- 2
- Filtered stream
- 882400bc-d4cf-428b-bfa4-53f56cbcc266
- false
- Stream
- S(1)
- false
- 0
-
5327
3136
30
60
-
5342
3166
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 914063b3-1049-452e-ad52-acaf81b972d7
- Number Slider
- Number Slider
- false
- 0
-
5122
3071
198
20
-
5122.083
3071.478
- 3
- 1
- 1
- 1
- 0
- 0
- 1
- e9eb1dcf-92f6-4d4d-84ae-96222d60f56b
- Move
- Translate (move) an object along a vector.
- true
- 9453d07e-8b75-4351-8b65-2bbf7e314c8a
- Move
- Move
-
4242
3057
141
44
-
4310
3079
- Base geometry
- d2a5ead8-fe65-4041-8bc0-51c564030d95
- Geometry
- Geometry
- true
- ee2ddca9-3a44-46c5-95f4-76c64d7daac8
- 1
-
4244
3059
51
20
-
4271
3069
- Translation vector
- 4404cb8f-8995-4e16-bf57-a03bc7157437
- Motion
- Motion
- false
- 04d54b2e-52e3-43c2-b754-9377d35c2ded
- 1
-
4244
3079
51
20
-
4271
3089
- 1
- 1
- {0}
-
0
0
10
- Translated geometry
- fa8f60fa-c7e5-4d85-945b-d41068fafcd8
- Geometry
- Geometry
- false
- 0
-
4325
3059
56
20
-
4353
3069
- Transformation data
- 87a91da5-f55e-41d5-8f5d-099af2714854
- Transform
- Transform
- false
- 0
-
4325
3079
56
20
-
4353
3089
- 11bbd48b-bb0a-4f1b-8167-fa297590390d
- End Points
- Extract the end points of a curve.
- c728a4f8-b2fd-4c72-98aa-27864f4b8406
- End Points
- End Points
-
4577
2970
99
44
-
4627
2992
- Curve to evaluate
- f964bc29-07de-4871-aba5-1ac832c92f5e
- Curve
- Curve
- false
- e38fdda5-295d-429f-aaff-5bf969699dff
- 1
-
4579
2972
33
40
-
4597
2992
- Curve start point
- bd6d5f7d-77c7-457d-a153-f0b0b79693ab
- Start
- Start
- false
- 0
-
4642
2972
32
20
-
4658
2982
- Curve end point
- 50df8b2d-6c89-49e6-841c-2eb103da9c3f
- End
- End
- false
- 0
-
4642
2992
32
20
-
4658
3002
- 8073a420-6bec-49e3-9b18-367f6fd76ac3
- Join Curves
- Join as many curves as possible
- 3593af5c-bdb4-4e2a-bf5f-39433bcea6fd
- Join Curves
- Join Curves
-
4419
2943
121
44
-
4482
2965
- 1
- Curves to join
- 0c4b8184-583f-4545-9c4f-5531f334b368
- Curves
- Curves
- false
- 1c0d70ba-3c79-47f9-98a5-cb9c31856c73
- 4bd48c64-bce6-4170-935e-14cd641fb281
- 2
-
4421
2945
46
20
-
4445.5
2955
- Preserve direction of input curves
- 86d04439-8d86-49df-9571-db41d618e42d
- Preserve
- Preserve
- false
- 0
-
4421
2965
46
20
-
4445.5
2975
- 1
- 1
- {0}
- false
- 1
- Joined curves and individual curves that could not be joined.
- e38fdda5-295d-429f-aaff-5bf969699dff
- Curves
- Curves
- false
- 0
-
4497
2945
41
40
-
4517.5
2965
- 57da07bd-ecab-415d-9d86-af36d7073abc
- Number Slider
- Numeric slider for single values
- 1aae2506-52a6-4835-a014-88f8cfb466a9
- Number Slider
- Number Slider
- false
- 0
-
2998
2784
198
20
- 3
- 1
- 1
- 10
- 0
- 0
- 4
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- 33012ff9-30c1-4d12-9636-3332639b69c7
- Panel
- false
- 0
- 0
- 1.2564126401
-
2413
2269
91
40
- 0
- 0
- 0
-
255;255;255;255
- true
- true
- true
- false
- false
- true
- f12daa2f-4fd5-48c1-8ac3-5dea476912ca
- Mirror
- Mirror an object.
- 44b430eb-7d3b-47c4-89ba-5147f179979f
- Mirror
- Mirror
-
4003
2812
141
44
-
4071
2834
- Base geometry
- 8924123c-bcc7-4d6b-812e-e7b12d6c0e68
- Geometry
- Geometry
- true
- 5e676845-b462-4583-8c24-956eaa5518fd
- 1
-
4005
2814
51
20
-
4032
2824
- Mirror plane
- 3b857671-61e5-4f76-b539-921e83340286
- Plane
- Plane
- false
- 7379e2ec-69bb-4919-90a5-86dfe0bc960e
- 1
-
4005
2834
51
20
-
4032
2844
- 1
- 1
- {0}
-
0
0
0
0
1
0
0
0
1
- Mirrored geometry
- 3a8ffb70-c4c4-4d77-ace6-72fdbebbf82b
- Geometry
- Geometry
- false
- 0
-
4086
2814
56
20
-
4114
2824
- Transformation data
- 86e359e2-7903-4e7e-9eca-2014f7c44953
- Transform
- Transform
- false
- 0
-
4086
2834
56
20
-
4114
2844
- 8529dbdf-9b6f-42e9-8e1f-c7a2bde56a70
- Line
- Contains a collection of line segments
- 7379e2ec-69bb-4919-90a5-86dfe0bc960e
- Line
- Line
- false
- 0
-
3909
2884
50
24
-
3934
2896
- 1
- 1
- {0}
-
0
0
0
0
1
0
- f12daa2f-4fd5-48c1-8ac3-5dea476912ca
- Mirror
- Mirror an object.
- true
- 61942aad-c550-4dee-b8b1-da408f8a147e
- Mirror
- Mirror
-
4382
2824
141
44
-
4450
2846
- Base geometry
- dc56aba1-5eed-4c22-b61f-3163879f7ab3
- Geometry
- Geometry
- true
- 4bd48c64-bce6-4170-935e-14cd641fb281
- 1
-
4384
2826
51
20
-
4411
2836
- Mirror plane
- aad2fb9c-08aa-45da-93be-603d03015281
- Plane
- Plane
- false
- e968af5a-43f6-470e-b0c5-544c9df82364
- 1
-
4384
2846
51
20
-
4411
2856
- 1
- 1
- {0}
-
0
0
0
0
1
0
0
0
1
- Mirrored geometry
- ee2ddca9-3a44-46c5-95f4-76c64d7daac8
- Geometry
- Geometry
- false
- 0
-
4465
2826
56
20
-
4493
2836
- Transformation data
- 24de9e46-dbe7-490b-8d8e-d0ce117890e8
- Transform
- Transform
- false
- 0
-
4465
2846
56
20
-
4493
2856
- 8529dbdf-9b6f-42e9-8e1f-c7a2bde56a70
- Line
- Contains a collection of line segments
- e968af5a-43f6-470e-b0c5-544c9df82364
- Line
- Line
- false
- 0
-
4276
2860
50
24
-
4301
2872
- 1
- 1
- {0}
-
0
0
0
1
0
0
- e9eb1dcf-92f6-4d4d-84ae-96222d60f56b
- Move
- Translate (move) an object along a vector.
- 4c26ec9d-4f91-468a-bc58-9c7bf4d7a043
- Move
- Move
-
4429
3063
141
44
-
4497
3085
- Base geometry
- 461733cd-8244-43d7-ad4d-ff16ea8a2e2c
- Geometry
- Geometry
- true
- fa8f60fa-c7e5-4d85-945b-d41068fafcd8
- 1
-
4431
3065
51
20
-
4458
3075
- Translation vector
- 30444de0-7178-44c6-b4ce-a1cb99db5257
- Motion
- Motion
- false
- 04d54b2e-52e3-43c2-b754-9377d35c2ded
- 1
-
4431
3085
51
20
-
4458
3095
- 1
- 1
- {0}
-
0
0
10
- Translated geometry
- 1c0d70ba-3c79-47f9-98a5-cb9c31856c73
- Geometry
- Geometry
- false
- 0
-
4512
3065
56
20
-
4540
3075
- Transformation data
- 7f65432c-2a80-478e-a4be-2ddcf6b3edce
- Transform
- Transform
- false
- 0
-
4512
3085
56
20
-
4540
3095
- 3581f42a-9592-4549-bd6b-1c0fc39d067b
- Construct Point
- Construct a point from {xyz} coordinates.
- true
- dfb148f5-93b8-40ee-a283-aac1bdeffec2
- Construct Point
- Construct Point
-
1719
2396
132
64
-
1801
2428
- {x} coordinate
- f073031b-286a-4b7e-8967-bc173cea92fd
- X coordinate
- X coordinate
- false
- 0
-
1721
2398
65
20
-
1755
2408
- 1
- 1
- {0}
- 0
- {y} coordinate
- d38e5c57-cf99-4f88-b7da-2499dce1d4ac
- Y coordinate
- Y coordinate
- false
- de6684ff-cc29-4ae0-853f-5570ee53910b
- 1
-
1721
2418
65
20
-
1755
2428
- 1
- 1
- {0}
- 0
- {z} coordinate
- dc14faec-3816-48f7-8bec-01b61461e515
- Z coordinate
- Z coordinate
- false
- 0
-
1721
2438
65
20
-
1755
2448
- 1
- 1
- {0}
- 0
- Point coordinate
- 52cef00d-db8e-4b87-8695-4352608b0e17
- Point
- Point
- false
- 0
-
1816
2398
33
60
-
1832.5
2428
- a3371040-e552-4bc8-b0ff-10a840258e88
- Negative
- Compute the negative of a value.
- 11c7c257-c908-4206-9a1d-5059940eed56
- Negative
- Negative
-
1543
2378
103
28
-
1592
2392
- Input value
- d98f3160-63ff-4c9a-8c96-659cb0c79021
- Value
- Value
- false
- 0ab31ee5-a662-42db-a9f0-ca0831013edc
- 1
-
1545
2380
32
24
-
1562.5
2392
- Output value
- 702f8b2a-7fe5-4fe0-95f5-e1e3b7b65a76
- Result
- Result
- false
- 0
-
1607
2380
37
24
-
1625.5
2392
- 9c85271f-89fa-4e9f-9f4a-d75802120ccc
- Division
- Mathematical division
- 17f06759-76ca-440f-9361-122e859fb639
- Division
- Division
-
1580
2425
85
44
-
1611
2447
- Item to divide (dividend)
- 9eb6948a-524d-48d3-931b-70dae41b990b
- A
- A
- false
- 702f8b2a-7fe5-4fe0-95f5-e1e3b7b65a76
- 1
-
1582
2427
14
20
-
1590.5
2437
- Item to divide with (divisor)
- a142ff64-f606-402f-9b39-d1aeba3a8cbb
- B
- B
- false
- 0
-
1582
2447
14
20
-
1590.5
2457
- 1
- 1
- {0}
- Grasshopper.Kernel.Types.GH_Integer
- 8
- The result of the Division
- de6684ff-cc29-4ae0-853f-5570ee53910b
- Result
- Result
- false
- 0
-
1626
2427
37
40
-
1644.5
2447
- 4c619bc9-39fd-4717-82a6-1e07ea237bbe
- Line SDL
- Create a line segment defined by start point, tangent and length.}
- ca01df76-d9f4-4d9e-87c7-b1466531ad49
- Line SDL
- Line SDL
-
148
521
109
64
-
212
553
- Line start point
- 6a012364-bb07-413c-a3d4-824e66511676
- Start
- Start
- false
- 0
-
150
523
47
20
-
175
533
- 1
- 1
- {0}
-
0
0
0
- Line tangent (direction)
- a44ad05a-9bef-4077-9d18-0e598cc797c3
- Direction
- Direction
- false
- 0
-
150
543
47
20
-
175
553
- 1
- 1
- {0}
-
152.8125
0
0
- Line length
- e45a2165-1c64-4e6c-a32a-6969c3895e27
- Length
- Length
- false
- 2e1ddc4d-d964-4b70-b9be-e97ff55297f5
- 1
-
150
563
47
20
-
175
573
- 1
- 1
- {0}
- 1
- Line segment
- d26c6324-f5f8-48f2-a846-d449e0b428d9
- Line
- Line
- false
- 0
-
227
523
28
60
-
241
553
- 33bcf975-a0b2-4b54-99fd-585c893b9e88
- Digit Scroller
- Numeric scroller for single numbers
- 84ab0f98-f3b6-4521-9774-b8c36c371ef2
- Digit Scroller
- Digit Scroller
- false
- 0
- 12
- Digit Scroller
- 11
- 95.0
-
-101
635
250
20
-
-100.2487
635.7837
- f12daa2f-4fd5-48c1-8ac3-5dea476912ca
- Mirror
- Mirror an object.
- 901239b2-1d60-4a9b-ab6f-f731468852a6
- Mirror
- Mirror
-
4916
3586
141
44
-
4984
3608
- Base geometry
- 9ae6b880-a76a-4615-a445-b4e1d3b79f39
- Geometry
- Geometry
- true
- 30ab48f0-9c91-4105-b339-743bf77a2ee0
- 1
-
4918
3588
51
20
-
4945
3598
- Mirror plane
- 8d54c88c-d4a7-437b-814d-7fb5e51f3c2d
- Plane
- Plane
- false
- 5aaf4477-a18c-4185-a3dd-6f9e6561caec
- 1
-
4918
3608
51
20
-
4945
3618
- 1
- 1
- {0}
-
0
0
0
0
1
0
0
0
1
- Mirrored geometry
- d3d6ce8c-75f1-4f3a-a3b1-d149d1d7ed4e
- Geometry
- Geometry
- false
- 0
-
4999
3588
56
20
-
5027
3598
- Transformation data
- 198352fa-5d7a-4795-a8c8-b1b9012a2dd4
- Transform
- Transform
- false
- 0
-
4999
3608
56
20
-
5027
3618
- 8529dbdf-9b6f-42e9-8e1f-c7a2bde56a70
- Line
- Contains a collection of line segments
- 5aaf4477-a18c-4185-a3dd-6f9e6561caec
- Line
- Line
- false
- 0
-
4803
3707
50
24
-
4828.552
3719.425
- 1
- 1
- {0}
-
0
0
0
0
1
0
- 11bbd48b-bb0a-4f1b-8167-fa297590390d
- End Points
- Extract the end points of a curve.
- true
- 80621a5f-7846-4ff7-981b-5872b72656bf
- End Points
- End Points
-
4432
267
99
44
-
4482
289
- Curve to evaluate
- b984a683-6769-414e-9b32-427e80fca078
- Curve
- Curve
- false
- fbac77a5-b15a-4a25-8bf0-69012470613a
- 1
-
4434
269
33
40
-
4452
289
- Curve start point
- 5bbd66c6-f0aa-4f51-b7b6-163f2869cce4
- Start
- Start
- false
- 0
-
4497
269
32
20
-
4513
279
- Curve end point
- 0e7077e5-3137-4f94-9928-79aba3425b59
- End
- End
- false
- 0
-
4497
289
32
20
-
4513
299
- fbac3e32-f100-4292-8692-77240a42fd1a
- Point
- Contains a collection of three-dimensional points
- 648dc240-68d2-4025-a475-8c2773894934
- Point
- Point
- false
- 0e7077e5-3137-4f94-9928-79aba3425b59
- 1
-
4539
287
50
24
-
4564.096
299.7611
- fbac3e32-f100-4292-8692-77240a42fd1a
- Point
- Contains a collection of three-dimensional points
- true
- 10638caf-83c2-49b3-a612-433a2d1cfa62
- Point
- Point
- false
- 5bbd66c6-f0aa-4f51-b7b6-163f2869cce4
- 1
-
4541
252
50
24
-
4566.583
264.9861
- 9abae6b7-fa1d-448c-9209-4a8155345841
- Deconstruct
- Deconstruct a point into its component parts.
- 7d32bbcf-4f64-4002-bdb5-ec26998a4af6
- Deconstruct
- Deconstruct
-
-140
518
135
64
-
-93
550
- Input point
- fcc1c6ca-739e-45f7-bc7e-0a5fafea5768
- Point
- Point
- false
- 648dc240-68d2-4025-a475-8c2773894934
- 1
-
-138
520
30
60
-
-121.5
550
- Point {x} component
- 2e1ddc4d-d964-4b70-b9be-e97ff55297f5
- X component
- X component
- false
- 0
-
-78
520
71
20
-
-42.5
530
- Point {y} component
- ad763f35-9995-4d27-a8de-004b14f42559
- Y component
- Y component
- false
- 0
-
-78
540
71
20
-
-42.5
550
- Point {z} component
- c95bc646-d409-47eb-8f3d-b746faca558e
- Z component
- Z component
- false
- 0
-
-78
560
71
20
-
-42.5
570
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- 18559b17-1184-43fc-a05d-819cfb3bf74a
- Panel
- false
- 0
- ad763f35-9995-4d27-a8de-004b14f42559
- 1
- Double click to edit panel content…
-
8
361
160
100
- 0
- 0
- 0
-
8.196205
361.7971
-
255;255;255;255
- true
- true
- true
- false
- false
- true
- fe502a6c-31bc-4089-821d-05de68d7fe76
- 1c9de8a1-315f-4c56-af06-8f69fee80a7a
- Curve Length At
- Get the length along a curve from its start to a point on the curve (or optionally to a parameter on the curve), if point is not on the curve it will be pulled to it.
- d86c92c6-3d1d-45e9-ac8b-f0d3279ebc9c
- Curve Length At
- Curve Length At
-
4277
578
147
84
-
4351
620
- Curve to get length along
- 96af326e-9b9a-4812-b806-9ce3b51ba258
- Curve
- Curve
- false
- fbac77a5-b15a-4a25-8bf0-69012470613a
- 1
-
4279
580
57
20
-
4309
590
- Point on curve to get length to
- 8cd2172a-83f7-4012-bef0-0b8f79d56915
- Point
- Point
- true
- 414febcf-5e85-4052-bfee-ea0c308e5fcb
- 1
-
4279
600
57
20
-
4309
610
- Optional parameter on curve to get length to instead of a point (will override point if a point is also input)
- 135271a8-e94e-4b00-94e6-c63d826ff2f3
- Parameter
- Parameter
- true
- 0
-
4279
620
57
20
-
4309
630
- If true, the length output is normalized (0.0 - 1.0)
- d3f0c80b-5924-4362-99c5-54149cb770ba
- Normalized
- Normalized
- false
- 0
-
4279
640
57
20
-
4309
650
- 1
- 1
- {0}
- false
- Length along curve from start to the point on curve
- c3191e3e-3b43-49e8-8fff-1036c20f062d
- Length
- Length
- false
- 0
-
4366
580
56
40
-
4394
600
- Curve parameter at the point on curve
- d78242e6-1b00-4543-ac85-c5b17df35335
- Parameter
- Parameter
- false
- 0
-
4366
620
56
40
-
4394
640
- 7f6a9d34-0470-4bb7-aadd-07496bcbe572
- Point On Curve
- Evaluates a curve at a specific location
- true
- 414febcf-5e85-4052-bfee-ea0c308e5fcb
- Point On Curve
- Point On Curve
- false
- fbac77a5-b15a-4a25-8bf0-69012470613a
- 1
- 0.75
-
4148.758
600.8815
80
20
- aaa665bd-fd6e-4ccb-8d2c-c5b33072125d
- Curvature
- Evaluate the curvature of a curve at a specified parameter.
- true
- 6e495898-1370-4e64-81f1-f9c04c8929a1
- Curvature
- Curvature
-
4172
721
140
64
-
4242
753
- Curve to evaluate
- febb5b17-c14e-4b00-8953-5c878804ce17
- Curve
- Curve
- false
- fbac77a5-b15a-4a25-8bf0-69012470613a
- 1
-
4174
723
53
30
-
4202
738
- Parameter on curve domain to evaluate
- 03765f60-bf09-47f2-a2a6-48ae83364f3d
- Parameter
- Parameter
- false
- d78242e6-1b00-4543-ac85-c5b17df35335
- 1
-
4174
753
53
30
-
4202
768
- Point on curve at {t}
- a318edee-e604-4cb8-8dd0-d6eaca4d5387
- Point
- Point
- false
- 0
-
4257
723
53
20
-
4283.5
733
- Curvature vector at {t}
- f21ad287-8e70-4ced-9b51-c0688fb21f3f
- Curvature
- Curvature
- false
- 0
-
4257
743
53
20
-
4283.5
753
- Curvature circle at {t}
- 535b547e-bc0d-4803-994f-2b1e9e060541
- Curvature
- Curvature
- false
- 0
-
4257
763
53
20
-
4283.5
773
- 3c5edcba-b7a5-4710-b076-4b19a7080a2b
- 08bdcae0-d034-48dd-a145-24a9fcf3d3ff
- Center
- Returns the center of a geometry and the Diameter of it's bounding box as the Dimention
You can Right Click on the component's icon and choose "ForAll" option to have center point of a group of geometries.
Besides You can Right click on the component's icon and choose one of three provided options (Spacial/ Planar/ Basement ) to have Desired type of center.
- eb4b472d-51dc-4d51-be82-e03a7afe312c
- Center
- Center
-
4342
786
144
44
-
4412
808
- 1
- Geometric
- eff55d2c-c657-45b7-9c56-71460d85a9fe
- Geometric
- Geometric
- false
- 535b547e-bc0d-4803-994f-2b1e9e060541
- 1
-
4344
788
53
40
-
4372
808
- 1
- Center
- 15866e87-d6c1-43d0-ad6c-75f62109ec4f
- Center
- Center
- false
- 0
-
4427
788
57
20
-
4455.5
798
- 1
- Diagonal size of geometry's bounding box
- e09907c2-3bbe-4aa2-8a27-49eff2b3ca66
- Dimension
- Dimension
- false
- 0
-
4427
808
57
20
-
4455.5
818
- 4c4e56eb-2f04-43f9-95a3-cc46a14f495a
- Line
- Create a line between two points.
- true
- 367de52b-c055-4d79-925f-a82636f869aa
- Line
- Line
-
4335
706
117
44
-
4407
728
- Line start point
- 9108d2aa-9d87-479f-8a02-1a3a51408219
- Start Point
- Start Point
- false
- 414febcf-5e85-4052-bfee-ea0c308e5fcb
- 1
-
4337
708
55
20
-
4366
718
- Line end point
- 9e010292-1b7a-432b-b13d-1e4b7f75fe8b
- End Point
- End Point
- false
- 15866e87-d6c1-43d0-ad6c-75f62109ec4f
- 1
-
4337
728
55
20
-
4366
738
- Line segment
- fcaa5747-85f6-427d-8d91-42e925505556
- Line
- Line
- false
- 0
-
4422
708
28
40
-
4436
728
- 4c619bc9-39fd-4717-82a6-1e07ea237bbe
- Line SDL
- Create a line segment defined by start point, tangent and length.}
- true
- aa36a643-b05a-43cf-9d53-cc42b9dce626
- Line SDL
- Line SDL
-
323
688
109
64
-
387
720
- Line start point
- 7313d66c-23e9-4659-a06d-b8ebff35708a
- Start
- Start
- false
- 414febcf-5e85-4052-bfee-ea0c308e5fcb
- 1
-
325
690
47
20
-
350
700
- Line tangent (direction)
- 795d2ac0-5ce5-4831-a0a7-2553f20d97a6
- Direction
- Direction
- false
- 8b64714b-45a1-4990-9243-da541ef97636
- 1
-
325
710
47
20
-
350
720
- 1
- 1
- {0}
-
0
0
1
- Line length
- 7576a1f9-a82c-4131-8000-d3ca45061886
- Length
- Length
- false
- 5db69753-2684-4734-8bca-97148a032e74
- 1
-
325
730
47
20
-
350
740
- 1
- 1
- {0}
- 1
- Line segment
- df088e5e-d57b-4e0d-b375-7fc383be9eff
- Line
- Line
- false
- 0
-
402
690
28
60
-
416
720
- b7798b74-037e-4f0c-8ac7-dc1043d093e0
- Rotate
- Rotate an object in a plane.
- true
- e02ce106-dd4c-4f5d-bbc9-66da3265906b
- Rotate
- Rotate
-
4549
878
141
64
-
4617
910
- Base geometry
- 68c88a15-594b-444d-b8e9-f83b3240ed83
- Geometry
- Geometry
- true
- fcaa5747-85f6-427d-8d91-42e925505556
- 1
-
4551
880
51
20
-
4578
890
- Rotation angle in radians
- 75dc11fb-38ef-4e88-b4f8-c3cb90f48a96
- Angle
- Angle
- false
- 0
- false
-
4551
900
51
20
-
4578
910
- 1
- 1
- {0}
- -1.5707963267948966
- Rotation plane
- d7c3432c-7319-4ecc-b358-8b44933cddbd
- Plane
- Plane
- false
- 414febcf-5e85-4052-bfee-ea0c308e5fcb
- 1
-
4551
920
51
20
-
4578
930
- 1
- 1
- {0}
-
0
0
0
1
0
0
0
1
0
- Rotated geometry
- 8b64714b-45a1-4990-9243-da541ef97636
- Geometry
- Geometry
- false
- 0
-
4632
880
56
30
-
4660
895
- Transformation data
- 50be7adc-c966-462d-a5d6-d8976ef0c9a2
- Transform
- Transform
- false
- 0
-
4632
910
56
30
-
4660
925
- c75b62fa-0a33-4da7-a5bd-03fd0068fd93
- Length
- Measure the length of a curve.
- c857f498-189c-4fe5-82ac-098207e4592c
- Length
- Length
-
155
770
107
28
-
205
784
- Curve to measure
- f6005822-06de-4bbb-9d2e-733811aaa8d2
- Curve
- Curve
- false
- d26c6324-f5f8-48f2-a846-d449e0b428d9
- 1
-
157
772
33
24
-
175
784
- Curve length
- 870ba227-6d67-490d-8fe1-8c49a991081a
- Length
- Length
- false
- 0
-
220
772
40
24
-
240
784
- 9c85271f-89fa-4e9f-9f4a-d75802120ccc
- Division
- Mathematical division
- 432bc4e4-2199-4e58-a407-5c032f08901c
- Division
- Division
-
234
840
85
44
-
265
862
- Item to divide (dividend)
- 48cea1d4-1eab-4a1d-a049-21c21fa146c6
- A
- A
- false
- 870ba227-6d67-490d-8fe1-8c49a991081a
- 1
-
236
842
14
20
-
244.5
852
- Item to divide with (divisor)
- 803c5f5d-ea6b-4c88-ab52-6b630d97248e
- B
- B
- false
- 0
-
236
862
14
20
-
244.5
872
- 1
- 1
- {0}
- Grasshopper.Kernel.Types.GH_Integer
- 1
- The result of the Division
- 5db69753-2684-4734-8bca-97148a032e74
- Result
- Result
- false
- 0
-
280
842
37
40
-
298.5
862
- b464fccb-50e7-41bd-9789-8438db9bea9f
- Angle
- Compute the angle between two vectors.
- 93cdba74-1d80-4166-97e1-171a12823c52
- Angle
- Angle
-
427
793
118
64
-
491
825
- First vector
- 9fc12fbe-ab5c-48a3-88c8-36d8d34abf0d
- Vector A
- Vector A
- false
- d26c6324-f5f8-48f2-a846-d449e0b428d9
- 1
-
429
795
47
20
-
454
805
- Second vector
- 96050006-7191-4132-bacf-4fa81f9f05a1
- Vector B
- Vector B
- false
- df088e5e-d57b-4e0d-b375-7fc383be9eff
- 1
-
429
815
47
20
-
454
825
- Optional plane for 2D angle
- b615a648-5493-4b20-bc6e-baf78874213f
- Plane
- Plane
- true
- 0
-
429
835
47
20
-
454
845
- Angle (in radians) between vectors
- 75428287-47d8-4972-9646-1f5bf7c6b7ba
- Angle
- Angle
- false
- 0
-
506
795
37
30
-
524.5
810
- Reflex angle (in radians) between vectors
- 1bdba050-74dd-4c58-bf12-a16ac9f5b84a
- Reflex
- Reflex
- false
- 0
-
506
825
37
30
-
524.5
840
- 0d77c51e-584f-44e8-aed2-c2ddf4803888
- Degrees
- Convert an angle specified in radians to degrees
- e36c7092-320d-45f9-b047-d4e8b8fb5e14
- Degrees
- Degrees
-
566
811
123
28
-
625
825
- Angle in radians
- 5ab9bca8-ffff-42b8-b142-6d68af960996
- Radians
- Radians
- false
- 75428287-47d8-4972-9646-1f5bf7c6b7ba
- 1
-
568
813
42
24
-
590.5
825
- Angle in degrees
- 9a4e3cd3-35fb-4872-9101-a1fc14c07f66
- Degrees
- Degrees
- false
- 0
-
640
813
47
24
-
663.5
825
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- bbcb1cb2-de09-4e0e-a732-1f0b4250646c
- Panel
- DEGRE
- false
- 0
- 9a4e3cd3-35fb-4872-9101-a1fc14c07f66
- 1
- Double click to edit panel content…
-
-73
301
122
40
- 0
- 0
- 0
-
-72.63697
301.288
-
255;255;255;255
- false
- false
- true
- false
- false
- true
- Courier New
- 10
- 59e0b89a-e487-49f8-bab8-b5bab16be14c
- Panel
- A panel for custom notes and text values
- f17a46d6-7223-453a-ac09-75c5af284a91
- Panel
- false
- 0
- 0
- 0.001621456725625/1
-
177
342
164
40
- 0
- 0
- 0
-
177.1474
342.723
-
255;255;255;255
- true
- true
- true
- false
- false
- true
- b6236720-8d88-4289-93c3-ac4c99f9b97b
- Relay
- 2
- A wire relay object
- 2b79d86a-c886-48ba-a41d-bd2a6298f66d
- Relay
- Relay
- false
- f17a46d6-7223-453a-ac09-75c5af284a91
- 1
-
340
292
44
16
-
362
300
-
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