OO/◯ᗩIᗝI⚭◯⚪◯⚭IᗝIᗩ◯ⵙ◯ᗩIᗝI⚭◯⚪◯⚭I.../◯✤ᴥᗩ◯ⵙ◯ᗩᴥ✤◯/◯ᗱᗴᴥᗩᗯ✤⏀Ⓞᔓᔕ◯ⵙ◯ᔓᔕⓄ⏀✤ᗯᗩᴥᗱᗴ◯/◯ᗝⵈ◯ⵙ◯ⵈᗝ◯/◯ᔓᔕⓄᴥᗱᗴᑐᑕⓄИNꖴ옷ᴥ◯⚪◯ᴥ옷ꖴИNⓄᑐᑕᗱ.../◯ᴥᗱᗴߦⓄ옷ᔓᔕᗩᴥᕤᕦ◯⚪◯ᕤᕦᴥᗩᔓᔕ옷Ⓞߦᗱᗴ.../XHG.⠀⠀⠀⠀◯⠀ᗩᑐᑕꖴ✤ᔓᔕᗩᙁᗱᗴ⠀◯⠀⠀⠀⠀...

20039 lines
1.1 MiB
Plaintext
Raw Normal View History

2021-10-23 15:36:35 +00:00
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Archive name="Root">
<!--Grasshopper archive-->
<!--Grasshopper and GH_IO.dll are copyrighted by Robert McNeel & Associates-->
<!--Archive generated by GH_IO.dll file utility library {0.2.0002}-->
<items count="1">
<item name="ArchiveVersion" type_name="gh_version" type_code="80">
<Major>0</Major>
<Minor>2</Minor>
<Revision>2</Revision>
</item>
</items>
<chunks count="2">
<chunk name="Definition">
<items count="1">
<item name="plugin_version" type_name="gh_version" type_code="80">
<Major>1</Major>
<Minor>0</Minor>
<Revision>7</Revision>
</item>
</items>
<chunks count="4">
<chunk name="DocumentHeader">
<items count="5">
<item name="DocumentID" type_name="gh_guid" type_code="9">1c961c8b-9745-4a92-a43d-080de1ead765</item>
<item name="Preview" type_name="gh_string" type_code="10">Shaded</item>
<item name="PreviewMeshType" type_name="gh_int32" type_code="3">1</item>
<item name="PreviewNormal" type_name="gh_drawing_color" type_code="36">
<ARGB>100;150;0;0</ARGB>
</item>
<item name="PreviewSelected" type_name="gh_drawing_color" type_code="36">
<ARGB>100;0;150;0</ARGB>
</item>
</items>
</chunk>
<chunk name="DefinitionProperties">
<items count="3">
<item name="Date" type_name="gh_date" type_code="8">635273898765795129</item>
<item name="Description" type_name="gh_string" type_code="10"></item>
<item name="Name" type_name="gh_string" type_code="10">elastica_curve_examples - Copy.ghx</item>
</items>
<chunks count="3">
<chunk name="Revisions">
<items count="1">
<item name="RevisionCount" type_name="gh_int32" type_code="3">0</item>
</items>
</chunk>
<chunk name="Projection">
<items count="2">
<item name="Target" type_name="gh_drawing_point" type_code="30">
<X>-102</X>
<Y>40</Y>
</item>
<item name="Zoom" type_name="gh_single" type_code="5">1</item>
</items>
</chunk>
<chunk name="Views">
<items count="1">
<item name="ViewCount" type_name="gh_int32" type_code="3">0</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="RcpLayout">
<items count="1">
<item name="GroupCount" type_name="gh_int32" type_code="3">0</item>
</items>
</chunk>
<chunk name="DefinitionObjects">
<items count="1">
<item name="ObjectCount" type_name="gh_int32" type_code="3">149</item>
</items>
<chunks count="149">
<chunk name="Object" index="0">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">c552a431-af5b-46a9-a8a4-0fcbc27ef596</item>
<item name="Name" type_name="gh_string" type_code="10">Group</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="24">
<item name="Border" type_name="gh_int32" type_code="3">1</item>
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>150;170;135;255</ARGB>
</item>
<item name="Description" type_name="gh_string" type_code="10">A group of Grasshopper objects</item>
<item name="ID" index="0" type_name="gh_guid" type_code="9">d013dc08-a8cd-4383-aa4a-7e9f0b202f67</item>
<item name="ID" index="1" type_name="gh_guid" type_code="9">19d4e5e6-a3fb-4e4d-b426-93c0b41f974c</item>
<item name="ID" index="2" type_name="gh_guid" type_code="9">ce2f14ec-483c-4899-a8cb-784a62168957</item>
<item name="ID" index="3" type_name="gh_guid" type_code="9">b2a67d0f-c66e-46a9-8efd-f7442d233d5d</item>
<item name="ID" index="4" type_name="gh_guid" type_code="9">32bb1a9f-9575-4b8c-8a60-a65a7b9dd15f</item>
<item name="ID" index="5" type_name="gh_guid" type_code="9">98102773-859e-4cf3-83a5-41f68379af66</item>
<item name="ID" index="6" type_name="gh_guid" type_code="9">d68f5884-1ed1-4bd5-ab64-b7040370d59b</item>
<item name="ID" index="7" type_name="gh_guid" type_code="9">8cd6ad76-7f71-4948-8c5e-9a3e2549985f</item>
<item name="ID" index="8" type_name="gh_guid" type_code="9">d53a1087-053a-44d5-b485-68a8b5d09ce4</item>
<item name="ID" index="9" type_name="gh_guid" type_code="9">cc8dfb80-5022-4b13-83c9-a787888900e8</item>
<item name="ID" index="10" type_name="gh_guid" type_code="9">072c5f2f-5efd-4587-8eb9-f4eacb6f59a9</item>
<item name="ID" index="11" type_name="gh_guid" type_code="9">25d0b3b4-fc42-4433-a4bf-e70bfa828143</item>
<item name="ID" index="12" type_name="gh_guid" type_code="9">5137ef09-783f-4981-a9ec-aa4f2fc8e019</item>
<item name="ID" index="13" type_name="gh_guid" type_code="9">225afdb2-480f-435b-a1cb-84170b3afd2f</item>
<item name="ID" index="14" type_name="gh_guid" type_code="9">20228f31-e357-4d65-8747-46e12348391c</item>
<item name="ID" index="15" type_name="gh_guid" type_code="9">7c2a1ac2-4916-4aa3-9b0a-566a67f36e60</item>
<item name="ID" index="16" type_name="gh_guid" type_code="9">95f9fd7f-37dc-4bd8-8105-7301ef052bdd</item>
<item name="ID_Count" type_name="gh_int32" type_code="3">17</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">07a70634-4e1a-4226-b5d3-17b0a4e0f460</item>
<item name="Name" type_name="gh_string" type_code="10">Group</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
</items>
<chunks count="1">
<chunk name="Attributes" />
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="1">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">079bd9bd-54a0-41d4-98af-db999015f63d</item>
<item name="Name" type_name="gh_string" type_code="10">VB Script</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="10">
<item name="AdditionalSource" type_name="gh_string" type_code="10"> 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 &gt; -1 Then
Return Component.Params.Input.ElementAt(i).DataType &gt; 1 ' input parameter DataType of 1 means it's not receiving input (internal or external)
Else
Msg("error", "Input parameter '" &amp; param &amp; "' 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: " &amp; msg)
Case "warning"
Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, msg)
Print("Warning: " &amp; 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 &gt;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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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 &gt;MAXIT)
Dim lower As Double = 0 ' m must be within this range
Dim upper As Double = 1
Dim twoWidths As Boolean = h / L &gt;= Defined.DOUBLE_W_HL_RATIO And h / L &lt; 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &gt; 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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 &lt;= 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &gt; 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 &gt;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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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) &gt;= 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 &amp; 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 &lt;&gt; 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</item>
<item name="Description" type_name="gh_string" type_code="10">A VB.NET scriptable component</item>
<item name="EditorPosition" type_name="gh_drawing_point" type_code="30">
<X>98</X>
<Y>86</Y>
</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">d013dc08-a8cd-4383-aa4a-7e9f0b202f67</item>
<item name="Name" type_name="gh_string" type_code="10">VB Script</item>
<item name="NickName" type_name="gh_string" type_code="10">VB</item>
<item name="OutParameter" type_name="gh_bool" type_code="1">true</item>
<item name="ReferenceCount" type_name="gh_int32" type_code="3">0</item>
<item name="ScriptSource" type_name="gh_string" type_code="10"> ' -----------------------------------------------------------------
' 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 &lt; 10), you might have to increase the constant ROUNDTO at the bottom
'
' REFERENCES:
' {1} "The elastic rod" by M.E. Pacheco Q. &amp; 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 &gt; 0
' Wid - Width between the endpoints of the curve [note: if PtB is specified in addition, and distance between PtA and PtB &lt;&gt; 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 &amp; 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 &amp; 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 &amp; Bernoulli (the O.G.'s)
'
' -----------------------------------------------------------------
Dim ignoreSelfIntersecting As Boolean = False ' set to True if you don't want to output curves where width &lt; 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) &lt;&gt; 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) &lt;&gt; 0 Then
Msg("error", "Point B is not on the base plane")
Return
End If
AtoB = New Line(PtA, PtB)
If AtoB.Length &lt;&gt; 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 &lt; 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 &gt; 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 &lt;= 0 Then
Msg("error", "Length cannot be negative or zero")
Return
End If
If IsSet("Wid") Then ' find height &amp; angle based on length and specified width
If Wid &gt; 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 &amp; angle based on length and calculated width (distance between PtA and PtB)
If width &gt; 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 &amp; angle based on length and height ** possible to return 2 results **
If Math.Abs(Ht / Len) &gt; Defined.MAX_HL_RATIO Then
Msg("error", "Height not possible with given length")
Return
End If
If Ht &lt; 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 &amp; 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 &amp; height based on length and angle
If Ang &lt; 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 &amp; angle based on specified width and height
If Ht &lt; 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 &amp; 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 &lt; 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 &lt; 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 &amp; angle based on calculated width and height
If Ht &lt; 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 &amp; 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 &lt; 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 &lt; 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 &amp; width based on height and angle
If Ht &lt; 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 &lt; 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 &gt; 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 &gt; 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 &lt; 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 &gt;= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve whose width = " &amp; Math.Round(width, 4) &amp; " 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=" &amp; length &amp; ", width=" &amp; width &amp; ", height=" &amp; height &amp; ", angle=" &amp; angle &amp; ", m=" &amp; m_val &amp; ", k=" &amp; Math.Sqrt(m_val) &amp; ", w/L=" &amp; width / length &amp; ", h/L=" &amp; height / length &amp; ", w/h=" &amp; 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 &gt;= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve at these parameters is not guaranteed")
If width &lt; 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=" &amp; length &amp; ", width=" &amp; width &amp; ", height=" &amp; height &amp; ", angle=" &amp; angle &amp; ", m=" &amp; m &amp; ", k=" &amp; Math.Sqrt(m) &amp; ", w/L=" &amp; width / length &amp; ", h/L=" &amp; height / length &amp; ", w/h=" &amp; width / height)
End If
</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>612</X>
<Y>233</Y>
<W>84</W>
<H>184</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>654</X>
<Y>325</Y>
</item>
</items>
</chunk>
<chunk name="ParameterData">
<items count="19">
<item name="InputCount" type_name="gh_int32" type_code="3">9</item>
<item name="InputId" index="0" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="1" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="2" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="3" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="4" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="5" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="6" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="7" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="8" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="OutputCount" type_name="gh_int32" type_code="3">8</item>
<item name="OutputId" index="0" type_name="gh_guid" type_code="9">3ede854e-c753-40eb-84cb-b48008f14fd4</item>
<item name="OutputId" index="1" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="2" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="3" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="4" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="5" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="6" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="7" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
</items>
<chunks count="17">
<chunk name="InputParam" index="0">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable PtA</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">920df659-6d29-453d-9295-577245828ba6</item>
<item name="Name" type_name="gh_string" type_code="10">PtA</item>
<item name="NickName" type_name="gh_string" type_code="10">PtA</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">7451bc70-5fc3-43a3-bb48-ff10952414e7</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">e1937b56-b1da-4c12-8bd8-e34ee81746ef</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>614</X>
<Y>235</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>628</X>
<Y>245</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="1">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable PtB</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">eeb8ccaa-8966-4eab-8949-3eb384a12d84</item>
<item name="Name" type_name="gh_string" type_code="10">PtB</item>
<item name="NickName" type_name="gh_string" type_code="10">PtB</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">d5104343-e872-4369-9a14-a75a852c1a15</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">e1937b56-b1da-4c12-8bd8-e34ee81746ef</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>614</X>
<Y>255</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>628</X>
<Y>265</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="2">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Pln</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ee4f4d3f-f195-437b-88af-35d3a73d66ad</item>
<item name="Name" type_name="gh_string" type_code="10">Pln</item>
<item name="NickName" type_name="gh_string" type_code="10">Pln</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">df7d1e6a-049f-4594-9fb2-7dda33d26e57</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">3897522d-58e9-4d60-b38c-978ddacfedd8</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>614</X>
<Y>275</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>628</X>
<Y>285</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="3">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Len</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">999531d8-8fc7-4421-8afb-076eb4ce3f6e</item>
<item name="Name" type_name="gh_string" type_code="10">Len</item>
<item name="NickName" type_name="gh_string" type_code="10">Len</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">ce2f14ec-483c-4899-a8cb-784a62168957</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>614</X>
<Y>295</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>628</X>
<Y>305</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="4">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Wid</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8aba3acb-d87c-46a0-aef3-179156140406</item>
<item name="Name" type_name="gh_string" type_code="10">Wid</item>
<item name="NickName" type_name="gh_string" type_code="10">Wid</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>614</X>
<Y>315</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>628</X>
<Y>325</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="5">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Ht</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">54082c0a-ad9c-49e6-97c2-34b9d8c0e605</item>
<item name="Name" type_name="gh_string" type_code="10">Ht</item>
<item name="NickName" type_name="gh_string" type_code="10">Ht</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>614</X>
<Y>335</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>628</X>
<Y>345</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="6">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Ang</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">998111e9-4c7d-4b27-88a9-01982081691a</item>
<item name="Name" type_name="gh_string" type_code="10">Ang</item>
<item name="NickName" type_name="gh_string" type_code="10">Ang</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>614</X>
<Y>355</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>628</X>
<Y>365</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="7">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable E</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b0ed1e4b-bad1-4910-9cd3-3178fc1a708a</item>
<item name="Name" type_name="gh_string" type_code="10">E</item>
<item name="NickName" type_name="gh_string" type_code="10">E</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>614</X>
<Y>375</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>628</X>
<Y>385</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="8">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable I</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8058a335-90ef-4152-920c-88e68de69acc</item>
<item name="Name" type_name="gh_string" type_code="10">I</item>
<item name="NickName" type_name="gh_string" type_code="10">I</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>614</X>
<Y>395</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>628</X>
<Y>405</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="0">
<items count="7">
<item name="Access" type_name="gh_int32" type_code="3">1</item>
<item name="Description" type_name="gh_string" type_code="10">Print, Reflect and Error streams</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">17655ef3-6a9d-43b9-a699-bb23d2e2baff</item>
<item name="Name" type_name="gh_string" type_code="10">out</item>
<item name="NickName" type_name="gh_string" type_code="10">out</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>669</X>
<Y>235</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>681.5</X>
<Y>246.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter Pts</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">d4f9a77d-b3a2-46c6-91de-6ce275666f2d</item>
<item name="Name" type_name="gh_string" type_code="10">Pts</item>
<item name="NickName" type_name="gh_string" type_code="10">Pts</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>669</X>
<Y>257</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>681.5</X>
<Y>268.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter Crv</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">1b8d948b-eedb-4c3c-bfba-ceaee74ff110</item>
<item name="Name" type_name="gh_string" type_code="10">Crv</item>
<item name="NickName" type_name="gh_string" type_code="10">Crv</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>669</X>
<Y>280</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>681.5</X>
<Y>291.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="3">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter L</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">0d6fe24b-f96e-4e86-bad3-d29ae034394e</item>
<item name="Name" type_name="gh_string" type_code="10">L</item>
<item name="NickName" type_name="gh_string" type_code="10">L</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>669</X>
<Y>302</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>681.5</X>
<Y>313.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="4">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter W</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">816f49f4-39a6-4705-80c7-e2a924ac1e0c</item>
<item name="Name" type_name="gh_string" type_code="10">W</item>
<item name="NickName" type_name="gh_string" type_code="10">W</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>669</X>
<Y>325</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>681.5</X>
<Y>336.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="5">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter H</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b00909dc-b385-4e3e-a3a8-9e76efdaadeb</item>
<item name="Name" type_name="gh_string" type_code="10">H</item>
<item name="NickName" type_name="gh_string" type_code="10">H</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>669</X>
<Y>347</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>681.5</X>
<Y>358.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="6">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter A</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">9632d9b7-ad5c-4b42-bc41-5bf9a4af0115</item>
<item name="Name" type_name="gh_string" type_code="10">A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>669</X>
<Y>370</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>681.5</X>
<Y>381.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="7">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter F</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">28c91c87-29e8-4bc8-a5ff-18aadc6f0ecd</item>
<item name="Name" type_name="gh_string" type_code="10">F</item>
<item name="NickName" type_name="gh_string" type_code="10">F</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>669</X>
<Y>392</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>681.5</X>
<Y>403.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="2">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">19d4e5e6-a3fb-4e4d-b426-93c0b41f974c</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">width</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>158</X>
<Y>312</Y>
<W>384</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>158.3465</X>
<Y>312.3785</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">400</item>
<item name="Min" type_name="gh_double" type_code="6">-130</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">183.21</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="3">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ce2f14ec-483c-4899-a8cb-784a62168957</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">length</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>158</X>
<Y>285</Y>
<W>385</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>158.0028</X>
<Y>285.5286</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">400</item>
<item name="Min" type_name="gh_double" type_code="6">0</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">300</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="4">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">fbac3e32-f100-4292-8692-77240a42fd1a</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">Contains a collection of three-dimensional points</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b2a67d0f-c66e-46a9-8efd-f7442d233d5d</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">d4f9a77d-b3a2-46c6-91de-6ce275666f2d</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>782</X>
<Y>194</Y>
<W>50</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>807.4574</X>
<Y>206.2478</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="5">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">32bb1a9f-9575-4b8c-8a60-a65a7b9dd15f</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">2296b093-286c-438d-aa59-465d23147f1c</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>855</X>
<Y>408</Y>
<W>105</W>
<H>55</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>855.6731</X>
<Y>408.6088</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="6">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">0d77c51e-584f-44e8-aed2-c2ddf4803888</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Convert an angle specified in radians to degrees</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">98102773-859e-4cf3-83a5-41f68379af66</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
<item name="NickName" type_name="gh_string" type_code="10">Deg</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>754</X>
<Y>421</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>784</X>
<Y>435</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Angle in radians</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f013de98-8461-42d6-94e2-d4f473814c3f</item>
<item name="Name" type_name="gh_string" type_code="10">Radians</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">9632d9b7-ad5c-4b42-bc41-5bf9a4af0115</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>756</X>
<Y>423</Y>
<W>13</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>764</X>
<Y>435</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Angle in degrees</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">2296b093-286c-438d-aa59-465d23147f1c</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
<item name="NickName" type_name="gh_string" type_code="10">D</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>799</X>
<Y>423</Y>
<W>17</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>807.5</X>
<Y>435</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="7">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">3581f42a-9592-4549-bd6b-1c0fc39d067b</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Construct a point from {xyz} coordinates.</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">d68f5884-1ed1-4bd5-ab64-b7040370d59b</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>392</X>
<Y>101</Y>
<W>67</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>423</X>
<Y>133</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{x} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b9e9716b-aaed-4e63-90f0-fd69bffec388</item>
<item name="Name" type_name="gh_string" type_code="10">X coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>394</X>
<Y>103</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>402.5</X>
<Y>113</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{y} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">961e58c0-1cd5-49a0-8fd1-0e419a2c0b34</item>
<item name="Name" type_name="gh_string" type_code="10">Y coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>394</X>
<Y>123</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>402.5</X>
<Y>133</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{z} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">54bdcf81-cd9a-447c-bad3-a55fe7ef5dc1</item>
<item name="Name" type_name="gh_string" type_code="10">Z coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>394</X>
<Y>143</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>402.5</X>
<Y>153</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7451bc70-5fc3-43a3-bb48-ff10952414e7</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>438</X>
<Y>103</Y>
<W>19</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>447.5</X>
<Y>133</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="8">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">3581f42a-9592-4549-bd6b-1c0fc39d067b</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Construct a point from {xyz} coordinates.</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8cd6ad76-7f71-4948-8c5e-9a3e2549985f</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>392</X>
<Y>173</Y>
<W>67</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>423</X>
<Y>205</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{x} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">cc48fd1f-8953-40bd-a5f6-a9a203bcabd4</item>
<item name="Name" type_name="gh_string" type_code="10">X coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">95f9fd7f-37dc-4bd8-8105-7301ef052bdd</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>394</X>
<Y>175</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>402.5</X>
<Y>185</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">80</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{y} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">a1e74152-bea6-4daf-a4cf-bbaa027d9769</item>
<item name="Name" type_name="gh_string" type_code="10">Y coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>394</X>
<Y>195</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>402.5</X>
<Y>205</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{z} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e34fa320-f5a3-4aaf-beaf-4207678e6e88</item>
<item name="Name" type_name="gh_string" type_code="10">Z coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>394</X>
<Y>215</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>402.5</X>
<Y>225</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">d5104343-e872-4369-9a14-a75a852c1a15</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>438</X>
<Y>175</Y>
<W>19</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>447.5</X>
<Y>205</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="9">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">d5967b9f-e8ee-436b-a8ad-29fdcecf32d5</item>
<item name="Name" type_name="gh_string" type_code="10">Curve</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Contains a collection of generic curves</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">d53a1087-053a-44d5-b485-68a8b5d09ce4</item>
<item name="Name" type_name="gh_string" type_code="10">Curve</item>
<item name="NickName" type_name="gh_string" type_code="10">Crv</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">1b8d948b-eedb-4c3c-bfba-ceaee74ff110</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>782</X>
<Y>236</Y>
<W>50</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>807.4463</X>
<Y>248.7776</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="10">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">17b7152b-d30d-4d50-b9ef-c9fe25576fc2</item>
<item name="Name" type_name="gh_string" type_code="10">XY Plane</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">World XY plane.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">cc8dfb80-5022-4b13-83c9-a787888900e8</item>
<item name="Name" type_name="gh_string" type_code="10">XY Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">XY</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>474</X>
<Y>246</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>505</X>
<Y>260</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Origin of plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">36223dd6-39d8-43d1-85f3-16523a2c0069</item>
<item name="Name" type_name="gh_string" type_code="10">Origin</item>
<item name="NickName" type_name="gh_string" type_code="10">O</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>476</X>
<Y>248</Y>
<W>14</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>484.5</X>
<Y>260</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<!--GH_Point only stores data which exists, test the existence of data fields prior to reading.-->
<items count="1">
<item name="Coordinate" type_name="gh_point3d" type_code="51">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">World XY plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">df7d1e6a-049f-4594-9fb2-7dda33d26e57</item>
<item name="Name" type_name="gh_string" type_code="10">Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">P</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>520</X>
<Y>248</Y>
<W>16</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>528</X>
<Y>260</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="11">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">a4cd2751-414d-42ec-8916-476ebf62d7fe</item>
<item name="Name" type_name="gh_string" type_code="10">Radians</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Convert an angle specified in degrees to radians</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">072c5f2f-5efd-4587-8eb9-f4eacb6f59a9</item>
<item name="Name" type_name="gh_string" type_code="10">Radians</item>
<item name="NickName" type_name="gh_string" type_code="10">Rad</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>478</X>
<Y>365</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>509</X>
<Y>379</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Angle in degrees</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7201253d-ef74-40ae-8173-4b941b44547b</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
<item name="NickName" type_name="gh_string" type_code="10">D</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">25d0b3b4-fc42-4433-a4bf-e70bfa828143</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>480</X>
<Y>367</Y>
<W>14</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>488.5</X>
<Y>379</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Angle in radians</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c64ce2fc-64f4-4ffc-abb1-8343f67d6c30</item>
<item name="Name" type_name="gh_string" type_code="10">Radians</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>524</X>
<Y>367</Y>
<W>16</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>532</X>
<Y>379</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="12">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">25d0b3b4-fc42-4433-a4bf-e70bfa828143</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">angle °</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>160</X>
<Y>370</Y>
<W>295</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>160.2554</X>
<Y>370.2197</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">170</item>
<item name="Min" type_name="gh_double" type_code="6">0</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">110.7</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="13">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">c98a6015-7a2f-423c-bc66-bdc505249b45</item>
<item name="Name" type_name="gh_string" type_code="10">Plane 3Pt</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Create a plane through three points.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">78631b64-b599-490f-b493-9d449559b6c0</item>
<item name="Name" type_name="gh_string" type_code="10">Plane 3Pt</item>
<item name="NickName" type_name="gh_string" type_code="10">Pl 3Pt</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-129</X>
<Y>197</Y>
<W>66</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-98</X>
<Y>229</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Origin point</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c03438e8-8e89-47d2-b5c9-ca10c981173e</item>
<item name="Name" type_name="gh_string" type_code="10">Point A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">c318333b-fa9e-426b-b869-991ed69f1b64</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-127</X>
<Y>199</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-118.5</X>
<Y>209</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">X-direction point</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">88046baa-f5c6-4fbc-97be-c88ee826709d</item>
<item name="Name" type_name="gh_string" type_code="10">Point B</item>
<item name="NickName" type_name="gh_string" type_code="10">B</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">5252af42-8b65-437c-a487-5eac1156e2cc</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-127</X>
<Y>219</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-118.5</X>
<Y>229</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Orientation point</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">9ece8cd3-edbb-4986-9f6d-886138f5abd4</item>
<item name="Name" type_name="gh_string" type_code="10">Point C</item>
<item name="NickName" type_name="gh_string" type_code="10">C</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">f4cf1901-0cd0-4475-9dd6-bf34f5ebc6e1</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-127</X>
<Y>239</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-118.5</X>
<Y>249</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Plane definition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">af793683-207b-4276-a8a1-cc931d61589e</item>
<item name="Name" type_name="gh_string" type_code="10">Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">Pl</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-83</X>
<Y>199</Y>
<W>18</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-74</X>
<Y>229</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="14">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">3581f42a-9592-4549-bd6b-1c0fc39d067b</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Construct a point from {xyz} coordinates.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">03b41596-1093-42df-8cb9-728ff4c83a73</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-281</X>
<Y>116</Y>
<W>67</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-250</X>
<Y>148</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{x} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">46b26c29-1295-4a56-90de-e2187690ca0a</item>
<item name="Name" type_name="gh_string" type_code="10">X coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">39c22776-a388-46d7-abe4-caaffd8004f9</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-279</X>
<Y>118</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-270.5</X>
<Y>128</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{y} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">05cdff1f-dab0-4d5c-8b53-f69ce1483ebc</item>
<item name="Name" type_name="gh_string" type_code="10">Y coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">108fecb2-82c4-4ef7-b31a-2d6517c32268</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-279</X>
<Y>138</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-270.5</X>
<Y>148</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{z} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">1cd02656-25ae-4866-8098-c3757e985576</item>
<item name="Name" type_name="gh_string" type_code="10">Z coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">ca67e373-c39e-4d29-980d-1c76d91a2de9</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-279</X>
<Y>158</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-270.5</X>
<Y>168</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c318333b-fa9e-426b-b869-991ed69f1b64</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-235</X>
<Y>118</Y>
<W>19</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-225.5</X>
<Y>148</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="15">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">39c22776-a388-46d7-abe4-caaffd8004f9</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-594</X>
<Y>112</Y>
<W>260</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-593.6757</X>
<Y>112.793</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">50</item>
<item name="Min" type_name="gh_double" type_code="6">-50</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">24.03</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="16">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">108fecb2-82c4-4ef7-b31a-2d6517c32268</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-593</X>
<Y>139</Y>
<W>258</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-592.4278</X>
<Y>139.043</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">50</item>
<item name="Min" type_name="gh_double" type_code="6">-50</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">-17.28</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="17">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ca67e373-c39e-4d29-980d-1c76d91a2de9</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-592</X>
<Y>164</Y>
<W>258</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-591.1778</X>
<Y>164.043</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">50</item>
<item name="Min" type_name="gh_double" type_code="6">-50</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">-9.72</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="18">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">3581f42a-9592-4549-bd6b-1c0fc39d067b</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Construct a point from {xyz} coordinates.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7d81920e-fe3b-4fcc-856a-7444755fcc4a</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-284</X>
<Y>208</Y>
<W>67</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-253</X>
<Y>240</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{x} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">5e590f17-28b6-4fcb-aeb8-acdb345f0c4b</item>
<item name="Name" type_name="gh_string" type_code="10">X coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">abfd65c5-05aa-4b81-a108-6a5355e6816a</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-282</X>
<Y>210</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-273.5</X>
<Y>220</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{y} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7d22d623-e49c-4769-b49e-88c16b2a4f4e</item>
<item name="Name" type_name="gh_string" type_code="10">Y coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">81a1d1b0-c109-4a52-8403-b06d094902c8</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-282</X>
<Y>230</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-273.5</X>
<Y>240</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{z} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">0fafe809-64a8-4448-af4b-21caa924776e</item>
<item name="Name" type_name="gh_string" type_code="10">Z coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">b53d373c-ad33-4aaa-a8de-83a088e127a5</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-282</X>
<Y>250</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-273.5</X>
<Y>260</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">5252af42-8b65-437c-a487-5eac1156e2cc</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-238</X>
<Y>210</Y>
<W>19</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-228.5</X>
<Y>240</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="19">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">abfd65c5-05aa-4b81-a108-6a5355e6816a</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-597</X>
<Y>205</Y>
<W>260</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-596.1757</X>
<Y>205.293</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">50</item>
<item name="Min" type_name="gh_double" type_code="6">-50</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">3.28</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="20">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">81a1d1b0-c109-4a52-8403-b06d094902c8</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-595</X>
<Y>230</Y>
<W>258</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-594.9278</X>
<Y>230.293</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">50</item>
<item name="Min" type_name="gh_double" type_code="6">-50</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">0.25</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="21">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b53d373c-ad33-4aaa-a8de-83a088e127a5</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-594</X>
<Y>256</Y>
<W>258</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-593.6778</X>
<Y>256.543</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">50</item>
<item name="Min" type_name="gh_double" type_code="6">-50</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">18.96</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="22">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">3581f42a-9592-4549-bd6b-1c0fc39d067b</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Construct a point from {xyz} coordinates.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">759d1f2d-c1de-45b6-9548-4d3ad4b27781</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-286</X>
<Y>296</Y>
<W>67</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-255</X>
<Y>328</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{x} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">0ec6b789-6c06-4ce4-a442-c0cdb61b63ea</item>
<item name="Name" type_name="gh_string" type_code="10">X coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">f24c7c6f-3341-48d7-b5dd-11493225c086</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-284</X>
<Y>298</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-275.5</X>
<Y>308</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{y} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">cadc8592-52b0-4c3f-9cd8-6474d8000ca7</item>
<item name="Name" type_name="gh_string" type_code="10">Y coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">2313a88f-2ff0-48dc-b09b-dee536af8862</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-284</X>
<Y>318</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-275.5</X>
<Y>328</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{z} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">003f761f-6321-417a-9a6f-83613eba8698</item>
<item name="Name" type_name="gh_string" type_code="10">Z coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">da887b2c-91f5-4fc7-b9b2-dd3c06bf079f</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-284</X>
<Y>338</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-275.5</X>
<Y>348</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f4cf1901-0cd0-4475-9dd6-bf34f5ebc6e1</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-240</X>
<Y>298</Y>
<W>19</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-230.5</X>
<Y>328</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="23">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f24c7c6f-3341-48d7-b5dd-11493225c086</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-598</X>
<Y>294</Y>
<W>260</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-597.4257</X>
<Y>294.043</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">50</item>
<item name="Min" type_name="gh_double" type_code="6">-50</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">-7.63</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="24">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">2313a88f-2ff0-48dc-b09b-dee536af8862</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-597</X>
<Y>319</Y>
<W>258</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-596.1778</X>
<Y>319.043</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">50</item>
<item name="Min" type_name="gh_double" type_code="6">-50</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">-14.68</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="25">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">da887b2c-91f5-4fc7-b9b2-dd3c06bf079f</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-595</X>
<Y>345</Y>
<W>258</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-594.9278</X>
<Y>345.293</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">50</item>
<item name="Min" type_name="gh_double" type_code="6">-50</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">-6.5</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="26">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">5137ef09-783f-4981-a9ec-aa4f2fc8e019</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">height</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>159</X>
<Y>339</Y>
<W>384</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>159.0849</X>
<Y>339.4185</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">200</item>
<item name="Min" type_name="gh_double" type_code="6">0</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">112.83</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="27">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">225afdb2-480f-435b-a1cb-84170b3afd2f</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">0d6fe24b-f96e-4e86-bad3-d29ae034394e</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>737</X>
<Y>288</Y>
<W>106</W>
<H>38</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>737.476</X>
<Y>288.175</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="28">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">20228f31-e357-4d65-8747-46e12348391c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">816f49f4-39a6-4705-80c7-e2a924ac1e0c</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>856</X>
<Y>313</Y>
<W>105</W>
<H>55</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>856.035</X>
<Y>313.0428</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="29">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7c2a1ac2-4916-4aa3-9b0a-566a67f36e60</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">b00909dc-b385-4e3e-a3a8-9e76efdaadeb</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>736</X>
<Y>348</Y>
<W>108</W>
<H>38</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>736.4249</X>
<Y>348.559</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="30">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">aaa665bd-fd6e-4ccb-8d2c-c5b33072125d</item>
<item name="Name" type_name="gh_string" type_code="10">Curvature</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Evaluate the curvature of a curve at a specified parameter.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">40932656-6c80-4daa-9ad2-8cf8b338fc8d</item>
<item name="Name" type_name="gh_string" type_code="10">Curvature</item>
<item name="NickName" type_name="gh_string" type_code="10">Curvature</item>
</items>
<chunks count="6">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1151</X>
<Y>798</Y>
<W>65</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1182</X>
<Y>830</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Curve to evaluate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ef98c1a5-25c1-49b1-b59b-6afb9264b710</item>
<item name="Name" type_name="gh_string" type_code="10">Curve</item>
<item name="NickName" type_name="gh_string" type_code="10">C</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">12b4fe3c-7f43-444b-be77-19b89104763b</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1153</X>
<Y>800</Y>
<W>14</W>
<H>30</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1161.5</X>
<Y>815</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Parameter on curve domain to evaluate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">bb19201b-82f6-46a3-968e-8457acb1864d</item>
<item name="Name" type_name="gh_string" type_code="10">Parameter</item>
<item name="NickName" type_name="gh_string" type_code="10">t</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">3dad486f-e4dc-4c1a-a3e3-edd2e0fd1459</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1153</X>
<Y>830</Y>
<W>14</W>
<H>30</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1161.5</X>
<Y>845</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point on curve at {t}</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">6666272a-5753-4a2f-bade-d2d52bc5e52d</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">P</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1197</X>
<Y>800</Y>
<W>17</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1205.5</X>
<Y>810</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Curvature vector at {t}</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">aa220db5-3068-4ca2-8821-8b9c90d1979a</item>
<item name="Name" type_name="gh_string" type_code="10">Curvature</item>
<item name="NickName" type_name="gh_string" type_code="10">K</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1197</X>
<Y>820</Y>
<W>17</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1205.5</X>
<Y>830</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Curvature circle at {t}</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">10cf8192-1856-476a-b1e6-4b0f3c70a20b</item>
<item name="Name" type_name="gh_string" type_code="10">Curvature</item>
<item name="NickName" type_name="gh_string" type_code="10">C</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1197</X>
<Y>840</Y>
<W>17</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1205.5</X>
<Y>850</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="31">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">6b021f56-b194-4210-b9a1-6cef3b7d0848</item>
<item name="Name" type_name="gh_string" type_code="10">Evaluate Length</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Evaluate a curve at a certain factor along its length. Length factors can be supplied both in curve units and normalized units. Change the [N] parameter to toggle between the two modes.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7a3bf5ad-d8df-4c78-ab33-33f2a1b8fdd3</item>
<item name="Name" type_name="gh_string" type_code="10">Evaluate Length</item>
<item name="NickName" type_name="gh_string" type_code="10">Eval</item>
</items>
<chunks count="7">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1057</X>
<Y>823</Y>
<W>64</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1088</X>
<Y>855</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Curve to evaluate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">315efe79-3e18-4f12-9a9f-48c3fd619f70</item>
<item name="Name" type_name="gh_string" type_code="10">Curve</item>
<item name="NickName" type_name="gh_string" type_code="10">C</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">12b4fe3c-7f43-444b-be77-19b89104763b</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1059</X>
<Y>825</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1067.5</X>
<Y>835</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Length factor for curve evaluation</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">2bfe1d34-4f3b-4bb0-be9e-0296d2d11a85</item>
<item name="Name" type_name="gh_string" type_code="10">Length</item>
<item name="NickName" type_name="gh_string" type_code="10">L</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">6f2330d2-0e46-4e09-9ac5-7b7d2a1d3954</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1059</X>
<Y>845</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1067.5</X>
<Y>855</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0.5</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">If True, the Length factor is normalized (0.0 ~ 1.0)</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">768df78b-ea9f-4024-8585-81b6a0c10891</item>
<item name="Name" type_name="gh_string" type_code="10">Normalized</item>
<item name="NickName" type_name="gh_string" type_code="10">N</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1059</X>
<Y>865</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1067.5</X>
<Y>875</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="boolean" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point at the specified length</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">d2445ed4-e075-4562-b765-47e17a5185ca</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">P</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1103</X>
<Y>825</Y>
<W>16</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1111</X>
<Y>835</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Tangent vector at the specified length</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">5a606323-3c66-46dd-a374-a92dc7ab1c86</item>
<item name="Name" type_name="gh_string" type_code="10">Tangent</item>
<item name="NickName" type_name="gh_string" type_code="10">T</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1103</X>
<Y>845</Y>
<W>16</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1111</X>
<Y>855</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Curve parameter at the specified length</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">3dad486f-e4dc-4c1a-a3e3-edd2e0fd1459</item>
<item name="Name" type_name="gh_string" type_code="10">Parameter</item>
<item name="NickName" type_name="gh_string" type_code="10">t</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1103</X>
<Y>865</Y>
<W>16</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1111</X>
<Y>875</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="32">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">23862862-049a-40be-b558-2418aacbd916</item>
<item name="Name" type_name="gh_string" type_code="10">Deconstruct Arc</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Retrieve the base plane, radius and angle domain of an arc.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">55c865ff-19b4-4378-9996-badcb44a9589</item>
<item name="Name" type_name="gh_string" type_code="10">Deconstruct Arc</item>
<item name="NickName" type_name="gh_string" type_code="10">DArc</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1267</X>
<Y>847</Y>
<W>65</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1298</X>
<Y>879</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Arc or Circle to deconstruct</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e0a2a9c6-de9b-4ae3-854d-8bf414396827</item>
<item name="Name" type_name="gh_string" type_code="10">Arc</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">10cf8192-1856-476a-b1e6-4b0f3c70a20b</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1269</X>
<Y>849</Y>
<W>14</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1277.5</X>
<Y>879</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Base plane of arc or circle</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">81d935f9-4a1b-49ca-b92c-718561d9b488</item>
<item name="Name" type_name="gh_string" type_code="10">Base Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">B</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1313</X>
<Y>849</Y>
<W>17</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1321.5</X>
<Y>859</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Radius of arc or circle</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">64504e23-6a31-41c8-aef7-9ea0c21e3465</item>
<item name="Name" type_name="gh_string" type_code="10">Radius</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1313</X>
<Y>869</Y>
<W>17</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1321.5</X>
<Y>879</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Angle domain (in radians) of arc</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">3c6d7169-cc80-4199-8fef-ce0a92463c3a</item>
<item name="Name" type_name="gh_string" type_code="10">Angle</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1313</X>
<Y>889</Y>
<W>17</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1321.5</X>
<Y>899</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="33">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">a04f3471-a7fc-4cd9-b101-bb6f71dec549</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">64504e23-6a31-41c8-aef7-9ea0c21e3465</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1377</X>
<Y>830</Y>
<W>96</W>
<H>42</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1377.688</X>
<Y>830.6463</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="34">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">f12daa2f-4fd5-48c1-8ac3-5dea476912ca</item>
<item name="Name" type_name="gh_string" type_code="10">Mirror</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Mirror an object.</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">864b9457-bf65-45dc-a49e-8e972abffb2b</item>
<item name="Name" type_name="gh_string" type_code="10">Mirror</item>
<item name="NickName" type_name="gh_string" type_code="10">Mirror</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1277</X>
<Y>665</Y>
<W>65</W>
<H>44</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1308</X>
<Y>687</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">Base geometry</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ef1ac667-f8c6-4a26-800e-9f64490f8b70</item>
<item name="Name" type_name="gh_string" type_code="10">Geometry</item>
<item name="NickName" type_name="gh_string" type_code="10">G</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">12b4fe3c-7f43-444b-be77-19b89104763b</item>
<item name="Source" index="1" type_name="gh_guid" type_code="9">10cf8192-1856-476a-b1e6-4b0f3c70a20b</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">2</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1279</X>
<Y>667</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1287.5</X>
<Y>677</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Mirror plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">fb82719d-d33e-4bcc-ab84-9035150adc96</item>
<item name="Name" type_name="gh_string" type_code="10">Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">P</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">0654eb92-001e-43e0-b38a-58a5d0d80f8e</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1279</X>
<Y>687</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1287.5</X>
<Y>697</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="plane" type_name="gh_plane" type_code="72">
<Ox>0</Ox>
<Oy>0</Oy>
<Oz>0</Oz>
<Xx>0</Xx>
<Xy>0</Xy>
<Xz>1</Xz>
<Yx>1</Yx>
<Yy>0</Yy>
<Yz>0</Yz>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Mirrored geometry</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">fef45908-0b4b-4554-b56b-334d7b9a07c0</item>
<item name="Name" type_name="gh_string" type_code="10">Geometry</item>
<item name="NickName" type_name="gh_string" type_code="10">G</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1323</X>
<Y>667</Y>
<W>17</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1331.5</X>
<Y>677</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Transformation data</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b1d2e017-d6c1-487a-925f-7e6b3170b50c</item>
<item name="Name" type_name="gh_string" type_code="10">Transform</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1323</X>
<Y>687</Y>
<W>17</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1331.5</X>
<Y>697</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="35">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">9df5e896-552d-4c8c-b9ca-4fc147ffa022</item>
<item name="Name" type_name="gh_string" type_code="10">Expression</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Evaluate an expression</item>
<item name="Expression" type_name="gh_string" type_code="10">x*2</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8a2af1f2-b070-42bc-acff-393a560d94c6</item>
<item name="Name" type_name="gh_string" type_code="10">Expression</item>
<item name="NickName" type_name="gh_string" type_code="10">Expression</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1379</X>
<Y>892</Y>
<W>84</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1419</X>
<Y>906</Y>
</item>
</items>
</chunk>
<chunk name="ParameterData">
<items count="4">
<item name="InputCount" type_name="gh_int32" type_code="3">1</item>
<item name="InputId" index="0" type_name="gh_guid" type_code="9">ba80fd98-91a1-4958-b6a7-a94e40e52bdb</item>
<item name="OutputCount" type_name="gh_int32" type_code="3">1</item>
<item name="OutputId" index="0" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
</items>
<chunks count="2">
<chunk name="InputParam" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Expression variable</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">9378e904-7029-4099-9a7d-0a61740c8db5</item>
<item name="Name" type_name="gh_string" type_code="10">Variable x</item>
<item name="NickName" type_name="gh_string" type_code="10">x</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">64504e23-6a31-41c8-aef7-9ea0c21e3465</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1381</X>
<Y>894</Y>
<W>12</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1388.5</X>
<Y>906</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Result of expression</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ae803c56-82b6-4b49-9bf4-1997a330a545</item>
<item name="Name" type_name="gh_string" type_code="10">Result</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1445</X>
<Y>894</Y>
<W>16</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1453</X>
<Y>906</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="36">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7ff6881c-7677-4071-a632-b6c8ea1ac4d3</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">ae803c56-82b6-4b49-9bf4-1997a330a545</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1489</X>
<Y>887</Y>
<W>96</W>
<H>42</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1489.256</X>
<Y>887.1902</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="37">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">0068d51d-c81e-4187-8df3-5835ab363a73</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">71.7</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>486</X>
<Y>1016</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>486.351</X>
<Y>1016.602</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="38">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">65023053-5666-4c0b-b753-08fe81bad98b</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">0.09</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>51</X>
<Y>1103</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>51.64487</X>
<Y>1103.176</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="39">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b958296d-1f29-45e4-a204-834500f3a2c8</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">0.0055</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>50</X>
<Y>1130</Y>
<W>62</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>50.66486</X>
<Y>1130.595</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="40">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">9df5e896-552d-4c8c-b9ca-4fc147ffa022</item>
<item name="Name" type_name="gh_string" type_code="10">Expression</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Evaluate an expression</item>
<item name="Expression" type_name="gh_string" type_code="10">π*(outer^4-(outer-thick)^4)/32</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c6fb6177-2d5c-4ea6-801e-f1d602a9945f</item>
<item name="Name" type_name="gh_string" type_code="10">Expression</item>
<item name="NickName" type_name="gh_string" type_code="10">Expression</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>197</X>
<Y>1105</Y>
<W>324</W>
<H>44</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>366</X>
<Y>1127</Y>
</item>
</items>
</chunk>
<chunk name="ParameterData">
<items count="5">
<item name="InputCount" type_name="gh_int32" type_code="3">2</item>
<item name="InputId" index="0" type_name="gh_guid" type_code="9">ba80fd98-91a1-4958-b6a7-a94e40e52bdb</item>
<item name="InputId" index="1" type_name="gh_guid" type_code="9">ba80fd98-91a1-4958-b6a7-a94e40e52bdb</item>
<item name="OutputCount" type_name="gh_int32" type_code="3">1</item>
<item name="OutputId" index="0" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
</items>
<chunks count="3">
<chunk name="InputParam" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Expression variable</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">cf3ef3e5-5024-4f5c-a4c6-0baf27546401</item>
<item name="Name" type_name="gh_string" type_code="10">Variable outer</item>
<item name="NickName" type_name="gh_string" type_code="10">outer</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">65023053-5666-4c0b-b753-08fe81bad98b</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>199</X>
<Y>1107</Y>
<W>30</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>215.5</X>
<Y>1117</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Expression variable</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">275aff5f-fca5-430e-bd77-af734dc26d01</item>
<item name="Name" type_name="gh_string" type_code="10">Variable thick</item>
<item name="NickName" type_name="gh_string" type_code="10">thick</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">b958296d-1f29-45e4-a204-834500f3a2c8</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>199</X>
<Y>1127</Y>
<W>30</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>215.5</X>
<Y>1137</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Result of expression</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c29e43b1-f147-4596-9a27-65e202efbf44</item>
<item name="Name" type_name="gh_string" type_code="10">Result</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>503</X>
<Y>1107</Y>
<W>16</W>
<H>40</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>511</X>
<Y>1127</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="41">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">61e14a85-7063-4c93-bec1-f130a2a79f94</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">20b5374e-e220-4840-8424-dcf1b57d3ad2</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>744</X>
<Y>1065</Y>
<W>97</W>
<H>58</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>744.1909</X>
<Y>1065.401</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="42">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">d5967b9f-e8ee-436b-a8ad-29fdcecf32d5</item>
<item name="Name" type_name="gh_string" type_code="10">Curve</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Contains a collection of generic curves</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">9ce607e3-994c-4bda-99e3-6e421454263b</item>
<item name="Name" type_name="gh_string" type_code="10">Curve</item>
<item name="NickName" type_name="gh_string" type_code="10">Crv</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">10cf8192-1856-476a-b1e6-4b0f3c70a20b</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1303</X>
<Y>728</Y>
<W>50</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1328.596</X>
<Y>740.7537</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="43">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="13">
<item name="Bold" type_name="gh_bool" type_code="1">true</item>
<item name="Ca" type_name="gh_drawing_pointf" type_code="31">
<X>147.2881</X>
<Y>1085.861</Y>
</item>
<item name="Cb" type_name="gh_drawing_pointf" type_code="31">
<X>504.9157</X>
<Y>1084.888</Y>
</item>
<item name="Cc" type_name="gh_drawing_pointf" type_code="31">
<X>504.9566</X>
<Y>1099.915</Y>
</item>
<item name="Cd" type_name="gh_drawing_pointf" type_code="31">
<X>147.329</X>
<Y>1100.889</Y>
</item>
<item name="Description" type_name="gh_string" type_code="10">A quick note</item>
<item name="Font" type_name="gh_string" type_code="10">Microsoft Sans Serif</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">a2b3599b-d7ad-4dff-aca4-d6dbc30755af</item>
<item name="Italic" type_name="gh_bool" type_code="1">false</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
<item name="NickName" type_name="gh_string" type_code="10">Scribble</item>
<item name="Size" type_name="gh_single" type_code="5">16</item>
<item name="Text" type_name="gh_string" type_code="10">area moment of inertia for a hollow rod (in m^4)</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>142.2881</X>
<Y>1079.888</Y>
<W>367.6685</W>
<H>26.00085</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>147.2881</X>
<Y>1085.861</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="44">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="13">
<item name="Bold" type_name="gh_bool" type_code="1">true</item>
<item name="Ca" type_name="gh_drawing_pointf" type_code="31">
<X>544.7806</X>
<Y>1376.747</Y>
</item>
<item name="Cb" type_name="gh_drawing_pointf" type_code="31">
<X>735.764</X>
<Y>1376.736</Y>
</item>
<item name="Cc" type_name="gh_drawing_pointf" type_code="31">
<X>735.7651</X>
<Y>1391.763</Y>
</item>
<item name="Cd" type_name="gh_drawing_pointf" type_code="31">
<X>544.7817</X>
<Y>1391.774</Y>
</item>
<item name="Description" type_name="gh_string" type_code="10">A quick note</item>
<item name="Font" type_name="gh_string" type_code="10">Microsoft Sans Serif</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">37f949de-70f1-4437-96b3-797739d591c1</item>
<item name="Italic" type_name="gh_bool" type_code="1">false</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
<item name="NickName" type_name="gh_string" type_code="10">Scribble</item>
<item name="Size" type_name="gh_single" type_code="5">16</item>
<item name="Text" type_name="gh_string" type_code="10">One height, two solutions</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>539.7806</X>
<Y>1371.736</Y>
<W>200.9845</W>
<H>25.03821</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>544.7806</X>
<Y>1376.747</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="45">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">079bd9bd-54a0-41d4-98af-db999015f63d</item>
<item name="Name" type_name="gh_string" type_code="10">VB Script</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="10">
<item name="AdditionalSource" type_name="gh_string" type_code="10"> 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 &gt; -1 Then
Return Component.Params.Input.ElementAt(i).DataType &gt; 1 ' input parameter DataType of 1 means it's not receiving input (internal or external)
Else
Msg("error", "Input parameter '" &amp; param &amp; "' 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: " &amp; msg)
Case "warning"
Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, msg)
Print("Warning: " &amp; 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 &gt;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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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 &gt;MAXIT)
Dim lower As Double = 0 ' m must be within this range
Dim upper As Double = 1
Dim twoWidths As Boolean = h / L &gt;= Defined.DOUBLE_W_HL_RATIO And h / L &lt; 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &gt; 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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 &lt;= 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &gt; 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 &gt;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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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) &gt;= 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 &amp; 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 &lt;&gt; 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</item>
<item name="Description" type_name="gh_string" type_code="10">A VB.NET scriptable component</item>
<item name="EditorPosition" type_name="gh_drawing_point" type_code="30">
<X>98</X>
<Y>86</Y>
</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">34e9c6ff-5f0a-453a-89bb-504c40c19604</item>
<item name="Name" type_name="gh_string" type_code="10">VB Script</item>
<item name="NickName" type_name="gh_string" type_code="10">VB</item>
<item name="OutParameter" type_name="gh_bool" type_code="1">true</item>
<item name="ReferenceCount" type_name="gh_int32" type_code="3">0</item>
<item name="ScriptSource" type_name="gh_string" type_code="10"> ' -----------------------------------------------------------------
' 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 &lt; 10), you might have to increase the constant ROUNDTO at the bottom
'
' REFERENCES:
' {1} "The elastic rod" by M.E. Pacheco Q. &amp; 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 &gt; 0
' Wid - Width between the endpoints of the curve [note: if PtB is specified in addition, and distance between PtA and PtB &lt;&gt; 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 &amp; 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 &amp; 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 &amp; Bernoulli (the O.G.'s)
'
' -----------------------------------------------------------------
Dim ignoreSelfIntersecting As Boolean = False ' set to True if you don't want to output curves where width &lt; 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) &lt;&gt; 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) &lt;&gt; 0 Then
Msg("error", "Point B is not on the base plane")
Return
End If
AtoB = New Line(PtA, PtB)
If AtoB.Length &lt;&gt; 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 &lt; 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 &gt; 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 &lt;= 0 Then
Msg("error", "Length cannot be negative or zero")
Return
End If
If IsSet("Wid") Then ' find height &amp; angle based on length and specified width
If Wid &gt; 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 &amp; angle based on length and calculated width (distance between PtA and PtB)
If width &gt; 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 &amp; angle based on length and height ** possible to return 2 results **
If Math.Abs(Ht / Len) &gt; Defined.MAX_HL_RATIO Then
Msg("error", "Height not possible with given length")
Return
End If
If Ht &lt; 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 &amp; 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 &amp; height based on length and angle
If Ang &lt; 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 &amp; angle based on specified width and height
If Ht &lt; 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 &amp; 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 &lt; 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 &lt; 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 &amp; angle based on calculated width and height
If Ht &lt; 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 &amp; 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 &lt; 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 &lt; 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 &amp; width based on height and angle
If Ht &lt; 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 &lt; 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 &gt; 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 &gt; 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 &lt; 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 &gt;= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve whose width = " &amp; Math.Round(width, 4) &amp; " 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=" &amp; length &amp; ", width=" &amp; width &amp; ", height=" &amp; height &amp; ", angle=" &amp; angle &amp; ", m=" &amp; m_val &amp; ", k=" &amp; Math.Sqrt(m_val) &amp; ", w/L=" &amp; width / length &amp; ", h/L=" &amp; height / length &amp; ", w/h=" &amp; 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 &gt;= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve at these parameters is not guaranteed")
If width &lt; 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=" &amp; length &amp; ", width=" &amp; width &amp; ", height=" &amp; height &amp; ", angle=" &amp; angle &amp; ", m=" &amp; m &amp; ", k=" &amp; Math.Sqrt(m) &amp; ", w/L=" &amp; width / length &amp; ", h/L=" &amp; height / length &amp; ", w/h=" &amp; width / height)
End If
</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>615</X>
<Y>822</Y>
<W>84</W>
<H>184</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>657</X>
<Y>914</Y>
</item>
</items>
</chunk>
<chunk name="ParameterData">
<items count="19">
<item name="InputCount" type_name="gh_int32" type_code="3">9</item>
<item name="InputId" index="0" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="1" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="2" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="3" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="4" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="5" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="6" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="7" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="8" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="OutputCount" type_name="gh_int32" type_code="3">8</item>
<item name="OutputId" index="0" type_name="gh_guid" type_code="9">3ede854e-c753-40eb-84cb-b48008f14fd4</item>
<item name="OutputId" index="1" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="2" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="3" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="4" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="5" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="6" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="7" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
</items>
<chunks count="17">
<chunk name="InputParam" index="0">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable PtA</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e44ef3d7-d80d-4847-b3c9-7145c5d256c7</item>
<item name="Name" type_name="gh_string" type_code="10">PtA</item>
<item name="NickName" type_name="gh_string" type_code="10">PtA</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">544607c8-b250-4465-bd1a-e6ed510b2090</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">e1937b56-b1da-4c12-8bd8-e34ee81746ef</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>617</X>
<Y>824</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>631</X>
<Y>834</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="1">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable PtB</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f3a5f81b-cbeb-43a5-b9d7-95ddf8329091</item>
<item name="Name" type_name="gh_string" type_code="10">PtB</item>
<item name="NickName" type_name="gh_string" type_code="10">PtB</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">e1937b56-b1da-4c12-8bd8-e34ee81746ef</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>617</X>
<Y>844</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>631</X>
<Y>854</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="2">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Pln</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">25fe63c8-a9a1-43dd-ba6c-ff444bb1bd38</item>
<item name="Name" type_name="gh_string" type_code="10">Pln</item>
<item name="NickName" type_name="gh_string" type_code="10">Pln</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">2e367eec-73c9-49fe-931b-de57feb15198</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">3897522d-58e9-4d60-b38c-978ddacfedd8</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>617</X>
<Y>864</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>631</X>
<Y>874</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="3">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Len</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c645a879-0d63-4de2-8207-39e77ea0b36a</item>
<item name="Name" type_name="gh_string" type_code="10">Len</item>
<item name="NickName" type_name="gh_string" type_code="10">Len</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">7e001f0c-1ecd-4198-95f7-0d0278815c2b</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>617</X>
<Y>884</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>631</X>
<Y>894</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="4">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Wid</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">563b27b8-1de0-4076-9540-f1f6287d4585</item>
<item name="Name" type_name="gh_string" type_code="10">Wid</item>
<item name="NickName" type_name="gh_string" type_code="10">Wid</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>617</X>
<Y>904</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>631</X>
<Y>914</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="5">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Ht</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f945874f-3911-45dd-a65b-5931b59aaeda</item>
<item name="Name" type_name="gh_string" type_code="10">Ht</item>
<item name="NickName" type_name="gh_string" type_code="10">Ht</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>617</X>
<Y>924</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>631</X>
<Y>934</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="6">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Ang</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7cbb4f70-f9aa-4f07-bc67-aac4eaace9e1</item>
<item name="Name" type_name="gh_string" type_code="10">Ang</item>
<item name="NickName" type_name="gh_string" type_code="10">Ang</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">b2a8f43d-df9e-4385-bfbe-4e7a54acdc52</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>617</X>
<Y>944</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>631</X>
<Y>954</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="7">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable E</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">757c9fbf-c87a-438c-9240-7ed119111c17</item>
<item name="Name" type_name="gh_string" type_code="10">E</item>
<item name="NickName" type_name="gh_string" type_code="10">E</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">0068d51d-c81e-4187-8df3-5835ab363a73</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>617</X>
<Y>964</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>631</X>
<Y>974</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="8">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable I</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">dfba63c4-6cba-4504-bd15-6d7b03b308e0</item>
<item name="Name" type_name="gh_string" type_code="10">I</item>
<item name="NickName" type_name="gh_string" type_code="10">I</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">c29e43b1-f147-4596-9a27-65e202efbf44</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>617</X>
<Y>984</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>631</X>
<Y>994</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="0">
<items count="7">
<item name="Access" type_name="gh_int32" type_code="3">1</item>
<item name="Description" type_name="gh_string" type_code="10">Print, Reflect and Error streams</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e74891fd-659b-4fdb-833d-cbae9b2064f7</item>
<item name="Name" type_name="gh_string" type_code="10">out</item>
<item name="NickName" type_name="gh_string" type_code="10">out</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>672</X>
<Y>824</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>684.5</X>
<Y>835.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter Pts</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">74a1959d-f66e-4c81-8b36-b26ed2379bb0</item>
<item name="Name" type_name="gh_string" type_code="10">Pts</item>
<item name="NickName" type_name="gh_string" type_code="10">Pts</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>672</X>
<Y>846</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>684.5</X>
<Y>857.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter Crv</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">9cf1549b-e355-4e34-8c66-56776a6693a3</item>
<item name="Name" type_name="gh_string" type_code="10">Crv</item>
<item name="NickName" type_name="gh_string" type_code="10">Crv</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>672</X>
<Y>869</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>684.5</X>
<Y>880.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="3">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter L</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">03e53700-d1d7-480a-9312-c1af517baedd</item>
<item name="Name" type_name="gh_string" type_code="10">L</item>
<item name="NickName" type_name="gh_string" type_code="10">L</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>672</X>
<Y>891</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>684.5</X>
<Y>902.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="4">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter W</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">09f794fe-078e-4e7b-840b-9d52b913b097</item>
<item name="Name" type_name="gh_string" type_code="10">W</item>
<item name="NickName" type_name="gh_string" type_code="10">W</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>672</X>
<Y>914</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>684.5</X>
<Y>925.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="5">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter H</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">2373426a-a151-4361-9f8e-d19fef664dc8</item>
<item name="Name" type_name="gh_string" type_code="10">H</item>
<item name="NickName" type_name="gh_string" type_code="10">H</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>672</X>
<Y>936</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>684.5</X>
<Y>947.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="6">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter A</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">619887fe-9427-4cea-b7fd-0b8e37ad0966</item>
<item name="Name" type_name="gh_string" type_code="10">A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>672</X>
<Y>959</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>684.5</X>
<Y>970.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="7">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter F</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">20b5374e-e220-4840-8424-dcf1b57d3ad2</item>
<item name="Name" type_name="gh_string" type_code="10">F</item>
<item name="NickName" type_name="gh_string" type_code="10">F</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>672</X>
<Y>981</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>684.5</X>
<Y>992.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="46">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7e001f0c-1ecd-4198-95f7-0d0278815c2b</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">length</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>160</X>
<Y>874</Y>
<W>382</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>160.4443</X>
<Y>874.5179</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">400</item>
<item name="Min" type_name="gh_double" type_code="6">0</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">145.76</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="47">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">fbac3e32-f100-4292-8692-77240a42fd1a</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">Contains a collection of three-dimensional points</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">37000574-d15c-4f7d-92d9-b148cb8b434c</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">74a1959d-f66e-4c81-8b36-b26ed2379bb0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>784</X>
<Y>791</Y>
<W>50</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>809.0988</X>
<Y>803.2372</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="48">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">982de226-ec32-4b13-b043-f53881d2e028</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">1487d807-5f9b-4abc-9b8d-effa22608b5d</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>849</X>
<Y>986</Y>
<W>105</W>
<H>55</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>849.9546</X>
<Y>986.3983</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="49">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">0d77c51e-584f-44e8-aed2-c2ddf4803888</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Convert an angle specified in radians to degrees</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f53628df-d187-47f6-8939-9a7cff89ea30</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
<item name="NickName" type_name="gh_string" type_code="10">Deg</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>764</X>
<Y>997</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>794</X>
<Y>1011</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Angle in radians</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">6e9d9246-ea82-40e7-a5c7-6200a0750140</item>
<item name="Name" type_name="gh_string" type_code="10">Radians</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">619887fe-9427-4cea-b7fd-0b8e37ad0966</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>766</X>
<Y>999</Y>
<W>13</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>774</X>
<Y>1011</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Angle in degrees</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">1487d807-5f9b-4abc-9b8d-effa22608b5d</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
<item name="NickName" type_name="gh_string" type_code="10">D</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>809</X>
<Y>999</Y>
<W>17</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>817.5</X>
<Y>1011</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="50">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">3581f42a-9592-4549-bd6b-1c0fc39d067b</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Construct a point from {xyz} coordinates.</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f1c497f2-a656-46bd-97ff-e6f55517ad83</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>390</X>
<Y>743</Y>
<W>67</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>421</X>
<Y>775</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{x} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f274b47b-1218-4782-8247-527101e3221f</item>
<item name="Name" type_name="gh_string" type_code="10">X coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>392</X>
<Y>745</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>400.5</X>
<Y>755</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{y} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8bb61e7c-9fbb-42a5-be49-c22980dcde8c</item>
<item name="Name" type_name="gh_string" type_code="10">Y coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">fd7d6e04-d8e1-46ec-9660-5d3b6392bb5c</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>392</X>
<Y>765</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>400.5</X>
<Y>775</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">-100</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{z} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">fd7813a9-1054-41ca-9f6b-83a5fd0efcce</item>
<item name="Name" type_name="gh_string" type_code="10">Z coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>392</X>
<Y>785</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>400.5</X>
<Y>795</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">544607c8-b250-4465-bd1a-e6ed510b2090</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>436</X>
<Y>745</Y>
<W>19</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>445.5</X>
<Y>775</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="51">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">d5967b9f-e8ee-436b-a8ad-29fdcecf32d5</item>
<item name="Name" type_name="gh_string" type_code="10">Curve</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Contains a collection of generic curves</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">12b4fe3c-7f43-444b-be77-19b89104763b</item>
<item name="Name" type_name="gh_string" type_code="10">Curve</item>
<item name="NickName" type_name="gh_string" type_code="10">Crv</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">9cf1549b-e355-4e34-8c66-56776a6693a3</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>784</X>
<Y>825</Y>
<W>50</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>809.8876</X>
<Y>837.7669</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="52">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">17b7152b-d30d-4d50-b9ef-c9fe25576fc2</item>
<item name="Name" type_name="gh_string" type_code="10">XY Plane</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">World XY plane.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8cd68a99-5c0c-40f6-8f6c-c57b65a7c0fb</item>
<item name="Name" type_name="gh_string" type_code="10">XY Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">XY</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>492</X>
<Y>837</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>523</X>
<Y>851</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Origin of plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">d599495e-da0d-4b5f-96ca-d429779f4f7e</item>
<item name="Name" type_name="gh_string" type_code="10">Origin</item>
<item name="NickName" type_name="gh_string" type_code="10">O</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">544607c8-b250-4465-bd1a-e6ed510b2090</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>494</X>
<Y>839</Y>
<W>14</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>502.5</X>
<Y>851</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<!--GH_Point only stores data which exists, test the existence of data fields prior to reading.-->
<items count="1">
<item name="Coordinate" type_name="gh_point3d" type_code="51">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">World XY plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">2e367eec-73c9-49fe-931b-de57feb15198</item>
<item name="Name" type_name="gh_string" type_code="10">Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">P</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>538</X>
<Y>839</Y>
<W>16</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>546</X>
<Y>851</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="53">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">a4cd2751-414d-42ec-8916-476ebf62d7fe</item>
<item name="Name" type_name="gh_string" type_code="10">Radians</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Convert an angle specified in degrees to radians</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">0de50cbe-99d5-4598-bc61-8cc3eacb616f</item>
<item name="Name" type_name="gh_string" type_code="10">Radians</item>
<item name="NickName" type_name="gh_string" type_code="10">Rad</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>481</X>
<Y>954</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>512</X>
<Y>968</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Angle in degrees</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8514650b-5a4b-4bd4-b272-4db0089c786a</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
<item name="NickName" type_name="gh_string" type_code="10">D</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">5eda29cf-b445-43dc-9fe0-d002172bab75</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>483</X>
<Y>956</Y>
<W>14</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>491.5</X>
<Y>968</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Angle in radians</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b2a8f43d-df9e-4385-bfbe-4e7a54acdc52</item>
<item name="Name" type_name="gh_string" type_code="10">Radians</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>527</X>
<Y>956</Y>
<W>16</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>535</X>
<Y>968</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="54">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">5eda29cf-b445-43dc-9fe0-d002172bab75</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">angle °</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>167</X>
<Y>960</Y>
<W>295</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>167.2024</X>
<Y>960.4379</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">170</item>
<item name="Min" type_name="gh_double" type_code="6">0</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">60</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="55">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e59fa8de-3b01-40cb-9090-35007fc19bba</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">03e53700-d1d7-480a-9312-c1af517baedd</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>739</X>
<Y>877</Y>
<W>97</W>
<H>38</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>739.8782</X>
<Y>877.1644</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="56">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">552a2357-924c-4919-bc11-da8244c7b3c6</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">09f794fe-078e-4e7b-840b-9d52b913b097</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>850</X>
<Y>902</Y>
<W>105</W>
<H>55</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>850.7964</X>
<Y>902.0322</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="57">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7d007978-016f-4867-9bef-68c359c70508</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">2373426a-a151-4361-9f8e-d19fef664dc8</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>738</X>
<Y>937</Y>
<W>97</W>
<H>38</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>738.8221</X>
<Y>937.5484</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="58">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">6f2330d2-0e46-4e09-9ac5-7b7d2a1d3954</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">0.5</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>988</X>
<Y>843</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>988.351</X>
<Y>843.602</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="59">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">fd7d6e04-d8e1-46ec-9660-5d3b6392bb5c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">-100</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>312</X>
<Y>766</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>312.841</X>
<Y>766.482</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="60">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">8cc3a196-f6a0-49ea-9ed9-0cb343a3ae64</item>
<item name="Name" type_name="gh_string" type_code="10">XZ Plane</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">World XZ plane.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8b551e34-6c38-4a2b-9e47-c0b841fb2d47</item>
<item name="Name" type_name="gh_string" type_code="10">XZ Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">XZ</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1145</X>
<Y>713</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1176</X>
<Y>727</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Origin of plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">6e5d1c51-960b-46f9-898e-f2b11bdb8846</item>
<item name="Name" type_name="gh_string" type_code="10">Origin</item>
<item name="NickName" type_name="gh_string" type_code="10">O</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">544607c8-b250-4465-bd1a-e6ed510b2090</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1147</X>
<Y>715</Y>
<W>14</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1155.5</X>
<Y>727</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<!--GH_Point only stores data which exists, test the existence of data fields prior to reading.-->
<items count="1">
<item name="Coordinate" type_name="gh_point3d" type_code="51">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">World XZ plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">0654eb92-001e-43e0-b38a-58a5d0d80f8e</item>
<item name="Name" type_name="gh_string" type_code="10">Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">P</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1191</X>
<Y>715</Y>
<W>16</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1199</X>
<Y>727</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="61">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">95f9fd7f-37dc-4bd8-8105-7301ef052bdd</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">160</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>306</X>
<Y>175</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>306.7406</X>
<Y>175.2052</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="62">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="13">
<item name="Bold" type_name="gh_bool" type_code="1">true</item>
<item name="Ca" type_name="gh_drawing_pointf" type_code="31">
<X>-552.3402</X>
<Y>73.81226</Y>
</item>
<item name="Cb" type_name="gh_drawing_pointf" type_code="31">
<X>-194.0922</X>
<Y>73.81226</Y>
</item>
<item name="Cc" type_name="gh_drawing_pointf" type_code="31">
<X>-194.0922</X>
<Y>88.8396</Y>
</item>
<item name="Cd" type_name="gh_drawing_pointf" type_code="31">
<X>-552.3402</X>
<Y>88.8396</Y>
</item>
<item name="Description" type_name="gh_string" type_code="10">A quick note</item>
<item name="Font" type_name="gh_string" type_code="10">Microsoft Sans Serif</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">501dc92a-f2db-4bb4-8054-89bd8827333b</item>
<item name="Italic" type_name="gh_bool" type_code="1">false</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
<item name="NickName" type_name="gh_string" type_code="10">Scribble</item>
<item name="Size" type_name="gh_single" type_code="5">16</item>
<item name="Text" type_name="gh_string" type_code="10">for testing different points on an alternate plane</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>-557.3402</X>
<Y>68.81226</Y>
<W>368.248</W>
<H>25.02734</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>-552.3402</X>
<Y>73.81226</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="63">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="13">
<item name="Bold" type_name="gh_bool" type_code="1">true</item>
<item name="Ca" type_name="gh_drawing_pointf" type_code="31">
<X>317.6904</X>
<Y>47.65552</Y>
</item>
<item name="Cb" type_name="gh_drawing_pointf" type_code="31">
<X>768.3664</X>
<Y>47.65552</Y>
</item>
<item name="Cc" type_name="gh_drawing_pointf" type_code="31">
<X>768.3664</X>
<Y>71.13574</Y>
</item>
<item name="Cd" type_name="gh_drawing_pointf" type_code="31">
<X>317.6904</X>
<Y>71.13574</Y>
</item>
<item name="Description" type_name="gh_string" type_code="10">A quick note</item>
<item name="Font" type_name="gh_string" type_code="10">Microsoft Sans Serif</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">32f0e79e-6dca-4f24-9b30-17ca99e1ac07</item>
<item name="Italic" type_name="gh_bool" type_code="1">false</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
<item name="NickName" type_name="gh_string" type_code="10">Scribble</item>
<item name="Size" type_name="gh_single" type_code="5">25</item>
<item name="Text" type_name="gh_string" type_code="10">Elastic Bending Script - Main Example</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>312.6904</X>
<Y>42.65552</Y>
<W>460.676</W>
<H>33.48022</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>317.6904</X>
<Y>47.65552</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="64">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="13">
<item name="Bold" type_name="gh_bool" type_code="1">true</item>
<item name="Ca" type_name="gh_drawing_pointf" type_code="31">
<X>559.8143</X>
<Y>683.617</Y>
</item>
<item name="Cb" type_name="gh_drawing_pointf" type_code="31">
<X>913.3091</X>
<Y>683.2137</Y>
</item>
<item name="Cc" type_name="gh_drawing_pointf" type_code="31">
<X>913.3262</X>
<Y>698.241</Y>
</item>
<item name="Cd" type_name="gh_drawing_pointf" type_code="31">
<X>559.8313</X>
<Y>698.6443</Y>
</item>
<item name="Description" type_name="gh_string" type_code="10">A quick note</item>
<item name="Font" type_name="gh_string" type_code="10">Microsoft Sans Serif</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">834f8190-7e8f-4039-8f4f-5e398c86ddfa</item>
<item name="Italic" type_name="gh_bool" type_code="1">false</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
<item name="NickName" type_name="gh_string" type_code="10">Scribble</item>
<item name="Size" type_name="gh_single" type_code="5">16</item>
<item name="Text" type_name="gh_string" type_code="10">At 60°, minimum curve radius = height. Try 90°</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>554.8143</X>
<Y>678.2137</Y>
<W>363.5119</W>
<H>25.43066</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>559.8143</X>
<Y>683.617</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="65">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">079bd9bd-54a0-41d4-98af-db999015f63d</item>
<item name="Name" type_name="gh_string" type_code="10">VB Script</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="10">
<item name="AdditionalSource" type_name="gh_string" type_code="10"> 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 &gt; -1 Then
Return Component.Params.Input.ElementAt(i).DataType &gt; 1 ' input parameter DataType of 1 means it's not receiving input (internal or external)
Else
Msg("error", "Input parameter '" &amp; param &amp; "' 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: " &amp; msg)
Case "warning"
Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, msg)
Print("Warning: " &amp; 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 &gt;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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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 &gt;MAXIT)
Dim lower As Double = 0 ' m must be within this range
Dim upper As Double = 1
Dim twoWidths As Boolean = h / L &gt;= Defined.DOUBLE_W_HL_RATIO And h / L &lt; 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &gt; 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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 &lt;= 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &gt; 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 &gt;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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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) &gt;= 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 &amp; 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 &lt;&gt; 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</item>
<item name="Description" type_name="gh_string" type_code="10">A VB.NET scriptable component</item>
<item name="EditorPosition" type_name="gh_drawing_point" type_code="30">
<X>98</X>
<Y>86</Y>
</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">bf1f4616-5fd9-426e-9474-52a076d17bf4</item>
<item name="Name" type_name="gh_string" type_code="10">VB Script</item>
<item name="NickName" type_name="gh_string" type_code="10">VB</item>
<item name="OutParameter" type_name="gh_bool" type_code="1">true</item>
<item name="ReferenceCount" type_name="gh_int32" type_code="3">0</item>
<item name="ScriptSource" type_name="gh_string" type_code="10"> ' -----------------------------------------------------------------
' 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 &lt; 10), you might have to increase the constant ROUNDTO at the bottom
'
' REFERENCES:
' {1} "The elastic rod" by M.E. Pacheco Q. &amp; 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 &gt; 0
' Wid - Width between the endpoints of the curve [note: if PtB is specified in addition, and distance between PtA and PtB &lt;&gt; 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 &amp; 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 &amp; 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 &amp; Bernoulli (the O.G.'s)
'
' -----------------------------------------------------------------
Dim ignoreSelfIntersecting As Boolean = False ' set to True if you don't want to output curves where width &lt; 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) &lt;&gt; 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) &lt;&gt; 0 Then
Msg("error", "Point B is not on the base plane")
Return
End If
AtoB = New Line(PtA, PtB)
If AtoB.Length &lt;&gt; 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 &lt; 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 &gt; 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 &lt;= 0 Then
Msg("error", "Length cannot be negative or zero")
Return
End If
If IsSet("Wid") Then ' find height &amp; angle based on length and specified width
If Wid &gt; 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 &amp; angle based on length and calculated width (distance between PtA and PtB)
If width &gt; 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 &amp; angle based on length and height ** possible to return 2 results **
If Math.Abs(Ht / Len) &gt; Defined.MAX_HL_RATIO Then
Msg("error", "Height not possible with given length")
Return
End If
If Ht &lt; 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 &amp; 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 &amp; height based on length and angle
If Ang &lt; 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 &amp; angle based on specified width and height
If Ht &lt; 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 &amp; 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 &lt; 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 &lt; 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 &amp; angle based on calculated width and height
If Ht &lt; 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 &amp; 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 &lt; 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 &lt; 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 &amp; width based on height and angle
If Ht &lt; 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 &lt; 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 &gt; 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 &gt; 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 &lt; 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 &gt;= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve whose width = " &amp; Math.Round(width, 4) &amp; " 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=" &amp; length &amp; ", width=" &amp; width &amp; ", height=" &amp; height &amp; ", angle=" &amp; angle &amp; ", m=" &amp; m_val &amp; ", k=" &amp; Math.Sqrt(m_val) &amp; ", w/L=" &amp; width / length &amp; ", h/L=" &amp; height / length &amp; ", w/h=" &amp; 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 &gt;= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve at these parameters is not guaranteed")
If width &lt; 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=" &amp; length &amp; ", width=" &amp; width &amp; ", height=" &amp; height &amp; ", angle=" &amp; angle &amp; ", m=" &amp; m &amp; ", k=" &amp; Math.Sqrt(m) &amp; ", w/L=" &amp; width / length &amp; ", h/L=" &amp; height / length &amp; ", w/h=" &amp; width / height)
End If
</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>618</X>
<Y>1502</Y>
<W>84</W>
<H>184</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>660</X>
<Y>1594</Y>
</item>
</items>
</chunk>
<chunk name="ParameterData">
<items count="19">
<item name="InputCount" type_name="gh_int32" type_code="3">9</item>
<item name="InputId" index="0" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="1" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="2" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="3" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="4" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="5" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="6" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="7" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="8" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="OutputCount" type_name="gh_int32" type_code="3">8</item>
<item name="OutputId" index="0" type_name="gh_guid" type_code="9">3ede854e-c753-40eb-84cb-b48008f14fd4</item>
<item name="OutputId" index="1" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="2" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="3" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="4" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="5" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="6" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="7" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
</items>
<chunks count="17">
<chunk name="InputParam" index="0">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable PtA</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">fc00bec5-e331-4012-b0a8-a6f9d0f686f7</item>
<item name="Name" type_name="gh_string" type_code="10">PtA</item>
<item name="NickName" type_name="gh_string" type_code="10">PtA</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">7470aaae-fe5c-4a6e-a5d7-3c8c950bb9fb</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">e1937b56-b1da-4c12-8bd8-e34ee81746ef</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>620</X>
<Y>1504</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>634</X>
<Y>1514</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="1">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable PtB</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c5bc96c5-9e28-4cb8-9259-356c9db2b9fb</item>
<item name="Name" type_name="gh_string" type_code="10">PtB</item>
<item name="NickName" type_name="gh_string" type_code="10">PtB</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">e1937b56-b1da-4c12-8bd8-e34ee81746ef</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>620</X>
<Y>1524</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>634</X>
<Y>1534</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="2">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Pln</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">71f32d80-b186-4e03-b761-b9bb960ea743</item>
<item name="Name" type_name="gh_string" type_code="10">Pln</item>
<item name="NickName" type_name="gh_string" type_code="10">Pln</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">c7f844d2-ba5e-476f-b4d4-193dcea7a216</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">3897522d-58e9-4d60-b38c-978ddacfedd8</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>620</X>
<Y>1544</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>634</X>
<Y>1554</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="3">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Len</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">0aa34a2c-a64a-42a7-9ee2-ff1e67f56177</item>
<item name="Name" type_name="gh_string" type_code="10">Len</item>
<item name="NickName" type_name="gh_string" type_code="10">Len</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">7d11a12d-1f6f-4777-9bc7-965dd3035809</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>620</X>
<Y>1564</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>634</X>
<Y>1574</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="4">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Wid</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">1af65384-240e-46e3-8309-6fc1ae7504d7</item>
<item name="Name" type_name="gh_string" type_code="10">Wid</item>
<item name="NickName" type_name="gh_string" type_code="10">Wid</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>620</X>
<Y>1584</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>634</X>
<Y>1594</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="5">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Ht</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8d0b03a7-827e-4902-8b4f-5bb0e815b41b</item>
<item name="Name" type_name="gh_string" type_code="10">Ht</item>
<item name="NickName" type_name="gh_string" type_code="10">Ht</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">d1327bed-c875-4acd-82dd-5fed4b45b311</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>620</X>
<Y>1604</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>634</X>
<Y>1614</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="6">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Ang</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">2deaf321-2e08-44e8-a80f-9628891997a5</item>
<item name="Name" type_name="gh_string" type_code="10">Ang</item>
<item name="NickName" type_name="gh_string" type_code="10">Ang</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>620</X>
<Y>1624</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>634</X>
<Y>1634</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="7">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable E</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8dff382d-9d65-40bc-ac45-64afb28a006d</item>
<item name="Name" type_name="gh_string" type_code="10">E</item>
<item name="NickName" type_name="gh_string" type_code="10">E</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>620</X>
<Y>1644</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>634</X>
<Y>1654</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="8">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable I</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">33d1c654-7377-4887-9445-52cefe06021d</item>
<item name="Name" type_name="gh_string" type_code="10">I</item>
<item name="NickName" type_name="gh_string" type_code="10">I</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>620</X>
<Y>1664</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>634</X>
<Y>1674</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="0">
<items count="7">
<item name="Access" type_name="gh_int32" type_code="3">1</item>
<item name="Description" type_name="gh_string" type_code="10">Print, Reflect and Error streams</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">964ae01d-510e-42cb-b06f-38805376764d</item>
<item name="Name" type_name="gh_string" type_code="10">out</item>
<item name="NickName" type_name="gh_string" type_code="10">out</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>675</X>
<Y>1504</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>687.5</X>
<Y>1515.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter Pts</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">17f99969-6a6b-431e-8210-f6e15df9a9af</item>
<item name="Name" type_name="gh_string" type_code="10">Pts</item>
<item name="NickName" type_name="gh_string" type_code="10">Pts</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>675</X>
<Y>1526</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>687.5</X>
<Y>1537.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter Crv</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">6548d62a-dfa5-4478-9f16-8d4fb96732c9</item>
<item name="Name" type_name="gh_string" type_code="10">Crv</item>
<item name="NickName" type_name="gh_string" type_code="10">Crv</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>675</X>
<Y>1549</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>687.5</X>
<Y>1560.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="3">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter L</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">a2a9f9ae-744d-4886-a3ee-4c33b8365028</item>
<item name="Name" type_name="gh_string" type_code="10">L</item>
<item name="NickName" type_name="gh_string" type_code="10">L</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>675</X>
<Y>1571</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>687.5</X>
<Y>1582.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="4">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter W</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">0c900729-ed6e-40e8-809f-e2432521ac54</item>
<item name="Name" type_name="gh_string" type_code="10">W</item>
<item name="NickName" type_name="gh_string" type_code="10">W</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>675</X>
<Y>1594</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>687.5</X>
<Y>1605.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="5">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter H</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7772d1f7-9786-4d55-8690-af9d6877a777</item>
<item name="Name" type_name="gh_string" type_code="10">H</item>
<item name="NickName" type_name="gh_string" type_code="10">H</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>675</X>
<Y>1616</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>687.5</X>
<Y>1627.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="6">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter A</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">bc883717-6d8a-41a6-bb0b-3d7c5d7a61ea</item>
<item name="Name" type_name="gh_string" type_code="10">A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>675</X>
<Y>1639</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>687.5</X>
<Y>1650.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="7">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter F</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">fc8245e0-b2d0-471d-9254-01a0eff7a0b4</item>
<item name="Name" type_name="gh_string" type_code="10">F</item>
<item name="NickName" type_name="gh_string" type_code="10">F</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>675</X>
<Y>1661</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>687.5</X>
<Y>1672.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="66">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7d11a12d-1f6f-4777-9bc7-965dd3035809</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">length</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>163</X>
<Y>1555</Y>
<W>382</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>163.9633</X>
<Y>1555.108</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">400</item>
<item name="Min" type_name="gh_double" type_code="6">0</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">225</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="67">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">fbac3e32-f100-4292-8692-77240a42fd1a</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">Contains a collection of three-dimensional points</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">108e145a-a9f8-4c1a-856f-eef3be9eef4b</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">17f99969-6a6b-431e-8210-f6e15df9a9af</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>788</X>
<Y>1463</Y>
<W>50</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>813.4178</X>
<Y>1475.827</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="68">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">de6e3b3a-9675-45ae-ad2f-bfc0988f9582</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">a0d9174c-2b33-4845-86da-70d722e564b7</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>846</X>
<Y>1678</Y>
<W>105</W>
<H>55</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>846.2736</X>
<Y>1678.188</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="69">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">0d77c51e-584f-44e8-aed2-c2ddf4803888</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Convert an angle specified in radians to degrees</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">9bc218b0-faa5-4566-a292-b5565b343ee8</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
<item name="NickName" type_name="gh_string" type_code="10">Deg</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>759</X>
<Y>1690</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>789</X>
<Y>1704</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Angle in radians</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8dd5ffda-e6b3-4328-a1c1-726386b31dd7</item>
<item name="Name" type_name="gh_string" type_code="10">Radians</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">bc883717-6d8a-41a6-bb0b-3d7c5d7a61ea</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>761</X>
<Y>1692</Y>
<W>13</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>769</X>
<Y>1704</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Angle in degrees</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">a0d9174c-2b33-4845-86da-70d722e564b7</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
<item name="NickName" type_name="gh_string" type_code="10">D</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>804</X>
<Y>1692</Y>
<W>17</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>812.5</X>
<Y>1704</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="70">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">3581f42a-9592-4549-bd6b-1c0fc39d067b</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Construct a point from {xyz} coordinates.</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">5bb8544d-21ed-430d-b9a1-3d097d9c0f85</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>474</X>
<Y>1440</Y>
<W>67</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>505</X>
<Y>1472</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{x} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">fd05bf19-e5b9-428a-a0b7-1183ddb4d4cb</item>
<item name="Name" type_name="gh_string" type_code="10">X coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">18da725f-8fce-4b5c-bfc0-b35f534747f4</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>476</X>
<Y>1442</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>484.5</X>
<Y>1452</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{y} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">5d500e04-4c0a-4e2e-90e3-a69f12e6e56b</item>
<item name="Name" type_name="gh_string" type_code="10">Y coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">bdda70a3-abe5-47d3-bab1-d54eaac87273</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>476</X>
<Y>1462</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>484.5</X>
<Y>1472</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{z} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b73aa23e-da5e-429b-a2ad-c29573433d8d</item>
<item name="Name" type_name="gh_string" type_code="10">Z coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>476</X>
<Y>1482</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>484.5</X>
<Y>1492</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7470aaae-fe5c-4a6e-a5d7-3c8c950bb9fb</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>520</X>
<Y>1442</Y>
<W>19</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>529.5</X>
<Y>1472</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="71">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">d5967b9f-e8ee-436b-a8ad-29fdcecf32d5</item>
<item name="Name" type_name="gh_string" type_code="10">Curve</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Contains a collection of generic curves</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">d707c7a6-ce24-45bb-a3b3-c616b13d07dc</item>
<item name="Name" type_name="gh_string" type_code="10">Curve</item>
<item name="NickName" type_name="gh_string" type_code="10">Crv</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">6548d62a-dfa5-4478-9f16-8d4fb96732c9</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>788</X>
<Y>1506</Y>
<W>50</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>813.4067</X>
<Y>1518.357</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="72">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">17b7152b-d30d-4d50-b9ef-c9fe25576fc2</item>
<item name="Name" type_name="gh_string" type_code="10">XY Plane</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">World XY plane.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">1653bea2-6780-45be-ad4a-2c29f59e4c19</item>
<item name="Name" type_name="gh_string" type_code="10">XY Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">XY</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>479</X>
<Y>1515</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>510</X>
<Y>1529</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Origin of plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">6ccdcfe2-c623-42d1-8da5-1e99c86f6f52</item>
<item name="Name" type_name="gh_string" type_code="10">Origin</item>
<item name="NickName" type_name="gh_string" type_code="10">O</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>481</X>
<Y>1517</Y>
<W>14</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>489.5</X>
<Y>1529</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<!--GH_Point only stores data which exists, test the existence of data fields prior to reading.-->
<items count="1">
<item name="Coordinate" type_name="gh_point3d" type_code="51">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">World XY plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c7f844d2-ba5e-476f-b4d4-193dcea7a216</item>
<item name="Name" type_name="gh_string" type_code="10">Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">P</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>525</X>
<Y>1517</Y>
<W>16</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>533</X>
<Y>1529</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="73">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">d1327bed-c875-4acd-82dd-5fed4b45b311</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">height</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>168</X>
<Y>1608</Y>
<W>381</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>168.731</X>
<Y>1608.997</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">200</item>
<item name="Min" type_name="gh_double" type_code="6">0</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">89</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="74">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e3db26aa-60fb-43b8-8092-d7ecfc283153</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">a2a9f9ae-744d-4886-a3ee-4c33b8365028</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>743</X>
<Y>1557</Y>
<W>97</W>
<H>38</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>743.3972</X>
<Y>1557.754</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="75">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">dfa914e0-e01f-4bbe-b66d-a9d4a08bb5c7</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">0c900729-ed6e-40e8-809f-e2432521ac54</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>854</X>
<Y>1582</Y>
<W>105</W>
<H>55</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>854.3154</X>
<Y>1582.622</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="76">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b487f9ab-5cec-404a-9235-d2a5f0e79007</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">7772d1f7-9786-4d55-8690-af9d6877a777</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>742</X>
<Y>1618</Y>
<W>97</W>
<H>38</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>742.3411</X>
<Y>1618.138</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="77">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">bdda70a3-abe5-47d3-bab1-d54eaac87273</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">-150</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>378</X>
<Y>1465</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>378.501</X>
<Y>1465.184</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="78">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">18da725f-8fce-4b5c-bfc0-b35f534747f4</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">-150</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>377</X>
<Y>1434</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>377.701</X>
<Y>1434.784</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="79">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="13">
<item name="Bold" type_name="gh_bool" type_code="1">true</item>
<item name="Ca" type_name="gh_drawing_pointf" type_code="31">
<X>1685.887</X>
<Y>79.1758</Y>
</item>
<item name="Cb" type_name="gh_drawing_pointf" type_code="31">
<X>1984.071</X>
<Y>81.3421</Y>
</item>
<item name="Cc" type_name="gh_drawing_pointf" type_code="31">
<X>1983.831</X>
<Y>114.478</Y>
</item>
<item name="Cd" type_name="gh_drawing_pointf" type_code="31">
<X>1685.647</X>
<Y>112.3117</Y>
</item>
<item name="Description" type_name="gh_string" type_code="10">A quick note</item>
<item name="Font" type_name="gh_string" type_code="10">Microsoft Sans Serif</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">18f8db3f-bb9b-4a79-9d98-1a46a8a0c59b</item>
<item name="Italic" type_name="gh_bool" type_code="1">false</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
<item name="NickName" type_name="gh_string" type_code="10">Scribble</item>
<item name="Size" type_name="gh_single" type_code="5">16</item>
<item name="Text" type_name="gh_string" type_code="10">Negative width = self-intersecting result
Negative height and angle work too</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1680.647</X>
<Y>74.1758</Y>
<W>308.4244</W>
<H>45.30215</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1685.887</X>
<Y>79.1758</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="80">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">079bd9bd-54a0-41d4-98af-db999015f63d</item>
<item name="Name" type_name="gh_string" type_code="10">VB Script</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="10">
<item name="AdditionalSource" type_name="gh_string" type_code="10"> 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 &gt; -1 Then
Return Component.Params.Input.ElementAt(i).DataType &gt; 1 ' input parameter DataType of 1 means it's not receiving input (internal or external)
Else
Msg("error", "Input parameter '" &amp; param &amp; "' 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: " &amp; msg)
Case "warning"
Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, msg)
Print("Warning: " &amp; 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 &gt;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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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 &gt;MAXIT)
Dim lower As Double = 0 ' m must be within this range
Dim upper As Double = 1
Dim twoWidths As Boolean = h / L &gt;= Defined.DOUBLE_W_HL_RATIO And h / L &lt; 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &gt; 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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 &lt;= 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &gt; 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 &gt;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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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) &gt;= 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 &amp; 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 &lt;&gt; 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</item>
<item name="Description" type_name="gh_string" type_code="10">A VB.NET scriptable component</item>
<item name="EditorPosition" type_name="gh_drawing_point" type_code="30">
<X>98</X>
<Y>86</Y>
</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">15a333e8-a6e9-40f9-ae49-542ab7d2e084</item>
<item name="Name" type_name="gh_string" type_code="10">VB Script</item>
<item name="NickName" type_name="gh_string" type_code="10">VB</item>
<item name="OutParameter" type_name="gh_bool" type_code="1">true</item>
<item name="ReferenceCount" type_name="gh_int32" type_code="3">0</item>
<item name="ScriptSource" type_name="gh_string" type_code="10"> ' -----------------------------------------------------------------
' 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 &lt; 10), you might have to increase the constant ROUNDTO at the bottom
'
' REFERENCES:
' {1} "The elastic rod" by M.E. Pacheco Q. &amp; 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 &gt; 0
' Wid - Width between the endpoints of the curve [note: if PtB is specified in addition, and distance between PtA and PtB &lt;&gt; 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 &amp; 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 &amp; 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 &amp; Bernoulli (the O.G.'s)
'
' -----------------------------------------------------------------
Dim ignoreSelfIntersecting As Boolean = False ' set to True if you don't want to output curves where width &lt; 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) &lt;&gt; 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) &lt;&gt; 0 Then
Msg("error", "Point B is not on the base plane")
Return
End If
AtoB = New Line(PtA, PtB)
If AtoB.Length &lt;&gt; 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 &lt; 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 &gt; 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 &lt;= 0 Then
Msg("error", "Length cannot be negative or zero")
Return
End If
If IsSet("Wid") Then ' find height &amp; angle based on length and specified width
If Wid &gt; 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 &amp; angle based on length and calculated width (distance between PtA and PtB)
If width &gt; 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 &amp; angle based on length and height ** possible to return 2 results **
If Math.Abs(Ht / Len) &gt; Defined.MAX_HL_RATIO Then
Msg("error", "Height not possible with given length")
Return
End If
If Ht &lt; 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 &amp; 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 &amp; height based on length and angle
If Ang &lt; 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 &amp; angle based on specified width and height
If Ht &lt; 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 &amp; 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 &lt; 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 &lt; 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 &amp; angle based on calculated width and height
If Ht &lt; 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 &amp; 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 &lt; 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 &lt; 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 &amp; width based on height and angle
If Ht &lt; 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 &lt; 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 &gt; 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 &gt; 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 &lt; 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 &gt;= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve whose width = " &amp; Math.Round(width, 4) &amp; " 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=" &amp; length &amp; ", width=" &amp; width &amp; ", height=" &amp; height &amp; ", angle=" &amp; angle &amp; ", m=" &amp; m_val &amp; ", k=" &amp; Math.Sqrt(m_val) &amp; ", w/L=" &amp; width / length &amp; ", h/L=" &amp; height / length &amp; ", w/h=" &amp; 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 &gt;= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve at these parameters is not guaranteed")
If width &lt; 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=" &amp; length &amp; ", width=" &amp; width &amp; ", height=" &amp; height &amp; ", angle=" &amp; angle &amp; ", m=" &amp; m &amp; ", k=" &amp; Math.Sqrt(m) &amp; ", w/L=" &amp; width / length &amp; ", h/L=" &amp; height / length &amp; ", w/h=" &amp; width / height)
End If
</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1797</X>
<Y>201</Y>
<W>84</W>
<H>184</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1839</X>
<Y>293</Y>
</item>
</items>
</chunk>
<chunk name="ParameterData">
<items count="19">
<item name="InputCount" type_name="gh_int32" type_code="3">9</item>
<item name="InputId" index="0" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="1" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="2" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="3" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="4" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="5" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="6" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="7" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="8" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="OutputCount" type_name="gh_int32" type_code="3">8</item>
<item name="OutputId" index="0" type_name="gh_guid" type_code="9">3ede854e-c753-40eb-84cb-b48008f14fd4</item>
<item name="OutputId" index="1" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="2" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="3" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="4" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="5" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="6" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="7" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
</items>
<chunks count="17">
<chunk name="InputParam" index="0">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable PtA</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">512bccc3-6c0e-4ef4-ba24-8685c3ee8d8c</item>
<item name="Name" type_name="gh_string" type_code="10">PtA</item>
<item name="NickName" type_name="gh_string" type_code="10">PtA</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">1813e6b2-8594-4cdf-882c-e312c60bd7f7</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">e1937b56-b1da-4c12-8bd8-e34ee81746ef</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1799</X>
<Y>203</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1813</X>
<Y>213</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="1">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable PtB</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">d879c694-aa7a-49cc-885b-4d3c9e0e85df</item>
<item name="Name" type_name="gh_string" type_code="10">PtB</item>
<item name="NickName" type_name="gh_string" type_code="10">PtB</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">e1937b56-b1da-4c12-8bd8-e34ee81746ef</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1799</X>
<Y>223</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1813</X>
<Y>233</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="2">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Pln</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">0b814522-7d00-47c6-9c48-1e46bee924f2</item>
<item name="Name" type_name="gh_string" type_code="10">Pln</item>
<item name="NickName" type_name="gh_string" type_code="10">Pln</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">f9c309f7-e784-42bd-ac1d-c6f978935e00</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">3897522d-58e9-4d60-b38c-978ddacfedd8</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1799</X>
<Y>243</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1813</X>
<Y>253</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="3">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Len</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">693f977f-077d-410b-a1cc-bc37f0473ad9</item>
<item name="Name" type_name="gh_string" type_code="10">Len</item>
<item name="NickName" type_name="gh_string" type_code="10">Len</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">ce3bf1e3-3694-43ca-b804-94bf1ac205b6</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1799</X>
<Y>263</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1813</X>
<Y>273</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="4">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Wid</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e718cabe-f163-44e2-bf0e-4866946c6c49</item>
<item name="Name" type_name="gh_string" type_code="10">Wid</item>
<item name="NickName" type_name="gh_string" type_code="10">Wid</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">2dac057e-8756-4d2f-b7af-61904cb5801a</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1799</X>
<Y>283</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1813</X>
<Y>293</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="5">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Ht</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f8027746-ba7f-4f8e-bb9c-fa5b544e826b</item>
<item name="Name" type_name="gh_string" type_code="10">Ht</item>
<item name="NickName" type_name="gh_string" type_code="10">Ht</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1799</X>
<Y>303</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1813</X>
<Y>313</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="6">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Ang</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">50106206-1bb3-43fe-bd4f-366e3b16274a</item>
<item name="Name" type_name="gh_string" type_code="10">Ang</item>
<item name="NickName" type_name="gh_string" type_code="10">Ang</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1799</X>
<Y>323</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1813</X>
<Y>333</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="7">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable E</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">1d6edbeb-7707-43da-8d81-c55c2a788b19</item>
<item name="Name" type_name="gh_string" type_code="10">E</item>
<item name="NickName" type_name="gh_string" type_code="10">E</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1799</X>
<Y>343</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1813</X>
<Y>353</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="8">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable I</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">06ae685a-2839-4dc2-a276-de0409a26bad</item>
<item name="Name" type_name="gh_string" type_code="10">I</item>
<item name="NickName" type_name="gh_string" type_code="10">I</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1799</X>
<Y>363</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1813</X>
<Y>373</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="0">
<items count="7">
<item name="Access" type_name="gh_int32" type_code="3">1</item>
<item name="Description" type_name="gh_string" type_code="10">Print, Reflect and Error streams</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">20755b5a-7694-4c4e-82c2-fb013dc3fe1b</item>
<item name="Name" type_name="gh_string" type_code="10">out</item>
<item name="NickName" type_name="gh_string" type_code="10">out</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1854</X>
<Y>203</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1866.5</X>
<Y>214.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter Pts</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b6862774-22a9-4557-8df9-4e105338905c</item>
<item name="Name" type_name="gh_string" type_code="10">Pts</item>
<item name="NickName" type_name="gh_string" type_code="10">Pts</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1854</X>
<Y>225</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1866.5</X>
<Y>236.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter Crv</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8f545f02-550b-41fb-8dd0-70baaad81a72</item>
<item name="Name" type_name="gh_string" type_code="10">Crv</item>
<item name="NickName" type_name="gh_string" type_code="10">Crv</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1854</X>
<Y>248</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1866.5</X>
<Y>259.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="3">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter L</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">d7f4a38f-b681-4226-a169-d484336986a2</item>
<item name="Name" type_name="gh_string" type_code="10">L</item>
<item name="NickName" type_name="gh_string" type_code="10">L</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1854</X>
<Y>270</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1866.5</X>
<Y>281.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="4">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter W</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ce2227d2-88d5-44a1-b925-e842136dca13</item>
<item name="Name" type_name="gh_string" type_code="10">W</item>
<item name="NickName" type_name="gh_string" type_code="10">W</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1854</X>
<Y>293</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1866.5</X>
<Y>304.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="5">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter H</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">1c6a682f-bab0-45c4-b876-7f71802d69ab</item>
<item name="Name" type_name="gh_string" type_code="10">H</item>
<item name="NickName" type_name="gh_string" type_code="10">H</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1854</X>
<Y>315</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1866.5</X>
<Y>326.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="6">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter A</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">24ef080a-aae1-4bd9-a2eb-97cd1569a733</item>
<item name="Name" type_name="gh_string" type_code="10">A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1854</X>
<Y>338</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1866.5</X>
<Y>349.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="7">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter F</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">057d392c-b422-4b34-a8df-30546d6c59e2</item>
<item name="Name" type_name="gh_string" type_code="10">F</item>
<item name="NickName" type_name="gh_string" type_code="10">F</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1854</X>
<Y>360</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1866.5</X>
<Y>371.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="81">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">2dac057e-8756-4d2f-b7af-61904cb5801a</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">width</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1346</X>
<Y>281</Y>
<W>382</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1346.563</X>
<Y>281.9091</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">400</item>
<item name="Min" type_name="gh_double" type_code="6">-130</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">-43.19</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="82">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ce3bf1e3-3694-43ca-b804-94bf1ac205b6</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">length</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1344</X>
<Y>255</Y>
<W>382</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1344.994</X>
<Y>255.0591</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">400</item>
<item name="Min" type_name="gh_double" type_code="6">0</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">225</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="83">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">fbac3e32-f100-4292-8692-77240a42fd1a</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">Contains a collection of three-dimensional points</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8083dba1-6a1d-4290-9c38-1186214db9bc</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">b6862774-22a9-4557-8df9-4e105338905c</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1969</X>
<Y>163</Y>
<W>50</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1994.448</X>
<Y>175.7781</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="84">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">3e685539-f44c-4607-be6b-cd3c05e3c5eb</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">4cd71eb6-cfaa-4a47-a72d-f24e55334beb</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2027</X>
<Y>378</Y>
<W>105</W>
<H>55</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2027.304</X>
<Y>378.139</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="85">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">0d77c51e-584f-44e8-aed2-c2ddf4803888</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Convert an angle specified in radians to degrees</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">25514f49-1dae-40e1-8f32-66e3ea2dc7bd</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
<item name="NickName" type_name="gh_string" type_code="10">Deg</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1939</X>
<Y>389</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1969</X>
<Y>403</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Angle in radians</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">811b950c-3df2-44de-b7c6-6ffa4c6f2250</item>
<item name="Name" type_name="gh_string" type_code="10">Radians</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">24ef080a-aae1-4bd9-a2eb-97cd1569a733</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1941</X>
<Y>391</Y>
<W>13</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1949</X>
<Y>403</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Angle in degrees</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">4cd71eb6-cfaa-4a47-a72d-f24e55334beb</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
<item name="NickName" type_name="gh_string" type_code="10">D</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1984</X>
<Y>391</Y>
<W>17</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1992.5</X>
<Y>403</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="86">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">3581f42a-9592-4549-bd6b-1c0fc39d067b</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Construct a point from {xyz} coordinates.</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f3d440d6-99af-4801-8175-5110376379c5</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1654</X>
<Y>139</Y>
<W>67</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1685</X>
<Y>171</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{x} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">30c954ff-f9a8-4e9e-8c9e-f59a9c5d291c</item>
<item name="Name" type_name="gh_string" type_code="10">X coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">7feb34e6-c435-40ef-a40e-e2792a845fb9</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1656</X>
<Y>141</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1664.5</X>
<Y>151</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{y} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ae4bac11-a219-4f42-a0e6-d6bf63aeb9fa</item>
<item name="Name" type_name="gh_string" type_code="10">Y coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1656</X>
<Y>161</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1664.5</X>
<Y>171</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{z} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">24106b26-bc67-44c4-a1e9-15b116c3613c</item>
<item name="Name" type_name="gh_string" type_code="10">Z coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1656</X>
<Y>181</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1664.5</X>
<Y>191</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">1813e6b2-8594-4cdf-882c-e312c60bd7f7</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1700</X>
<Y>141</Y>
<W>19</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1709.5</X>
<Y>171</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="87">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">d5967b9f-e8ee-436b-a8ad-29fdcecf32d5</item>
<item name="Name" type_name="gh_string" type_code="10">Curve</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Contains a collection of generic curves</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">3be0014f-c7bb-45c2-a96c-88d0e7dd1d16</item>
<item name="Name" type_name="gh_string" type_code="10">Curve</item>
<item name="NickName" type_name="gh_string" type_code="10">Crv</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">8f545f02-550b-41fb-8dd0-70baaad81a72</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1969</X>
<Y>206</Y>
<W>50</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1994.437</X>
<Y>218.3081</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="88">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">17b7152b-d30d-4d50-b9ef-c9fe25576fc2</item>
<item name="Name" type_name="gh_string" type_code="10">XY Plane</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">World XY plane.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">d0010e01-3735-4f83-b1a6-500844575bf9</item>
<item name="Name" type_name="gh_string" type_code="10">XY Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">XY</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1659</X>
<Y>214</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1690</X>
<Y>228</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Origin of plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">2c415a43-0493-4511-bc80-751474a0da20</item>
<item name="Name" type_name="gh_string" type_code="10">Origin</item>
<item name="NickName" type_name="gh_string" type_code="10">O</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1661</X>
<Y>216</Y>
<W>14</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1669.5</X>
<Y>228</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<!--GH_Point only stores data which exists, test the existence of data fields prior to reading.-->
<items count="1">
<item name="Coordinate" type_name="gh_point3d" type_code="51">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">World XY plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f9c309f7-e784-42bd-ac1d-c6f978935e00</item>
<item name="Name" type_name="gh_string" type_code="10">Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">P</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1705</X>
<Y>216</Y>
<W>16</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1713</X>
<Y>228</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="89">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">a4cd2751-414d-42ec-8916-476ebf62d7fe</item>
<item name="Name" type_name="gh_string" type_code="10">Radians</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Convert an angle specified in degrees to radians</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8fe257f5-d9cb-49d1-b6c9-0275b7bb1e07</item>
<item name="Name" type_name="gh_string" type_code="10">Radians</item>
<item name="NickName" type_name="gh_string" type_code="10">Rad</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1664</X>
<Y>333</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1695</X>
<Y>347</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Angle in degrees</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">6b4b4cf1-fd46-40c8-9f67-929d72db351b</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
<item name="NickName" type_name="gh_string" type_code="10">D</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">364d3276-a223-4ce8-826c-4071f2924b37</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1666</X>
<Y>335</Y>
<W>14</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1674.5</X>
<Y>347</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Angle in radians</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c9958f3c-a438-4f78-a3b0-79c2730cd794</item>
<item name="Name" type_name="gh_string" type_code="10">Radians</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1710</X>
<Y>335</Y>
<W>16</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1718</X>
<Y>347</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="90">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">364d3276-a223-4ce8-826c-4071f2924b37</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">angle °</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1351</X>
<Y>340</Y>
<W>295</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1351.752</X>
<Y>340.978</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">170</item>
<item name="Min" type_name="gh_double" type_code="6">-170</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">-42.08</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="91">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">49784903-21d7-4279-9bef-a75b6aa5db52</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">d7f4a38f-b681-4226-a169-d484336986a2</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1924</X>
<Y>257</Y>
<W>97</W>
<H>38</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1924.427</X>
<Y>257.7051</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="92">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">4aa4b973-077b-4bf3-b682-1bab56120052</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">ce2227d2-88d5-44a1-b925-e842136dca13</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2035</X>
<Y>282</Y>
<W>105</W>
<H>55</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2035.346</X>
<Y>282.573</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="93">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">372b06f9-a8b8-4e7d-b9a0-47795f8b6db6</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">1c6a682f-bab0-45c4-b876-7f71802d69ab</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1923</X>
<Y>318</Y>
<W>97</W>
<H>38</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1923.371</X>
<Y>318.089</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="94">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7feb34e6-c435-40ef-a40e-e2792a845fb9</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">-75</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1568</X>
<Y>140</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1568.331</X>
<Y>140.4951</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="95">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="13">
<item name="Bold" type_name="gh_bool" type_code="1">true</item>
<item name="Ca" type_name="gh_drawing_pointf" type_code="31">
<X>2269.006</X>
<Y>1162.356</Y>
</item>
<item name="Cb" type_name="gh_drawing_pointf" type_code="31">
<X>2646.125</X>
<Y>1163.049</Y>
</item>
<item name="Cc" type_name="gh_drawing_pointf" type_code="31">
<X>2646.09</X>
<Y>1181.682</Y>
</item>
<item name="Cd" type_name="gh_drawing_pointf" type_code="31">
<X>2268.972</X>
<Y>1180.989</Y>
</item>
<item name="Description" type_name="gh_string" type_code="10">A quick note</item>
<item name="Font" type_name="gh_string" type_code="10">Microsoft Sans Serif</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">61792023-c3a4-44db-a658-c546e321f080</item>
<item name="Italic" type_name="gh_bool" type_code="1">false</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
<item name="NickName" type_name="gh_string" type_code="10">Scribble</item>
<item name="Size" type_name="gh_single" type_code="5">25</item>
<item name="Text" type_name="gh_string" type_code="10">And the real raison d'être: tents!</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2263.972</X>
<Y>1157.356</Y>
<W>387.1528</W>
<H>29.32556</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2269.006</X>
<Y>1162.356</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="96">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">575660b1-8c79-4b8d-9222-7ab4a6ddb359</item>
<item name="Name" type_name="gh_string" type_code="10">Rectangle 2Pt</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Create a rectangle from a base plane and two points</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b8a48901-2a87-4e7d-870b-46ddd3c0a406</item>
<item name="Name" type_name="gh_string" type_code="10">Rectangle 2Pt</item>
<item name="NickName" type_name="gh_string" type_code="10">Rec 2Pt</item>
</items>
<chunks count="7">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2171</X>
<Y>1539</Y>
<W>64</W>
<H>84</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2202</X>
<Y>1581</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Rectangle base plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e2d6cfd4-201c-479e-a449-d47449b5d99c</item>
<item name="Name" type_name="gh_string" type_code="10">Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">P</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">8d8d0823-8c31-466e-89ab-c417764715c3</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2173</X>
<Y>1541</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2181.5</X>
<Y>1551</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="plane" type_name="gh_plane" type_code="72">
<Ox>0</Ox>
<Oy>0</Oy>
<Oz>0</Oz>
<Xx>1</Xx>
<Xy>0</Xy>
<Xz>0</Xz>
<Yx>0</Yx>
<Yy>1</Yy>
<Yz>0</Yz>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">First corner point.</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c31a60ef-1b6b-45b3-b296-290087f567bf</item>
<item name="Name" type_name="gh_string" type_code="10">Point A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">9ac73f55-39ae-429e-8dc8-8e7f958b4042</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2173</X>
<Y>1561</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2181.5</X>
<Y>1571</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<!--GH_Point only stores data which exists, test the existence of data fields prior to reading.-->
<items count="1">
<item name="Coordinate" type_name="gh_point3d" type_code="51">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Second corner point.</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">84fdc143-bd3e-4515-a76c-b9793c5c039d</item>
<item name="Name" type_name="gh_string" type_code="10">Point B</item>
<item name="NickName" type_name="gh_string" type_code="10">B</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">a8fa466b-7cde-4211-998f-da025b67f6b6</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2173</X>
<Y>1581</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2181.5</X>
<Y>1591</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<!--GH_Point only stores data which exists, test the existence of data fields prior to reading.-->
<items count="1">
<item name="Coordinate" type_name="gh_point3d" type_code="51">
<X>10</X>
<Y>5</Y>
<Z>0</Z>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="3">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Rectangle corner fillet radius</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">789908b6-b304-431d-b593-c2d0b7f80aa3</item>
<item name="Name" type_name="gh_string" type_code="10">Radius</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2173</X>
<Y>1601</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2181.5</X>
<Y>1611</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Rectangle defined by P, A and B</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">5cf2e6df-da94-4f18-9535-133a50f579e9</item>
<item name="Name" type_name="gh_string" type_code="10">Rectangle</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2217</X>
<Y>1541</Y>
<W>16</W>
<H>40</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2225</X>
<Y>1561</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Length of rectangle curve</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7e0b11dd-d81c-4da2-b222-5309b51b0636</item>
<item name="Name" type_name="gh_string" type_code="10">Length</item>
<item name="NickName" type_name="gh_string" type_code="10">L</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2217</X>
<Y>1581</Y>
<W>16</W>
<H>40</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2225</X>
<Y>1601</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="97">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">17b7152b-d30d-4d50-b9ef-c9fe25576fc2</item>
<item name="Name" type_name="gh_string" type_code="10">XY Plane</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">World XY plane.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">03446bc9-f51d-46c6-85eb-615230f3c249</item>
<item name="Name" type_name="gh_string" type_code="10">XY Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">XY</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2099</X>
<Y>1495</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2130</X>
<Y>1509</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Origin of plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8b2fbbc3-5be3-46d2-9834-1a1a5caea969</item>
<item name="Name" type_name="gh_string" type_code="10">Origin</item>
<item name="NickName" type_name="gh_string" type_code="10">O</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2101</X>
<Y>1497</Y>
<W>14</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2109.5</X>
<Y>1509</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<!--GH_Point only stores data which exists, test the existence of data fields prior to reading.-->
<items count="1">
<item name="Coordinate" type_name="gh_point3d" type_code="51">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">World XY plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8d8d0823-8c31-466e-89ab-c417764715c3</item>
<item name="Name" type_name="gh_string" type_code="10">Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">P</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2145</X>
<Y>1497</Y>
<W>16</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2153</X>
<Y>1509</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="98">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">3581f42a-9592-4549-bd6b-1c0fc39d067b</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Construct a point from {xyz} coordinates.</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7d498686-2e4d-42a6-adc7-13da767447ec</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1530</X>
<Y>1185</Y>
<W>67</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1561</X>
<Y>1217</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{x} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">bb3e48a5-a17f-4d87-8d40-67dd01b081eb</item>
<item name="Name" type_name="gh_string" type_code="10">X coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">0903a6c2-e102-41a9-8326-3f9533f91f9f</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1532</X>
<Y>1187</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1540.5</X>
<Y>1197</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{y} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c46a319c-3740-4362-8bff-3454b1d2a6cc</item>
<item name="Name" type_name="gh_string" type_code="10">Y coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">17a61eca-a95a-4f8b-aa55-052523e686bc</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1532</X>
<Y>1207</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1540.5</X>
<Y>1217</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{z} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">6c63b308-c5d5-44f6-a259-04c99b457c22</item>
<item name="Name" type_name="gh_string" type_code="10">Z coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1532</X>
<Y>1227</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1540.5</X>
<Y>1237</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f70a66ec-d9db-496d-9885-4b577f135593</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1576</X>
<Y>1187</Y>
<W>19</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1585.5</X>
<Y>1217</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="99">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">a0d62394-a118-422d-abb3-6af115c75b25</item>
<item name="Name" type_name="gh_string" type_code="10">Addition</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Mathematical addition</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f35af83d-b4d8-44ef-9f78-7dc1ed1ad4dd</item>
<item name="Name" type_name="gh_string" type_code="10">Addition</item>
<item name="NickName" type_name="gh_string" type_code="10">A+B</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1688</X>
<Y>1286</Y>
<W>64</W>
<H>44</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1719</X>
<Y>1308</Y>
</item>
</items>
</chunk>
<chunk name="ParameterData">
<items count="5">
<item name="InputCount" type_name="gh_int32" type_code="3">2</item>
<item name="InputId" index="0" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="InputId" index="1" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputCount" type_name="gh_int32" type_code="3">1</item>
<item name="OutputId" index="0" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
</items>
<chunks count="3">
<chunk name="InputParam" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">First item for addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f3b877be-ea2c-4706-b8e6-cf34d2796bca</item>
<item name="Name" type_name="gh_string" type_code="10">A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">f70a66ec-d9db-496d-9885-4b577f135593</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1690</X>
<Y>1288</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1698.5</X>
<Y>1298</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Second item for addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">16e574ce-9435-47c5-850d-a8fc5152e81d</item>
<item name="Name" type_name="gh_string" type_code="10">B</item>
<item name="NickName" type_name="gh_string" type_code="10">B</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">60a1321b-0d85-4215-ac31-f94c7015ccf2</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1690</X>
<Y>1308</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1698.5</X>
<Y>1318</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Result of addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">9ac73f55-39ae-429e-8dc8-8e7f958b4042</item>
<item name="Name" type_name="gh_string" type_code="10">Result</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1734</X>
<Y>1288</Y>
<W>16</W>
<H>40</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1742</X>
<Y>1308</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="100">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">56b92eab-d121-43f7-94d3-6cd8f0ddead8</item>
<item name="Name" type_name="gh_string" type_code="10">Vector XYZ</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Create a vector from {xyz} components.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">25bf0db5-4adb-4408-bfee-7d3611f1d1b6</item>
<item name="Name" type_name="gh_string" type_code="10">Vector XYZ</item>
<item name="NickName" type_name="gh_string" type_code="10">Vec</item>
</items>
<chunks count="6">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1576</X>
<Y>1323</Y>
<W>64</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1607</X>
<Y>1355</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Vector {x} component</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ec060dc1-0d2b-4706-ac14-728c097f877f</item>
<item name="Name" type_name="gh_string" type_code="10">X component</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">9b5d1997-6eb6-419e-84a2-da5dc70f5477</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1578</X>
<Y>1325</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1586.5</X>
<Y>1335</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Vector {y} component</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">1554f826-50eb-4842-ad0c-e1591646e701</item>
<item name="Name" type_name="gh_string" type_code="10">Y component</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">b582b4c2-046d-4816-9bf2-b7e40b12e3a1</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1578</X>
<Y>1345</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1586.5</X>
<Y>1355</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Vector {z} component</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c5b4970d-6668-445e-b8a3-7d736d0f83dc</item>
<item name="Name" type_name="gh_string" type_code="10">Z component</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1578</X>
<Y>1365</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1586.5</X>
<Y>1375</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Vector construct</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">60a1321b-0d85-4215-ac31-f94c7015ccf2</item>
<item name="Name" type_name="gh_string" type_code="10">Vector</item>
<item name="NickName" type_name="gh_string" type_code="10">V</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1622</X>
<Y>1325</Y>
<W>16</W>
<H>30</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1630</X>
<Y>1340</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Vector length</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">614a3c6d-0b33-40ad-81d3-d0dfd2cda65f</item>
<item name="Name" type_name="gh_string" type_code="10">Length</item>
<item name="NickName" type_name="gh_string" type_code="10">L</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1622</X>
<Y>1355</Y>
<W>16</W>
<H>30</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1630</X>
<Y>1370</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="101">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">9b5d1997-6eb6-419e-84a2-da5dc70f5477</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">3</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1491</X>
<Y>1321</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1491.106</X>
<Y>1321.658</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="102">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b582b4c2-046d-4816-9bf2-b7e40b12e3a1</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">2</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1489</X>
<Y>1351</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1489.186</X>
<Y>1351.098</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="103">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">9abae6b7-fa1d-448c-9209-4a8155345841</item>
<item name="Name" type_name="gh_string" type_code="10">Deconstruct</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Deconstruct a point into its component parts.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">04d13d9d-5383-4696-b406-0fc16bb9a913</item>
<item name="Name" type_name="gh_string" type_code="10">Deconstruct</item>
<item name="NickName" type_name="gh_string" type_code="10">pDecon</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1704</X>
<Y>1432</Y>
<W>64</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1734</X>
<Y>1464</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Input point</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ac0ad7b1-bf77-4354-ae03-3ed56f7694ac</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">P</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">9ac73f55-39ae-429e-8dc8-8e7f958b4042</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1706</X>
<Y>1434</Y>
<W>13</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1714</X>
<Y>1464</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point {x} component</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">986c6ad6-35ae-433f-bd24-072861a5425d</item>
<item name="Name" type_name="gh_string" type_code="10">X component</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1749</X>
<Y>1434</Y>
<W>17</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1757.5</X>
<Y>1444</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point {y} component</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">2c914091-22c1-40d8-abc1-4ccddd24e6ea</item>
<item name="Name" type_name="gh_string" type_code="10">Y component</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1749</X>
<Y>1454</Y>
<W>17</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1757.5</X>
<Y>1464</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point {z} component</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">eb73bdaa-9667-4377-9a20-f2e4e4e9cdbf</item>
<item name="Name" type_name="gh_string" type_code="10">Z component</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1749</X>
<Y>1474</Y>
<W>17</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1757.5</X>
<Y>1484</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="104">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">91f17ed9-335a-446e-9d6c-b9c687cba0f0</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">Length</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1456</X>
<Y>1597</Y>
<W>263</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1456.337</X>
<Y>1597.275</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">1</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">100</item>
<item name="Min" type_name="gh_double" type_code="6">0</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">88</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="105">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">0fd09915-ec8a-4a40-989a-123b9e68d06c</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">Width</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1457</X>
<Y>1655</Y>
<W>264</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1457.087</X>
<Y>1655.275</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">1</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">100</item>
<item name="Min" type_name="gh_double" type_code="6">0</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">54</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="106">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">a0d62394-a118-422d-abb3-6af115c75b25</item>
<item name="Name" type_name="gh_string" type_code="10">Addition</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Mathematical addition</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">425cffae-604f-493a-a5c9-d68e3739d648</item>
<item name="Name" type_name="gh_string" type_code="10">Addition</item>
<item name="NickName" type_name="gh_string" type_code="10">A+B</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1786</X>
<Y>1573</Y>
<W>64</W>
<H>44</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1817</X>
<Y>1595</Y>
</item>
</items>
</chunk>
<chunk name="ParameterData">
<items count="5">
<item name="InputCount" type_name="gh_int32" type_code="3">2</item>
<item name="InputId" index="0" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="InputId" index="1" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputCount" type_name="gh_int32" type_code="3">1</item>
<item name="OutputId" index="0" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
</items>
<chunks count="3">
<chunk name="InputParam" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">First item for addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">bd91b324-b139-4235-80e4-f5e0f3620809</item>
<item name="Name" type_name="gh_string" type_code="10">A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">986c6ad6-35ae-433f-bd24-072861a5425d</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1788</X>
<Y>1575</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1796.5</X>
<Y>1585</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Second item for addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">a87172e3-431e-4ddf-a937-60b5bc804451</item>
<item name="Name" type_name="gh_string" type_code="10">B</item>
<item name="NickName" type_name="gh_string" type_code="10">B</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">91f17ed9-335a-446e-9d6c-b9c687cba0f0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1788</X>
<Y>1595</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1796.5</X>
<Y>1605</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Result of addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ef5b5c46-d28c-4d3d-8719-82ebb12862d2</item>
<item name="Name" type_name="gh_string" type_code="10">Result</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1832</X>
<Y>1575</Y>
<W>16</W>
<H>40</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1840</X>
<Y>1595</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="107">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">a0d62394-a118-422d-abb3-6af115c75b25</item>
<item name="Name" type_name="gh_string" type_code="10">Addition</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Mathematical addition</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c608fbec-5b75-4c4d-b4d8-48a376f3cd5c</item>
<item name="Name" type_name="gh_string" type_code="10">Addition</item>
<item name="NickName" type_name="gh_string" type_code="10">A+B</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1790</X>
<Y>1635</Y>
<W>64</W>
<H>44</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1821</X>
<Y>1657</Y>
</item>
</items>
</chunk>
<chunk name="ParameterData">
<items count="5">
<item name="InputCount" type_name="gh_int32" type_code="3">2</item>
<item name="InputId" index="0" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="InputId" index="1" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputCount" type_name="gh_int32" type_code="3">1</item>
<item name="OutputId" index="0" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
</items>
<chunks count="3">
<chunk name="InputParam" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">First item for addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">bd152880-8e47-4e39-af2c-724b79caa7ea</item>
<item name="Name" type_name="gh_string" type_code="10">A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">2c914091-22c1-40d8-abc1-4ccddd24e6ea</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1792</X>
<Y>1637</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1800.5</X>
<Y>1647</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Second item for addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">2ff8f792-cc71-4183-9cdf-57524cacfb82</item>
<item name="Name" type_name="gh_string" type_code="10">B</item>
<item name="NickName" type_name="gh_string" type_code="10">B</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">0fd09915-ec8a-4a40-989a-123b9e68d06c</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1792</X>
<Y>1657</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1800.5</X>
<Y>1667</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Result of addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">49b19326-ddaa-450c-a91b-d85295831ca1</item>
<item name="Name" type_name="gh_string" type_code="10">Result</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1836</X>
<Y>1637</Y>
<W>16</W>
<H>40</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1844</X>
<Y>1657</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="108">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">3581f42a-9592-4549-bd6b-1c0fc39d067b</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Construct a point from {xyz} coordinates.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">0025b0b3-cd63-4b6e-a883-c991f59c2549</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1994</X>
<Y>1573</Y>
<W>67</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2025</X>
<Y>1605</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{x} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e0588cd2-61aa-4863-98e0-1e9a7f21a1be</item>
<item name="Name" type_name="gh_string" type_code="10">X coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">ef5b5c46-d28c-4d3d-8719-82ebb12862d2</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1996</X>
<Y>1575</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2004.5</X>
<Y>1585</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{y} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">037a8251-883a-40af-a11c-21b9ae0ecb92</item>
<item name="Name" type_name="gh_string" type_code="10">Y coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">49b19326-ddaa-450c-a91b-d85295831ca1</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1996</X>
<Y>1595</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2004.5</X>
<Y>1605</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{z} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">54de041d-38b7-41dc-8680-c6bfa86d9ba3</item>
<item name="Name" type_name="gh_string" type_code="10">Z coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1996</X>
<Y>1615</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2004.5</X>
<Y>1625</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">a8fa466b-7cde-4211-998f-da025b67f6b6</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2040</X>
<Y>1575</Y>
<W>19</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2049.5</X>
<Y>1605</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="109">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">a0d62394-a118-422d-abb3-6af115c75b25</item>
<item name="Name" type_name="gh_string" type_code="10">Addition</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Mathematical addition</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">66ed28c2-e779-444a-9c0b-9bd8f26ea017</item>
<item name="Name" type_name="gh_string" type_code="10">Addition</item>
<item name="NickName" type_name="gh_string" type_code="10">A+B</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2124</X>
<Y>1296</Y>
<W>64</W>
<H>44</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2155</X>
<Y>1318</Y>
</item>
</items>
</chunk>
<chunk name="ParameterData">
<items count="5">
<item name="InputCount" type_name="gh_int32" type_code="3">2</item>
<item name="InputId" index="0" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="InputId" index="1" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputCount" type_name="gh_int32" type_code="3">1</item>
<item name="OutputId" index="0" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
</items>
<chunks count="3">
<chunk name="InputParam" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">First item for addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e86f9ce0-a5ad-4770-854f-f91bc82511aa</item>
<item name="Name" type_name="gh_string" type_code="10">A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">a8fa466b-7cde-4211-998f-da025b67f6b6</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2126</X>
<Y>1298</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2134.5</X>
<Y>1308</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Second item for addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">372d26ca-bd41-418e-9a3f-36c4cb124978</item>
<item name="Name" type_name="gh_string" type_code="10">B</item>
<item name="NickName" type_name="gh_string" type_code="10">B</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">60a1321b-0d85-4215-ac31-f94c7015ccf2</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2126</X>
<Y>1318</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2134.5</X>
<Y>1328</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Result of addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">79d26b1a-d554-4adf-802a-54c1a82df2de</item>
<item name="Name" type_name="gh_string" type_code="10">Result</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2170</X>
<Y>1298</Y>
<W>16</W>
<H>40</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2178</X>
<Y>1318</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="110">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">f12daa2f-4fd5-48c1-8ac3-5dea476912ca</item>
<item name="Name" type_name="gh_string" type_code="10">Mirror</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Mirror an object.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">5caa758f-68a9-4e10-8541-d9dcff111255</item>
<item name="Name" type_name="gh_string" type_code="10">Mirror</item>
<item name="NickName" type_name="gh_string" type_code="10">Mirror</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2176</X>
<Y>1350</Y>
<W>65</W>
<H>44</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2207</X>
<Y>1372</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Base geometry</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c1d5c25c-8138-49ab-bd00-a02680a1f99d</item>
<item name="Name" type_name="gh_string" type_code="10">Geometry</item>
<item name="NickName" type_name="gh_string" type_code="10">G</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">60a1321b-0d85-4215-ac31-f94c7015ccf2</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2178</X>
<Y>1352</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2186.5</X>
<Y>1362</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Mirror plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e3d075b2-072b-47d9-9463-c3aa654ad224</item>
<item name="Name" type_name="gh_string" type_code="10">Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">P</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">48d4eb53-6ad2-481f-8610-55d9944a22c3</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2178</X>
<Y>1372</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2186.5</X>
<Y>1382</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="plane" type_name="gh_plane" type_code="72">
<Ox>0</Ox>
<Oy>0</Oy>
<Oz>0</Oz>
<Xx>0</Xx>
<Xy>1</Xy>
<Xz>0</Xz>
<Yx>0</Yx>
<Yy>0</Yy>
<Yz>1</Yz>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Mirrored geometry</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">bf8b3e5d-d755-43fb-8734-c94ed4d00bba</item>
<item name="Name" type_name="gh_string" type_code="10">Geometry</item>
<item name="NickName" type_name="gh_string" type_code="10">G</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2222</X>
<Y>1352</Y>
<W>17</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2230.5</X>
<Y>1362</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Transformation data</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">4ee0f674-5c0f-410f-b9f6-08a3604b4334</item>
<item name="Name" type_name="gh_string" type_code="10">Transform</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2222</X>
<Y>1372</Y>
<W>17</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2230.5</X>
<Y>1382</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="111">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">fad344bc-09b1-4855-a2e6-437ef5715fe3</item>
<item name="Name" type_name="gh_string" type_code="10">YZ Plane</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">World YZ plane.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">272c02f3-8054-4da2-b750-4109a8b8c37e</item>
<item name="Name" type_name="gh_string" type_code="10">YZ Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">YZ</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2091</X>
<Y>1367</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2122</X>
<Y>1381</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Origin of plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">37e34f49-3112-4952-89a1-4b43e1db22f2</item>
<item name="Name" type_name="gh_string" type_code="10">Origin</item>
<item name="NickName" type_name="gh_string" type_code="10">O</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2093</X>
<Y>1369</Y>
<W>14</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2101.5</X>
<Y>1381</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<!--GH_Point only stores data which exists, test the existence of data fields prior to reading.-->
<items count="1">
<item name="Coordinate" type_name="gh_point3d" type_code="51">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">World YZ plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">48d4eb53-6ad2-481f-8610-55d9944a22c3</item>
<item name="Name" type_name="gh_string" type_code="10">Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">P</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2137</X>
<Y>1369</Y>
<W>16</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2145</X>
<Y>1381</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="112">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">3581f42a-9592-4549-bd6b-1c0fc39d067b</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Construct a point from {xyz} coordinates.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">158a8811-4a85-4636-9d80-bb6a389c6dc5</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1987</X>
<Y>1388</Y>
<W>67</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2018</X>
<Y>1420</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{x} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">9c32aac2-60cd-43ce-8916-e951db46c16d</item>
<item name="Name" type_name="gh_string" type_code="10">X coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">986c6ad6-35ae-433f-bd24-072861a5425d</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1989</X>
<Y>1390</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1997.5</X>
<Y>1400</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{y} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">a95132f4-4546-4352-9af9-19e27eedb3c9</item>
<item name="Name" type_name="gh_string" type_code="10">Y coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">49b19326-ddaa-450c-a91b-d85295831ca1</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1989</X>
<Y>1410</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1997.5</X>
<Y>1420</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{z} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8802bfb6-39ba-40ec-84a0-199a2ccc0b6a</item>
<item name="Name" type_name="gh_string" type_code="10">Z coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1989</X>
<Y>1430</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1997.5</X>
<Y>1440</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">21b1fb4d-d8f9-4dca-a50f-bda44d8d40b3</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2033</X>
<Y>1390</Y>
<W>19</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2042.5</X>
<Y>1420</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="113">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">a0d62394-a118-422d-abb3-6af115c75b25</item>
<item name="Name" type_name="gh_string" type_code="10">Addition</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Mathematical addition</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e0d2b78b-5b2e-48e8-af51-67f77e6fe2e3</item>
<item name="Name" type_name="gh_string" type_code="10">Addition</item>
<item name="NickName" type_name="gh_string" type_code="10">A+B</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2364</X>
<Y>1520</Y>
<W>64</W>
<H>44</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2395</X>
<Y>1542</Y>
</item>
</items>
</chunk>
<chunk name="ParameterData">
<items count="5">
<item name="InputCount" type_name="gh_int32" type_code="3">2</item>
<item name="InputId" index="0" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="InputId" index="1" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputCount" type_name="gh_int32" type_code="3">1</item>
<item name="OutputId" index="0" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
</items>
<chunks count="3">
<chunk name="InputParam" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">First item for addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">06d9a75f-442d-48a1-ace0-8e88067ed67f</item>
<item name="Name" type_name="gh_string" type_code="10">A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">21b1fb4d-d8f9-4dca-a50f-bda44d8d40b3</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2366</X>
<Y>1522</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2374.5</X>
<Y>1532</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Second item for addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">6e986d97-59c1-46d7-8208-3fa2d487fe5c</item>
<item name="Name" type_name="gh_string" type_code="10">B</item>
<item name="NickName" type_name="gh_string" type_code="10">B</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">bf8b3e5d-d755-43fb-8734-c94ed4d00bba</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2366</X>
<Y>1542</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2374.5</X>
<Y>1552</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Result of addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">5b37f206-7db4-44b0-ba0f-6175cec13953</item>
<item name="Name" type_name="gh_string" type_code="10">Result</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2410</X>
<Y>1522</Y>
<W>16</W>
<H>40</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2418</X>
<Y>1542</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="114">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">3581f42a-9592-4549-bd6b-1c0fc39d067b</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Construct a point from {xyz} coordinates.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8ecbb3d6-8916-43ff-9ea1-e19a4fb39844</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1996</X>
<Y>1662</Y>
<W>67</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2027</X>
<Y>1694</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{x} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8e8e1801-b640-4212-9871-fb70a85ac93c</item>
<item name="Name" type_name="gh_string" type_code="10">X coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">ef5b5c46-d28c-4d3d-8719-82ebb12862d2</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1998</X>
<Y>1664</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2006.5</X>
<Y>1674</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{y} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">26f967a7-45e3-4567-8d5b-e583254c129a</item>
<item name="Name" type_name="gh_string" type_code="10">Y coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">2c914091-22c1-40d8-abc1-4ccddd24e6ea</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1998</X>
<Y>1684</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2006.5</X>
<Y>1694</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{z} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">dfcf11d4-ae95-4bcd-afb7-606d1755dc76</item>
<item name="Name" type_name="gh_string" type_code="10">Z coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1998</X>
<Y>1704</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2006.5</X>
<Y>1714</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e825beda-2c01-4b73-b180-297fcfe8bbc3</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2042</X>
<Y>1664</Y>
<W>19</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2051.5</X>
<Y>1694</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="115">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">2c56ab33-c7cc-4129-886c-d5856b714010</item>
<item name="Name" type_name="gh_string" type_code="10">Subtraction</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Mathematical subtraction</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">716d8d38-b0b8-409b-9809-4626eaa49feb</item>
<item name="Name" type_name="gh_string" type_code="10">Subtraction</item>
<item name="NickName" type_name="gh_string" type_code="10">A-B</item>
</items>
<chunks count="4">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2368</X>
<Y>1584</Y>
<W>64</W>
<H>44</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2399</X>
<Y>1606</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Item to subtract from (minuend)</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">1104ec21-7fa5-4dae-af48-1016aa881210</item>
<item name="Name" type_name="gh_string" type_code="10">A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">e825beda-2c01-4b73-b180-297fcfe8bbc3</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2370</X>
<Y>1586</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2378.5</X>
<Y>1596</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Item to subtract (subtrahend)</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">a3acb875-c63e-4a60-8e24-40c0d03aba55</item>
<item name="Name" type_name="gh_string" type_code="10">B</item>
<item name="NickName" type_name="gh_string" type_code="10">B</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">bf8b3e5d-d755-43fb-8734-c94ed4d00bba</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2370</X>
<Y>1606</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2378.5</X>
<Y>1616</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">The result of the Subtraction</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">40a43f7c-5b18-42a9-934b-a3fca8b86584</item>
<item name="Name" type_name="gh_string" type_code="10">Result</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2414</X>
<Y>1586</Y>
<W>16</W>
<H>40</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2422</X>
<Y>1606</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="116">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">fbac3e32-f100-4292-8692-77240a42fd1a</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">Contains a collection of three-dimensional points</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">5c0c8191-e5d5-44d8-9b74-ad7b50095c12</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">40a43f7c-5b18-42a9-934b-a3fca8b86584</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2466</X>
<Y>1587</Y>
<W>50</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2491.524</X>
<Y>1599.556</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="117">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">fbac3e32-f100-4292-8692-77240a42fd1a</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">Contains a collection of three-dimensional points</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">83dc0e24-1c12-445e-8647-dffc452baa6a</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">5b37f206-7db4-44b0-ba0f-6175cec13953</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2464</X>
<Y>1538</Y>
<W>50</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2489.024</X>
<Y>1550.806</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="118">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">fbac3e32-f100-4292-8692-77240a42fd1a</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">Contains a collection of three-dimensional points</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c54e879a-bb6c-47c6-b366-aaa5a16a426a</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">f70a66ec-d9db-496d-9885-4b577f135593</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2387</X>
<Y>1270</Y>
<W>50</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2412.399</X>
<Y>1282.068</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="119">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">fbac3e32-f100-4292-8692-77240a42fd1a</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">Contains a collection of three-dimensional points</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">72b7092f-b51c-4a8b-b457-5cc6f58de91d</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">79d26b1a-d554-4adf-802a-54c1a82df2de</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2387</X>
<Y>1315</Y>
<W>50</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2412.599</X>
<Y>1327.418</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="120">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8526fdb2-be35-4339-84b0-0de9c353ed2c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">3</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2586</X>
<Y>1726</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2586.39</X>
<Y>1726.995</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="121">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">a0d62394-a118-422d-abb3-6af115c75b25</item>
<item name="Name" type_name="gh_string" type_code="10">Addition</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Mathematical addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e9472173-0e76-45e7-b4b3-2d927d4baecc</item>
<item name="Name" type_name="gh_string" type_code="10">Addition</item>
<item name="NickName" type_name="gh_string" type_code="10">A+B</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2663</X>
<Y>1691</Y>
<W>64</W>
<H>44</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2694</X>
<Y>1713</Y>
</item>
</items>
</chunk>
<chunk name="ParameterData">
<items count="5">
<item name="InputCount" type_name="gh_int32" type_code="3">2</item>
<item name="InputId" index="0" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="InputId" index="1" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputCount" type_name="gh_int32" type_code="3">1</item>
<item name="OutputId" index="0" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
</items>
<chunks count="3">
<chunk name="InputParam" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">First item for addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">da0b56ad-280a-4f2a-8298-030632f1527e</item>
<item name="Name" type_name="gh_string" type_code="10">A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">14cc88f5-707d-4e86-a518-ccdcce6ded66</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2665</X>
<Y>1693</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2673.5</X>
<Y>1703</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Second item for addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7467100d-05d3-4ae7-a577-8da37d4b9e55</item>
<item name="Name" type_name="gh_string" type_code="10">B</item>
<item name="NickName" type_name="gh_string" type_code="10">B</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">8526fdb2-be35-4339-84b0-0de9c353ed2c</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2665</X>
<Y>1713</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2673.5</X>
<Y>1723</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Result of addition</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">cd2f5af0-b741-48d5-8bbd-e9695d5278d8</item>
<item name="Name" type_name="gh_string" type_code="10">Result</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2709</X>
<Y>1693</Y>
<W>16</W>
<H>40</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2717</X>
<Y>1713</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="122">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">14cc88f5-707d-4e86-a518-ccdcce6ded66</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">Peak Height</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2372</X>
<Y>1693</Y>
<W>263</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2372.275</X>
<Y>1693.369</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">1</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">72</item>
<item name="Min" type_name="gh_double" type_code="6">0</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">44</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="123">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">9103c240-a6a9-4223-9b42-dbd19bf38e2b</item>
<item name="Name" type_name="gh_string" type_code="10">Unit Z</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Unit vector parallel to the world {z} axis.</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c51aaec6-9bc7-40d7-ab2d-705fd2e20e1e</item>
<item name="Name" type_name="gh_string" type_code="10">Unit Z</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2553</X>
<Y>1260</Y>
<W>62</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2582</X>
<Y>1274</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Unit multiplication</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">2414a112-d958-411b-b27f-8cdf9d0d2480</item>
<item name="Name" type_name="gh_string" type_code="10">Factor</item>
<item name="NickName" type_name="gh_string" type_code="10">F</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2555</X>
<Y>1262</Y>
<W>12</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2562.5</X>
<Y>1274</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">1</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">World {z} vector</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">fdc6f14b-d2af-4143-9fa5-98d72e1496f4</item>
<item name="Name" type_name="gh_string" type_code="10">Unit vector</item>
<item name="NickName" type_name="gh_string" type_code="10">V</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2597</X>
<Y>1262</Y>
<W>16</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2605</X>
<Y>1274</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="124">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">934ede4a-924a-4973-bb05-0dc4b36fae75</item>
<item name="Name" type_name="gh_string" type_code="10">Vector 2Pt</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Create a vector between two points.</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">361f13b0-f722-496a-b487-cfffdce2f9cb</item>
<item name="Name" type_name="gh_string" type_code="10">Vector 2Pt</item>
<item name="NickName" type_name="gh_string" type_code="10">Vec2Pt</item>
</items>
<chunks count="6">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2548</X>
<Y>1387</Y>
<W>64</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2579</X>
<Y>1419</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">Base point</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">5e0ee3e7-7ca6-486b-a276-9290daec2c1d</item>
<item name="Name" type_name="gh_string" type_code="10">Point A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">c54e879a-bb6c-47c6-b366-aaa5a16a426a</item>
<item name="Source" index="1" type_name="gh_guid" type_code="9">83dc0e24-1c12-445e-8647-dffc452baa6a</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">2</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2550</X>
<Y>1389</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2558.5</X>
<Y>1399</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">Tip point</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">69e066b8-5497-4517-9782-d03091f32b49</item>
<item name="Name" type_name="gh_string" type_code="10">Point B</item>
<item name="NickName" type_name="gh_string" type_code="10">B</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">72b7092f-b51c-4a8b-b457-5cc6f58de91d</item>
<item name="Source" index="1" type_name="gh_guid" type_code="9">5c0c8191-e5d5-44d8-9b74-ad7b50095c12</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">2</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2550</X>
<Y>1409</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2558.5</X>
<Y>1419</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Unitize output</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e01e96a4-176c-42b4-baed-01d2da98668f</item>
<item name="Name" type_name="gh_string" type_code="10">Unitize</item>
<item name="NickName" type_name="gh_string" type_code="10">U</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2550</X>
<Y>1429</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2558.5</X>
<Y>1439</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="boolean" type_name="gh_bool" type_code="1">false</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Vector</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">a09f5810-c5e6-41cf-a732-76ade1d918e1</item>
<item name="Name" type_name="gh_string" type_code="10">Vector</item>
<item name="NickName" type_name="gh_string" type_code="10">V</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2594</X>
<Y>1389</Y>
<W>16</W>
<H>30</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2602</X>
<Y>1404</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Vector length</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">15154730-ac41-4df7-abd3-5125f66ed008</item>
<item name="Name" type_name="gh_string" type_code="10">Length</item>
<item name="NickName" type_name="gh_string" type_code="10">L</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2594</X>
<Y>1419</Y>
<W>16</W>
<H>30</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2602</X>
<Y>1434</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="125">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">bc3e379e-7206-4e7b-b63a-ff61f4b38a3e</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Plane</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">Construct a plane from an origin point and {x}, {y} axes.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">1b6a1009-88b9-418a-8918-f95aabbb1c52</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">Pl</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2674</X>
<Y>1295</Y>
<W>66</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2705</X>
<Y>1327</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">Origin of plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7a695424-f044-41a8-9bf1-a2cbf28cc226</item>
<item name="Name" type_name="gh_string" type_code="10">Origin</item>
<item name="NickName" type_name="gh_string" type_code="10">O</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">c54e879a-bb6c-47c6-b366-aaa5a16a426a</item>
<item name="Source" index="1" type_name="gh_guid" type_code="9">83dc0e24-1c12-445e-8647-dffc452baa6a</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">2</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2676</X>
<Y>1297</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2684.5</X>
<Y>1307</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<!--GH_Point only stores data which exists, test the existence of data fields prior to reading.-->
<items count="1">
<item name="Coordinate" type_name="gh_point3d" type_code="51">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">X-Axis direction of plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c61582e5-1354-459b-babb-382f6952792a</item>
<item name="Name" type_name="gh_string" type_code="10">X-Axis</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">a09f5810-c5e6-41cf-a732-76ade1d918e1</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2676</X>
<Y>1317</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2684.5</X>
<Y>1327</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="vector" type_name="gh_point3d" type_code="51">
<X>1</X>
<Y>0</Y>
<Z>0</Z>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Y-Axis direction of plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ec988c3e-fd2b-4d2b-aa6a-5e3a9c15a503</item>
<item name="Name" type_name="gh_string" type_code="10">Y-Axis</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">fdc6f14b-d2af-4143-9fa5-98d72e1496f4</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2676</X>
<Y>1337</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2684.5</X>
<Y>1347</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="vector" type_name="gh_point3d" type_code="51">
<X>0</X>
<Y>1</Y>
<Z>0</Z>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Constructed plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f5ef3118-8c76-4765-bdd9-16087c3ebb2d</item>
<item name="Name" type_name="gh_string" type_code="10">Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">Pl</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2720</X>
<Y>1297</Y>
<W>18</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2729</X>
<Y>1327</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="126">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">079bd9bd-54a0-41d4-98af-db999015f63d</item>
<item name="Name" type_name="gh_string" type_code="10">VB Script</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="10">
<item name="AdditionalSource" type_name="gh_string" type_code="10"> 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 &gt; -1 Then
Return Component.Params.Input.ElementAt(i).DataType &gt; 1 ' input parameter DataType of 1 means it's not receiving input (internal or external)
Else
Msg("error", "Input parameter '" &amp; param &amp; "' 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: " &amp; msg)
Case "warning"
Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, msg)
Print("Warning: " &amp; 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 &gt;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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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 &gt;MAXIT)
Dim lower As Double = 0 ' m must be within this range
Dim upper As Double = 1
Dim twoWidths As Boolean = h / L &gt;= Defined.DOUBLE_W_HL_RATIO And h / L &lt; 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &gt; 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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 &lt;= 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &gt; 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 &gt;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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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) &gt;= 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 &amp; 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 &lt;&gt; 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</item>
<item name="Description" type_name="gh_string" type_code="10">A VB.NET scriptable component</item>
<item name="EditorPosition" type_name="gh_drawing_point" type_code="30">
<X>98</X>
<Y>86</Y>
</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">efeac80e-aaa9-43ef-acff-f0dc08a37ca1</item>
<item name="Name" type_name="gh_string" type_code="10">VB Script</item>
<item name="NickName" type_name="gh_string" type_code="10">VB</item>
<item name="OutParameter" type_name="gh_bool" type_code="1">true</item>
<item name="ReferenceCount" type_name="gh_int32" type_code="3">0</item>
<item name="ScriptSource" type_name="gh_string" type_code="10"> ' -----------------------------------------------------------------
' 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 &lt; 10), you might have to increase the constant ROUNDTO at the bottom
'
' REFERENCES:
' {1} "The elastic rod" by M.E. Pacheco Q. &amp; 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 &gt; 0
' Wid - Width between the endpoints of the curve [note: if PtB is specified in addition, and distance between PtA and PtB &lt;&gt; 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 &amp; 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 &amp; 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 &amp; Bernoulli (the O.G.'s)
'
' -----------------------------------------------------------------
Dim ignoreSelfIntersecting As Boolean = False ' set to True if you don't want to output curves where width &lt; 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) &lt;&gt; 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) &lt;&gt; 0 Then
Msg("error", "Point B is not on the base plane")
Return
End If
AtoB = New Line(PtA, PtB)
If AtoB.Length &lt;&gt; 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 &lt; 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 &gt; 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 &lt;= 0 Then
Msg("error", "Length cannot be negative or zero")
Return
End If
If IsSet("Wid") Then ' find height &amp; angle based on length and specified width
If Wid &gt; 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 &amp; angle based on length and calculated width (distance between PtA and PtB)
If width &gt; 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 &amp; angle based on length and height ** possible to return 2 results **
If Math.Abs(Ht / Len) &gt; Defined.MAX_HL_RATIO Then
Msg("error", "Height not possible with given length")
Return
End If
If Ht &lt; 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 &amp; 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 &amp; height based on length and angle
If Ang &lt; 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 &amp; angle based on specified width and height
If Ht &lt; 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 &amp; 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 &lt; 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 &lt; 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 &amp; angle based on calculated width and height
If Ht &lt; 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 &amp; 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 &lt; 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 &lt; 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 &amp; width based on height and angle
If Ht &lt; 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 &lt; 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 &gt; 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 &gt; 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 &lt; 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 &gt;= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve whose width = " &amp; Math.Round(width, 4) &amp; " 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=" &amp; length &amp; ", width=" &amp; width &amp; ", height=" &amp; height &amp; ", angle=" &amp; angle &amp; ", m=" &amp; m_val &amp; ", k=" &amp; Math.Sqrt(m_val) &amp; ", w/L=" &amp; width / length &amp; ", h/L=" &amp; height / length &amp; ", w/h=" &amp; 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 &gt;= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve at these parameters is not guaranteed")
If width &lt; 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=" &amp; length &amp; ", width=" &amp; width &amp; ", height=" &amp; height &amp; ", angle=" &amp; angle &amp; ", m=" &amp; m &amp; ", k=" &amp; Math.Sqrt(m) &amp; ", w/L=" &amp; width / length &amp; ", h/L=" &amp; height / length &amp; ", w/h=" &amp; width / height)
End If
</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2806</X>
<Y>1380</Y>
<W>84</W>
<H>184</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2848</X>
<Y>1472</Y>
</item>
</items>
</chunk>
<chunk name="ParameterData">
<items count="19">
<item name="InputCount" type_name="gh_int32" type_code="3">9</item>
<item name="InputId" index="0" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="1" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="2" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="3" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="4" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="5" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="6" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="7" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="8" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="OutputCount" type_name="gh_int32" type_code="3">8</item>
<item name="OutputId" index="0" type_name="gh_guid" type_code="9">3ede854e-c753-40eb-84cb-b48008f14fd4</item>
<item name="OutputId" index="1" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="2" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="3" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="4" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="5" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="6" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="7" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
</items>
<chunks count="17">
<chunk name="InputParam" index="0">
<items count="12">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable PtA</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">89fe7d9c-b998-43b5-8788-30064fd07e47</item>
<item name="Name" type_name="gh_string" type_code="10">PtA</item>
<item name="NickName" type_name="gh_string" type_code="10">PtA</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">c54e879a-bb6c-47c6-b366-aaa5a16a426a</item>
<item name="Source" index="1" type_name="gh_guid" type_code="9">83dc0e24-1c12-445e-8647-dffc452baa6a</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">2</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">e1937b56-b1da-4c12-8bd8-e34ee81746ef</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2808</X>
<Y>1382</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2822</X>
<Y>1392</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="1">
<items count="12">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable PtB</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">d6635d82-91c7-476c-acf5-3f2feae5d91b</item>
<item name="Name" type_name="gh_string" type_code="10">PtB</item>
<item name="NickName" type_name="gh_string" type_code="10">PtB</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">72b7092f-b51c-4a8b-b457-5cc6f58de91d</item>
<item name="Source" index="1" type_name="gh_guid" type_code="9">5c0c8191-e5d5-44d8-9b74-ad7b50095c12</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">2</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">e1937b56-b1da-4c12-8bd8-e34ee81746ef</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2808</X>
<Y>1402</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2822</X>
<Y>1412</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="2">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Pln</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8a5ea10d-8baa-47cd-8970-989b44d90853</item>
<item name="Name" type_name="gh_string" type_code="10">Pln</item>
<item name="NickName" type_name="gh_string" type_code="10">Pln</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">f5ef3118-8c76-4765-bdd9-16087c3ebb2d</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">3897522d-58e9-4d60-b38c-978ddacfedd8</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2808</X>
<Y>1422</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2822</X>
<Y>1432</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="3">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Len</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">4adfaa55-4523-43d7-9887-fcfc9daa5d32</item>
<item name="Name" type_name="gh_string" type_code="10">Len</item>
<item name="NickName" type_name="gh_string" type_code="10">Len</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2808</X>
<Y>1442</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2822</X>
<Y>1452</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="4">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Wid</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8d352101-30bc-4590-8ef7-3bebef383668</item>
<item name="Name" type_name="gh_string" type_code="10">Wid</item>
<item name="NickName" type_name="gh_string" type_code="10">Wid</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2808</X>
<Y>1462</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2822</X>
<Y>1472</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="5">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Ht</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ed97f943-b85a-4bc0-84db-64b077475aca</item>
<item name="Name" type_name="gh_string" type_code="10">Ht</item>
<item name="NickName" type_name="gh_string" type_code="10">Ht</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">cd2f5af0-b741-48d5-8bbd-e9695d5278d8</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2808</X>
<Y>1482</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2822</X>
<Y>1492</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="6">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Ang</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c30d75f7-bb99-4be5-88aa-f992b8386696</item>
<item name="Name" type_name="gh_string" type_code="10">Ang</item>
<item name="NickName" type_name="gh_string" type_code="10">Ang</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2808</X>
<Y>1502</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2822</X>
<Y>1512</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="7">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable E</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">33bfc033-c0d3-4ebb-a5b0-659df3a0b51e</item>
<item name="Name" type_name="gh_string" type_code="10">E</item>
<item name="NickName" type_name="gh_string" type_code="10">E</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2808</X>
<Y>1522</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2822</X>
<Y>1532</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="8">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable I</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">66f1e54b-d2c1-43dd-8716-e6fa7a1ddeca</item>
<item name="Name" type_name="gh_string" type_code="10">I</item>
<item name="NickName" type_name="gh_string" type_code="10">I</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2808</X>
<Y>1542</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2822</X>
<Y>1552</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="0">
<items count="7">
<item name="Access" type_name="gh_int32" type_code="3">1</item>
<item name="Description" type_name="gh_string" type_code="10">Print, Reflect and Error streams</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">be85f9e8-bde2-44f9-9bb8-80b1010c9d68</item>
<item name="Name" type_name="gh_string" type_code="10">out</item>
<item name="NickName" type_name="gh_string" type_code="10">out</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2863</X>
<Y>1382</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2875.5</X>
<Y>1393.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter Pts</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">bacf233a-c717-41ce-b241-8552418f09f9</item>
<item name="Name" type_name="gh_string" type_code="10">Pts</item>
<item name="NickName" type_name="gh_string" type_code="10">Pts</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2863</X>
<Y>1404</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2875.5</X>
<Y>1415.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter Crv</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">4fa97325-f527-43c0-a006-78cf944c5e40</item>
<item name="Name" type_name="gh_string" type_code="10">Crv</item>
<item name="NickName" type_name="gh_string" type_code="10">Crv</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2863</X>
<Y>1427</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2875.5</X>
<Y>1438.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="3">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter L</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b9ed95d2-8f4a-49e9-a734-c73e21c200b4</item>
<item name="Name" type_name="gh_string" type_code="10">L</item>
<item name="NickName" type_name="gh_string" type_code="10">L</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2863</X>
<Y>1449</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2875.5</X>
<Y>1460.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="4">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter W</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">264cbae0-f043-490d-9121-0e45630a0b2f</item>
<item name="Name" type_name="gh_string" type_code="10">W</item>
<item name="NickName" type_name="gh_string" type_code="10">W</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2863</X>
<Y>1472</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2875.5</X>
<Y>1483.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="5">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter H</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">1578bf3a-8211-4a77-85d0-3cd951789283</item>
<item name="Name" type_name="gh_string" type_code="10">H</item>
<item name="NickName" type_name="gh_string" type_code="10">H</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2863</X>
<Y>1494</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2875.5</X>
<Y>1505.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="6">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter A</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">97c17859-cbbf-4962-a448-d8665c3e706a</item>
<item name="Name" type_name="gh_string" type_code="10">A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2863</X>
<Y>1517</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2875.5</X>
<Y>1528.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="7">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter F</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8f3ba33f-2383-4ae9-b911-b9b6e4553a35</item>
<item name="Name" type_name="gh_string" type_code="10">F</item>
<item name="NickName" type_name="gh_string" type_code="10">F</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2863</X>
<Y>1539</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2875.5</X>
<Y>1550.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="127">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">c277f778-6fdf-4890-8f78-347efb23c406</item>
<item name="Name" type_name="gh_string" type_code="10">Pipe</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Create a pipe surface around a rail curve.</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">a18b4542-f317-4532-9634-9ef245df4e2c</item>
<item name="Name" type_name="gh_string" type_code="10">Pipe</item>
<item name="NickName" type_name="gh_string" type_code="10">Pipe</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>3076</X>
<Y>1319</Y>
<W>64</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>3107</X>
<Y>1351</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Base curve</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">9be76020-39f2-465f-b508-f09d3f48a425</item>
<item name="Name" type_name="gh_string" type_code="10">Curve</item>
<item name="NickName" type_name="gh_string" type_code="10">C</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">4fa97325-f527-43c0-a006-78cf944c5e40</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>3078</X>
<Y>1321</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>3086.5</X>
<Y>1331</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Pipe radius</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">0f317bff-3048-480b-865a-13a2e1cb5106</item>
<item name="Name" type_name="gh_string" type_code="10">Radius</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">f2abb0db-802c-4f59-83cb-393711b4a3d9</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>3078</X>
<Y>1341</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>3086.5</X>
<Y>1351</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">1</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Specifies the type of caps (0=None, 1=Flat, 2=Round)</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">38981e04-97f9-4736-a46b-c55825f5b8fe</item>
<item name="Name" type_name="gh_string" type_code="10">Caps</item>
<item name="NickName" type_name="gh_string" type_code="10">E</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>3078</X>
<Y>1361</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>3086.5</X>
<Y>1371</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_int32" type_code="3">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="7">
<item name="Access" type_name="gh_int32" type_code="3">1</item>
<item name="Description" type_name="gh_string" type_code="10">Resulting Pipe</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">d118f269-0338-4d1d-b06d-018819a25f1a</item>
<item name="Name" type_name="gh_string" type_code="10">Pipe</item>
<item name="NickName" type_name="gh_string" type_code="10">P</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>3122</X>
<Y>1321</Y>
<W>16</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>3130</X>
<Y>1351</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="128">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f2abb0db-802c-4f59-83cb-393711b4a3d9</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">.25</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2955</X>
<Y>1314</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2955.289</X>
<Y>1314.952</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="129">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">26ed0e55-cf0a-436e-9447-805704984e62</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">087cd096-ba72-4a81-a462-a9ce3ce43ec4</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>3045</X>
<Y>1553</Y>
<W>105</W>
<H>55</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>3045.485</X>
<Y>1553.607</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="130">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">0d77c51e-584f-44e8-aed2-c2ddf4803888</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Convert an angle specified in radians to degrees</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">bb620c76-8624-412c-8f17-4aa82e09f1b9</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
<item name="NickName" type_name="gh_string" type_code="10">Deg</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2955</X>
<Y>1562</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2985</X>
<Y>1576</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Angle in radians</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">e10ae9f2-834e-4fd3-afbb-6416a8f9ca28</item>
<item name="Name" type_name="gh_string" type_code="10">Radians</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">97c17859-cbbf-4962-a448-d8665c3e706a</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2957</X>
<Y>1564</Y>
<W>13</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2965</X>
<Y>1576</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Angle in degrees</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">087cd096-ba72-4a81-a462-a9ce3ce43ec4</item>
<item name="Name" type_name="gh_string" type_code="10">Degrees</item>
<item name="NickName" type_name="gh_string" type_code="10">D</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>3000</X>
<Y>1564</Y>
<W>17</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>3008.5</X>
<Y>1576</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="131">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">4ddb17a4-9e5f-4fb4-9f06-84399d240517</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">b9ed95d2-8f4a-49e9-a734-c73e21c200b4</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2941</X>
<Y>1424</Y>
<W>97</W>
<H>54</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2941.968</X>
<Y>1424.592</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="132">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">97a1d833-23ef-4dd7-a8f6-0467955bf4f5</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">264cbae0-f043-490d-9121-0e45630a0b2f</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>3053</X>
<Y>1458</Y>
<W>105</W>
<H>55</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>3053.527</X>
<Y>1458.041</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="133">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="9">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8e36a5c6-61f4-4366-8856-2c787fd9a806</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">1578bf3a-8211-4a77-85d0-3cd951789283</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="UserText" type_name="gh_string" type_code="10">Double click to edit panel content…</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2941</X>
<Y>1493</Y>
<W>97</W>
<H>55</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2941.552</X>
<Y>1493.67</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="134">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">0903a6c2-e102-41a9-8326-3f9533f91f9f</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">-150</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1440</X>
<Y>1185</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1440.106</X>
<Y>1185.658</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="135">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">17a61eca-a95a-4f8b-aa55-052523e686bc</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">150</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1441</X>
<Y>1215</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1441.106</X>
<Y>1215.658</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="136">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">d1a28e95-cf96-4936-bf34-8bf142d731bf</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Domain</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Create a numeric domain from two numeric extremes.</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">14534673-98f6-45e8-b11f-39da628bc4ca</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Domain</item>
<item name="NickName" type_name="gh_string" type_code="10">Dom</item>
</items>
<chunks count="4">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2193</X>
<Y>764</Y>
<W>61</W>
<H>44</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2224</X>
<Y>786</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Start value of numeric domain</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c60598bb-4ac8-4310-9f9f-0d75cea21cfe</item>
<item name="Name" type_name="gh_string" type_code="10">Domain start</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">64b83d9b-5ae1-4022-b79e-c9135d3cdfc6</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2195</X>
<Y>766</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2203.5</X>
<Y>776</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">End value of numeric domain</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c4f2cdcf-3ac3-420a-925f-c2653c042270</item>
<item name="Name" type_name="gh_string" type_code="10">Domain end</item>
<item name="NickName" type_name="gh_string" type_code="10">B</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">2398bd00-b514-4723-b31f-c436e1ae908b</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2195</X>
<Y>786</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2203.5</X>
<Y>796</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">1</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric domain between {A} and {B}</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">035d494c-d9fa-434d-874c-206716be82af</item>
<item name="Name" type_name="gh_string" type_code="10">Domain</item>
<item name="NickName" type_name="gh_string" type_code="10">I</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2239</X>
<Y>766</Y>
<W>13</W>
<H>40</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2245.5</X>
<Y>786</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="137">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">9445ca40-cc73-4861-a455-146308676855</item>
<item name="Name" type_name="gh_string" type_code="10">Range</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Create a range of numbers.</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">fbb4ab09-bb2a-42d6-a9a9-345b5f2473bc</item>
<item name="Name" type_name="gh_string" type_code="10">Range</item>
<item name="NickName" type_name="gh_string" type_code="10">Range</item>
</items>
<chunks count="4">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2295</X>
<Y>775</Y>
<W>64</W>
<H>44</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2326</X>
<Y>797</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Domain of numeric range</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">0dd6e136-7641-43ed-94ff-d87c8b3a4a7f</item>
<item name="Name" type_name="gh_string" type_code="10">Domain</item>
<item name="NickName" type_name="gh_string" type_code="10">D</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">035d494c-d9fa-434d-874c-206716be82af</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2297</X>
<Y>777</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2305.5</X>
<Y>787</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="Interval" type_name="gh_interval1d" type_code="60">
<A>0</A>
<B>1</B>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Number of steps</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b991e2eb-aa24-4a37-b83b-4de89b217793</item>
<item name="Name" type_name="gh_string" type_code="10">Steps</item>
<item name="NickName" type_name="gh_string" type_code="10">N</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">cc8db470-d2c6-4bbc-92b0-9305165143f7</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2297</X>
<Y>797</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2305.5</X>
<Y>807</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_int32" type_code="3">10</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="7">
<item name="Access" type_name="gh_int32" type_code="3">1</item>
<item name="Description" type_name="gh_string" type_code="10">Range of numbers</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">9b2fc3d6-5abb-46f8-a49e-0ae9e8dc1647</item>
<item name="Name" type_name="gh_string" type_code="10">Range</item>
<item name="NickName" type_name="gh_string" type_code="10">R</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2341</X>
<Y>777</Y>
<W>16</W>
<H>40</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2349</X>
<Y>797</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="138">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">cc8db470-d2c6-4bbc-92b0-9305165143f7</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">num curves</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1969</X>
<Y>831</Y>
<W>284</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1969.186</X>
<Y>831.0843</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">0</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">400</item>
<item name="Min" type_name="gh_double" type_code="6">1</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">200</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="139">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">079bd9bd-54a0-41d4-98af-db999015f63d</item>
<item name="Name" type_name="gh_string" type_code="10">VB Script</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="10">
<item name="AdditionalSource" type_name="gh_string" type_code="10"> 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 &gt; -1 Then
Return Component.Params.Input.ElementAt(i).DataType &gt; 1 ' input parameter DataType of 1 means it's not receiving input (internal or external)
Else
Msg("error", "Input parameter '" &amp; param &amp; "' 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: " &amp; msg)
Case "warning"
Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, msg)
Print("Warning: " &amp; 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 &gt;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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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 &gt;MAXIT)
Dim lower As Double = 0 ' m must be within this range
Dim upper As Double = 1
Dim twoWidths As Boolean = h / L &gt;= Defined.DOUBLE_W_HL_RATIO And h / L &lt; 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &gt; 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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 &lt;= 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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &gt; 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 &gt;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) &gt; Defined.MAXERR AndAlso (n) &lt; 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 &lt; 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) &gt;= 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 &amp; 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 &lt;&gt; 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</item>
<item name="Description" type_name="gh_string" type_code="10">A VB.NET scriptable component</item>
<item name="EditorPosition" type_name="gh_drawing_point" type_code="30">
<X>98</X>
<Y>86</Y>
</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">63218c71-7758-4168-b163-745e456fb525</item>
<item name="Name" type_name="gh_string" type_code="10">VB Script</item>
<item name="NickName" type_name="gh_string" type_code="10">VB</item>
<item name="OutParameter" type_name="gh_bool" type_code="1">true</item>
<item name="ReferenceCount" type_name="gh_int32" type_code="3">0</item>
<item name="ScriptSource" type_name="gh_string" type_code="10"> ' -----------------------------------------------------------------
' 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 &lt; 10), you might have to increase the constant ROUNDTO at the bottom
'
' REFERENCES:
' {1} "The elastic rod" by M.E. Pacheco Q. &amp; 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 &gt; 0
' Wid - Width between the endpoints of the curve [note: if PtB is specified in addition, and distance between PtA and PtB &lt;&gt; 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 &amp; 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 &amp; 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 &amp; Bernoulli (the O.G.'s)
'
' -----------------------------------------------------------------
Dim ignoreSelfIntersecting As Boolean = False ' set to True if you don't want to output curves where width &lt; 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) &lt;&gt; 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) &lt;&gt; 0 Then
Msg("error", "Point B is not on the base plane")
Return
End If
AtoB = New Line(PtA, PtB)
If AtoB.Length &lt;&gt; 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 &lt; 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 &gt; 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 &lt;= 0 Then
Msg("error", "Length cannot be negative or zero")
Return
End If
If IsSet("Wid") Then ' find height &amp; angle based on length and specified width
If Wid &gt; 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 &amp; angle based on length and calculated width (distance between PtA and PtB)
If width &gt; 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 &amp; angle based on length and height ** possible to return 2 results **
If Math.Abs(Ht / Len) &gt; Defined.MAX_HL_RATIO Then
Msg("error", "Height not possible with given length")
Return
End If
If Ht &lt; 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 &amp; 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 &amp; height based on length and angle
If Ang &lt; 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 &amp; angle based on specified width and height
If Ht &lt; 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 &amp; 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 &lt; 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 &lt; 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 &amp; angle based on calculated width and height
If Ht &lt; 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 &amp; 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 &lt; 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 &lt; 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 &amp; width based on height and angle
If Ht &lt; 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 &lt; 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 &gt; 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 &gt; 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 &lt; 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 &gt;= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve whose width = " &amp; Math.Round(width, 4) &amp; " 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=" &amp; length &amp; ", width=" &amp; width &amp; ", height=" &amp; height &amp; ", angle=" &amp; angle &amp; ", m=" &amp; m_val &amp; ", k=" &amp; Math.Sqrt(m_val) &amp; ", w/L=" &amp; width / length &amp; ", h/L=" &amp; height / length &amp; ", w/h=" &amp; 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 &gt;= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve at these parameters is not guaranteed")
If width &lt; 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=" &amp; length &amp; ", width=" &amp; width &amp; ", height=" &amp; height &amp; ", angle=" &amp; angle &amp; ", m=" &amp; m &amp; ", k=" &amp; Math.Sqrt(m) &amp; ", w/L=" &amp; width / length &amp; ", h/L=" &amp; height / length &amp; ", w/h=" &amp; width / height)
End If
</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2397</X>
<Y>703</Y>
<W>84</W>
<H>184</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2439</X>
<Y>795</Y>
</item>
</items>
</chunk>
<chunk name="ParameterData">
<items count="19">
<item name="InputCount" type_name="gh_int32" type_code="3">9</item>
<item name="InputId" index="0" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="1" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="2" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="3" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="4" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="5" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="6" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="7" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="InputId" index="8" type_name="gh_guid" type_code="9">84fa917c-1ed8-4db3-8be1-7bdc4a6495a2</item>
<item name="OutputCount" type_name="gh_int32" type_code="3">8</item>
<item name="OutputId" index="0" type_name="gh_guid" type_code="9">3ede854e-c753-40eb-84cb-b48008f14fd4</item>
<item name="OutputId" index="1" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="2" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="3" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="4" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="5" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="6" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
<item name="OutputId" index="7" type_name="gh_guid" type_code="9">8ec86459-bf01-4409-baee-174d0d2b13d0</item>
</items>
<chunks count="17">
<chunk name="InputParam" index="0">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable PtA</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c36c2a91-b586-4100-a3d3-5bbd29795b28</item>
<item name="Name" type_name="gh_string" type_code="10">PtA</item>
<item name="NickName" type_name="gh_string" type_code="10">PtA</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">75154365-a588-4c21-86a3-ce81e626861d</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">e1937b56-b1da-4c12-8bd8-e34ee81746ef</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2399</X>
<Y>705</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2413</X>
<Y>715</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="1">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable PtB</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c03912a8-42cd-4a8e-b0e4-d859c1258a99</item>
<item name="Name" type_name="gh_string" type_code="10">PtB</item>
<item name="NickName" type_name="gh_string" type_code="10">PtB</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">e1937b56-b1da-4c12-8bd8-e34ee81746ef</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2399</X>
<Y>725</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2413</X>
<Y>735</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="2">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Pln</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f51b86ed-0366-4427-847a-63fd2fd6bf90</item>
<item name="Name" type_name="gh_string" type_code="10">Pln</item>
<item name="NickName" type_name="gh_string" type_code="10">Pln</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">f3933593-ac71-4dcf-9de1-01828b79508a</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">3897522d-58e9-4d60-b38c-978ddacfedd8</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2399</X>
<Y>745</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2413</X>
<Y>755</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="3">
<items count="11">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Len</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7ea941b6-d28a-421f-a3f1-b6ee6ba45ce3</item>
<item name="Name" type_name="gh_string" type_code="10">Len</item>
<item name="NickName" type_name="gh_string" type_code="10">Len</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">2398bd00-b514-4723-b31f-c436e1ae908b</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2399</X>
<Y>765</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2413</X>
<Y>775</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="4">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Wid</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ca56b21d-1bf4-4ef7-9aba-89e8c40123e1</item>
<item name="Name" type_name="gh_string" type_code="10">Wid</item>
<item name="NickName" type_name="gh_string" type_code="10">Wid</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2399</X>
<Y>785</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2413</X>
<Y>795</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="5">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Ht</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">01f793d6-6952-4cc0-9007-804b34e3573a</item>
<item name="Name" type_name="gh_string" type_code="10">Ht</item>
<item name="NickName" type_name="gh_string" type_code="10">Ht</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2399</X>
<Y>805</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2413</X>
<Y>815</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="6">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable Ang</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">d1ecc6ce-5745-410a-98ac-8cd99da220f9</item>
<item name="Name" type_name="gh_string" type_code="10">Ang</item>
<item name="NickName" type_name="gh_string" type_code="10">Ang</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2399</X>
<Y>825</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2413</X>
<Y>835</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="7">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable E</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">ee84edc7-8985-4013-a1da-ab406c4a251b</item>
<item name="Name" type_name="gh_string" type_code="10">E</item>
<item name="NickName" type_name="gh_string" type_code="10">E</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2399</X>
<Y>845</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2413</X>
<Y>855</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="InputParam" index="8">
<items count="10">
<item name="AllowTreeAccess" type_name="gh_bool" type_code="1">true</item>
<item name="Description" type_name="gh_string" type_code="10">Script Variable I</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">06df9652-281a-4459-91a6-57c181550607</item>
<item name="Name" type_name="gh_string" type_code="10">I</item>
<item name="NickName" type_name="gh_string" type_code="10">I</item>
<item name="Optional" type_name="gh_bool" type_code="1">true</item>
<item name="ScriptParamAccess" type_name="gh_int32" type_code="3">0</item>
<item name="ShowTypeHints" type_name="gh_bool" type_code="1">true</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="TypeHintID" type_name="gh_guid" type_code="9">8e991e99-5fb8-41e1-928d-1bba8fb9f7d7</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2399</X>
<Y>865</Y>
<W>25</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2413</X>
<Y>875</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="0">
<items count="7">
<item name="Access" type_name="gh_int32" type_code="3">1</item>
<item name="Description" type_name="gh_string" type_code="10">Print, Reflect and Error streams</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c01c7c67-2ce9-42db-98c8-ac53917d2607</item>
<item name="Name" type_name="gh_string" type_code="10">out</item>
<item name="NickName" type_name="gh_string" type_code="10">out</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2454</X>
<Y>705</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2466.5</X>
<Y>716.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter Pts</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">03112bf2-28fb-457f-b3d5-277c7e00bc21</item>
<item name="Name" type_name="gh_string" type_code="10">Pts</item>
<item name="NickName" type_name="gh_string" type_code="10">Pts</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2454</X>
<Y>727</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2466.5</X>
<Y>738.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter Crv</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">49ed72a9-4d6b-4881-ac0f-b8700f17fd26</item>
<item name="Name" type_name="gh_string" type_code="10">Crv</item>
<item name="NickName" type_name="gh_string" type_code="10">Crv</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2454</X>
<Y>750</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2466.5</X>
<Y>761.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="3">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter L</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">88bfd5c3-b1ad-4215-961b-9ab638f2cfd6</item>
<item name="Name" type_name="gh_string" type_code="10">L</item>
<item name="NickName" type_name="gh_string" type_code="10">L</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2454</X>
<Y>772</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2466.5</X>
<Y>783.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="4">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter W</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">5419ee09-aef9-46c4-abed-2d8045ba1ca7</item>
<item name="Name" type_name="gh_string" type_code="10">W</item>
<item name="NickName" type_name="gh_string" type_code="10">W</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2454</X>
<Y>795</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2466.5</X>
<Y>806.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="5">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter H</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b01ed3c0-f6fa-4b63-bd7e-3eef2c0d55a4</item>
<item name="Name" type_name="gh_string" type_code="10">H</item>
<item name="NickName" type_name="gh_string" type_code="10">H</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2454</X>
<Y>817</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2466.5</X>
<Y>828.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="6">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter A</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">7adf1044-78f7-4bcc-874b-e500d7bbbd0d</item>
<item name="Name" type_name="gh_string" type_code="10">A</item>
<item name="NickName" type_name="gh_string" type_code="10">A</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2454</X>
<Y>840</Y>
<W>25</W>
<H>22</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2466.5</X>
<Y>851.25</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
<chunk name="OutputParam" index="7">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Output parameter F</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">06232a84-6a80-4dfa-8393-98b404b97208</item>
<item name="Name" type_name="gh_string" type_code="10">F</item>
<item name="NickName" type_name="gh_string" type_code="10">F</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2454</X>
<Y>862</Y>
<W>25</W>
<H>23</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2466.5</X>
<Y>873.75</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="140">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">2398bd00-b514-4723-b31f-c436e1ae908b</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">length</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1782</X>
<Y>726</Y>
<W>382</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1782.348</X>
<Y>726.8306</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">400</item>
<item name="Min" type_name="gh_double" type_code="6">0</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">250</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="141">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">3581f42a-9592-4549-bd6b-1c0fc39d067b</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="4">
<item name="Description" type_name="gh_string" type_code="10">Construct a point from {xyz} coordinates.</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">cf3f354f-4379-4525-be10-5b0dbf31bcff</item>
<item name="Name" type_name="gh_string" type_code="10">Construct Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
</items>
<chunks count="5">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2254</X>
<Y>641</Y>
<W>67</W>
<H>64</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2285</X>
<Y>673</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">{x} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">661f67f9-9359-4ee5-a58c-df76414fabf0</item>
<item name="Name" type_name="gh_string" type_code="10">X coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">X</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">c2ff491e-b898-432c-8e6a-7db46434934a</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2256</X>
<Y>643</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2264.5</X>
<Y>653</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="1">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{y} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">fe9dc686-4183-43f9-863d-c8c499a24577</item>
<item name="Name" type_name="gh_string" type_code="10">Y coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Y</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2256</X>
<Y>663</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2264.5</X>
<Y>673</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_input" index="2">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">{z} coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">878e78bd-0868-4cae-b9a9-ef4a62dac81e</item>
<item name="Name" type_name="gh_string" type_code="10">Z coordinate</item>
<item name="NickName" type_name="gh_string" type_code="10">Z</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2256</X>
<Y>683</Y>
<W>14</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2264.5</X>
<Y>693</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<items count="1">
<item name="number" type_name="gh_double" type_code="6">0</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Point coordinate</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">75154365-a588-4c21-86a3-ce81e626861d</item>
<item name="Name" type_name="gh_string" type_code="10">Point</item>
<item name="NickName" type_name="gh_string" type_code="10">Pt</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2300</X>
<Y>643</Y>
<W>19</W>
<H>60</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2309.5</X>
<Y>673</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="142">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">d5967b9f-e8ee-436b-a8ad-29fdcecf32d5</item>
<item name="Name" type_name="gh_string" type_code="10">Curve</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="7">
<item name="Description" type_name="gh_string" type_code="10">Contains a collection of generic curves</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">934a131f-f506-4502-86d5-aca65a992e3c</item>
<item name="Name" type_name="gh_string" type_code="10">Curve</item>
<item name="NickName" type_name="gh_string" type_code="10">Crv</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="Source" index="0" type_name="gh_guid" type_code="9">49ed72a9-4d6b-4881-ac0f-b8700f17fd26</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2525</X>
<Y>750</Y>
<W>50</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2550.661</X>
<Y>762.5297</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="143">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">17b7152b-d30d-4d50-b9ef-c9fe25576fc2</item>
<item name="Name" type_name="gh_string" type_code="10">XY Plane</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="5">
<item name="Description" type_name="gh_string" type_code="10">World XY plane.</item>
<item name="Hidden" type_name="gh_bool" type_code="1">true</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">b2200c91-bbca-48a4-a165-a7f1e2fe3c5f</item>
<item name="Name" type_name="gh_string" type_code="10">XY Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">XY</item>
</items>
<chunks count="3">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2261</X>
<Y>707</Y>
<W>64</W>
<H>28</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2292</X>
<Y>721</Y>
</item>
</items>
</chunk>
<chunk name="param_input" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Origin of plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8589cc40-e2f3-4654-885c-b57ca3fd526a</item>
<item name="Name" type_name="gh_string" type_code="10">Origin</item>
<item name="NickName" type_name="gh_string" type_code="10">O</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2263</X>
<Y>709</Y>
<W>14</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2271.5</X>
<Y>721</Y>
</item>
</items>
</chunk>
<chunk name="PersistentData">
<items count="1">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
</items>
<chunks count="1">
<chunk name="Branch" index="0">
<items count="2">
<item name="Count" type_name="gh_int32" type_code="3">1</item>
<item name="Path" type_name="gh_string" type_code="10">{0}</item>
</items>
<chunks count="1">
<chunk name="Item" index="0">
<!--GH_Point only stores data which exists, test the existence of data fields prior to reading.-->
<items count="1">
<item name="Coordinate" type_name="gh_point3d" type_code="51">
<X>0</X>
<Y>0</Y>
<Z>0</Z>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="param_output" index="0">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">World XY plane</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">f3933593-ac71-4dcf-9de1-01828b79508a</item>
<item name="Name" type_name="gh_string" type_code="10">Plane</item>
<item name="NickName" type_name="gh_string" type_code="10">P</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2307</X>
<Y>709</Y>
<W>16</W>
<H>24</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2315</X>
<Y>721</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="144">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">c2ff491e-b898-432c-8e6a-7db46434934a</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2170</X>
<Y>644</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2170.805</X>
<Y>644.7167</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="145">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="13">
<item name="Bold" type_name="gh_bool" type_code="1">true</item>
<item name="Ca" type_name="gh_drawing_pointf" type_code="31">
<X>2131.598</X>
<Y>592.215</Y>
</item>
<item name="Cb" type_name="gh_drawing_pointf" type_code="31">
<X>2482.523</X>
<Y>592.215</Y>
</item>
<item name="Cc" type_name="gh_drawing_pointf" type_code="31">
<X>2482.523</X>
<Y>607.2424</Y>
</item>
<item name="Cd" type_name="gh_drawing_pointf" type_code="31">
<X>2131.598</X>
<Y>607.2424</Y>
</item>
<item name="Description" type_name="gh_string" type_code="10">A quick note</item>
<item name="Font" type_name="gh_string" type_code="10">Microsoft Sans Serif</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">61857d57-1c68-49a3-ad6f-54433ce11822</item>
<item name="Italic" type_name="gh_bool" type_code="1">false</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
<item name="NickName" type_name="gh_string" type_code="10">Scribble</item>
<item name="Size" type_name="gh_single" type_code="5">16</item>
<item name="Text" type_name="gh_string" type_code="10">Connect the Range component to Wid (ooooh)</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2126.598</X>
<Y>587.215</Y>
<W>360.9243</W>
<H>25.02734</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2131.598</X>
<Y>592.215</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="146">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">7f5c6c55-f846-4a08-9c9a-cfdc285cc6fe</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="13">
<item name="Bold" type_name="gh_bool" type_code="1">true</item>
<item name="Ca" type_name="gh_drawing_pointf" type_code="31">
<X>29.21105</X>
<Y>1018.627</Y>
</item>
<item name="Cb" type_name="gh_drawing_pointf" type_code="31">
<X>472.5363</X>
<Y>1018.376</Y>
</item>
<item name="Cc" type_name="gh_drawing_pointf" type_code="31">
<X>472.5443</X>
<Y>1032.464</Y>
</item>
<item name="Cd" type_name="gh_drawing_pointf" type_code="31">
<X>29.21903</X>
<Y>1032.715</Y>
</item>
<item name="Description" type_name="gh_string" type_code="10">A quick note</item>
<item name="Font" type_name="gh_string" type_code="10">Microsoft Sans Serif</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">a735556e-8f05-4f8e-b6ab-1cc5ff398382</item>
<item name="Italic" type_name="gh_bool" type_code="1">false</item>
<item name="Name" type_name="gh_string" type_code="10">Scribble</item>
<item name="NickName" type_name="gh_string" type_code="10">Scribble</item>
<item name="Size" type_name="gh_single" type_code="5">15</item>
<item name="Text" type_name="gh_string" type_code="10">For Force calc, Young's modulus (material-dependent, in GPa)</item>
</items>
<chunks count="1">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>24.21105</X>
<Y>1013.376</Y>
<W>453.3333</W>
<H>24.33868</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>29.21105</X>
<Y>1018.627</Y>
</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="147">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">59e0b89a-e487-49f8-bab8-b5bab16be14c</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="8">
<item name="Description" type_name="gh_string" type_code="10">A panel for custom notes and text values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">64b83d9b-5ae1-4022-b79e-c9135d3cdfc6</item>
<item name="Name" type_name="gh_string" type_code="10">Panel</item>
<item name="NickName" type_name="gh_string" type_code="10"></item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="ScrollRatio" type_name="gh_double" type_code="6">0</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
<item name="UserText" type_name="gh_string" type_code="10">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="5">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>2102</X>
<Y>767</Y>
<W>50</W>
<H>20</H>
</item>
<item name="MarginLeft" type_name="gh_int32" type_code="3">0</item>
<item name="MarginRight" type_name="gh_int32" type_code="3">0</item>
<item name="MarginTop" type_name="gh_int32" type_code="3">0</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>2102.709</X>
<Y>767.0847</Y>
</item>
</items>
</chunk>
<chunk name="PanelProperties">
<items count="7">
<item name="Colour" type_name="gh_drawing_color" type_code="36">
<ARGB>255;255;250;90</ARGB>
</item>
<item name="DrawIndices" type_name="gh_bool" type_code="1">true</item>
<item name="DrawPaths" type_name="gh_bool" type_code="1">true</item>
<item name="Multiline" type_name="gh_bool" type_code="1">true</item>
<item name="SpecialCodes" type_name="gh_bool" type_code="1">false</item>
<item name="Stream" type_name="gh_bool" type_code="1">false</item>
<item name="Wrap" type_name="gh_bool" type_code="1">true</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Object" index="148">
<items count="2">
<item name="GUID" type_name="gh_guid" type_code="9">57da07bd-ecab-415d-9d86-af36d7073abc</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
</items>
<chunks count="1">
<chunk name="Container">
<items count="6">
<item name="Description" type_name="gh_string" type_code="10">Numeric slider for single values</item>
<item name="InstanceGuid" type_name="gh_guid" type_code="9">8162af0c-aab0-4024-a905-8206506ff4fd</item>
<item name="Name" type_name="gh_string" type_code="10">Number Slider</item>
<item name="NickName" type_name="gh_string" type_code="10">height</item>
<item name="Optional" type_name="gh_bool" type_code="1">false</item>
<item name="SourceCount" type_name="gh_int32" type_code="3">0</item>
</items>
<chunks count="2">
<chunk name="Attributes">
<items count="2">
<item name="Bounds" type_name="gh_drawing_rectanglef" type_code="35">
<X>1344</X>
<Y>308</Y>
<W>384</W>
<H>20</H>
</item>
<item name="Pivot" type_name="gh_drawing_pointf" type_code="31">
<X>1344.632</X>
<Y>308.1685</Y>
</item>
</items>
</chunk>
<chunk name="Slider">
<items count="7">
<item name="Digits" type_name="gh_int32" type_code="3">2</item>
<item name="GripDisplay" type_name="gh_int32" type_code="3">1</item>
<item name="Interval" type_name="gh_int32" type_code="3">0</item>
<item name="Max" type_name="gh_double" type_code="6">200</item>
<item name="Min" type_name="gh_double" type_code="6">-200</item>
<item name="SnapCount" type_name="gh_int32" type_code="3">0</item>
<item name="Value" type_name="gh_double" type_code="6">-56.13</item>
</items>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
</chunks>
</chunk>
<chunk name="Thumbnail">
<items count="1">
<item name="Thumbnail" type_name="gh_drawing_bitmap" type_code="37">
<bitmap length="11104">iVBORw0KGgoAAAANSUhEUgAAAJYAAABkCAIAAADrOV6nAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACr1SURBVHhe7X1XVFxJtuX7m3lf89Wv15p5H9Pvc9brj561erpfTRtVybuqkjdlVSp5nIQ3wnuTCem992SSDpOYxHufmXjvhAeBfFX1NLNvXkQBEsghnqjmrrMuceNGxI2MHSfixDkngn/6p93rF9ACS7vXjm2B5e6H+pfuXjuwBQDcLoQ7ELdVVd6FcGfjh9rvQrgL4Y5vgR3/A3a5cBfCHd8CO/4H7HLhLoQ7vgV2/A/Y5cJdCHd8C+z4H7DLhbsQ7vgW2PE/YJcLdyEsLa2qqqqursa93H292CRlZWUVFRUr8SUlJXhEltWR63LhFa6XloaUKPCl2TcpELlQWmVlJb6O+0rJ6+pGJkPhuDb6+rqqvljCNneKd+VC/E6j0SgUCuVyuc1mKywsJH8/fgbZyjU1NUhjNptJ2PCD8ZiTkyORSJAerYkL8JOoIICMyIJyrFYrEiBMlkZ2FCQjS0B2FELmxR2FI4Cv4BX5RdxJwMgGRS6Ulpubi2TIWFBQgNKQBgF8iKwzWThipFKpQCBAYvInkKCSwJOVJCtMVslut+fl5eEtWcI244fPvROEZAf87LPPPDw84uPjw8PDU1JSLBaLTqfDz1Or1WismJiY2NhYCoWCjwHpoqKi5ubm77///vLlyxcvXsSPR/qsrCyUo1QqtVptXV0dHr/66quoqCg+nw9UEI/IzMxM9JLi4uL6+vrr16/fuHHj2rVreNRoNHiVn58vk8mQBV8EAIgPCgri8Xhk0+NqbGyMjIzcs2cPvv773/+eTqcDOYPBoNfrk5OTUQ3kQg2bmppCQ0NPnjwZGBgoFotRW5QMLPHp7OxsFIsAcuGn4bfjZ+LCdz09PfF7UU98aEdCePjwYT8/Pw6HgxbE70f77t+/H8h99NFHd+/e/fLLL7/99lu0iJeX19WrV1ksVnt7+zfffAMAjh07lp6efuTIkaNHjwYEBKArfP311yjkypUrJ06cuHPnjo+Pz+nTp7/44gtEIv3nn3+OTtDS0oJi0QOio6MzMjLwFt/C/bvvvkMWsmegTQ8cOID4hoYGNDcaGsglJCT86U9/Anh/+MMf8N1bt27t27cvLCwMnz5//jy+iAK7u7v9/f3xUeRF70FpqBI+ik+fO3cuODgYVUX47NmzSIw7EqD74rp06RL6B0rDF7cZxXflQnTGgwcPJiYmKhQKtCx+CS7E+Pr6gpPws729vRFGs6KZ0IUxALpcLjyCZdHuiATeaAggjUZBJPKCoW/evAng8RatBi45fvw4WBlFMZlMtBFaCkh8+umnp06dCgkJwUgOAFABoIhyqFQquByFs9lssCxqFRcX53Q6UT7eosOhhqgSykeYxB79A7nQdfr6+m7fvo1X6JEYzFF/dCwMLQigqyFjREQEEuCOOqMQVBUJkH7v3r3ol3i1wyBEd8PQgUZEr8edy+UyGAz8MDAlei66M7gHAbAgXqFB0QQYncAQaBSABHgwgqGJwbsikQgpMXIiAaBCCUiP4RcxAJ5Go2Fw+93vfofhDmMd8ANIaEcMceAAZAcAABIjJzoH2hS5kB3YY7bDIFxbW4sRFSWjGklJSZjnEMAnwLUoCheqjR6A/oG6IS8GEgwAaWlpeIVIdFAMIeheCKOeQBcdET/h448/xm9E9RCDV0ijUqnI6Xw7r3fiQrKi6OlkM6H2ZJMhZnXbkS2IGMQjDWYUxCCMDosesNLEpJiAlGQJZBayTGRBz0AjkuIJsiMNLmRHSjzigqwBdAE2JjmUTEooK+IMAiuFk69W6klKTKQ8gg/hjux4S36avFaqRBaCGHQ+fAuQk6WRafB25YvbhuIWQLgNdQU8gArX5iIfmg9NCcloG9qRFHq34UOvbN6dAeErf8Y/coI1EJZV2Hdpx7XAGgjN6oZd2nEtsAZCC3/yvZJVMG1kT2bS7+kZ4xsS/Z6BOYGU77Umv6TC10BoFd17f5QtmjAJRszq2gJrU4GlyWZq2Iiy9bV6Xle2eOL9VeaXVPL2QWiTzrHjS3v7Oh4/WVh4OP/0h0dPf3j4Iv3w0+P7Dyc1vBqrcOqX1NDv77dsE4S5kilFeofnzYCBgV6LQWPKLZqamhx52TU6Oto/2KPm1WbvQvh6g+I2QZgjmchk9ft7xTmcLa0tjY1NzUPDwysIArbB59fQ0FBPX6eaW5MtnH5/PfeXVPI2QYgmy5POqeiuuvq6iYmJ0dGRgYEBqDZgQIBKBWv23t4+gIcL8V3dbVpBQ45w5pfU0O/vt2wfhDYZMRdCmdXV1eFyugYHh2RSKRSbMAjAmNDX2+dobWlqaenv7+/odLKSsvPli/mKuVzpVLZ4/P39/l9AydsEITEXUts9b/i52hxFhbkKvXFocAiKTeipYeGDWW5kZEijlKWkpNXUNQ0ODYSHR3hfojJjSyRpTRbhWKHyPrD8BTT3+/gJ2wQh5kI9a8DfKwEa7/b2tvrmlq6uzt7eXljyoPVva2vDY1NzS0N9fVNTM9g0IjQx6rY6JcQS6inyv8aM9lWr6e0AMmd3pfGCjLNNEKL32WSzakYblJm9vT3dXV0w4HV1dZEOFgg4nS6Ygts7cLU3NtfJGJV25aMCxTzG0izeYEZUwZ0rtKjbCnCkTT5rFY29j+68Q8vcTgjnmLFFxcX2psa60rJyGH5bW1vBf7gQcDy/AG1DY62CVZUjWpZIscYHlrnS6dRQq9elVEWGE4+7KK50uG2CEDMZ5sJb1283NNabDGq+WA52gwvFixfgrKuvkjMrckRrJNJs0XiRahH43fo6SZRSX6C8v4siieI2QYg5zMAZ8vdMKIctr7gwv8judDg2grC2vlLGKF8Hobu6YwWKuUx2D1CUpDXu8uK2QkjOhUqaCz5jNbUVcPQqKS16KZWW220FVim9PEf80nXhWL58VsvsuvV1oo7VbZPtrh3fjQsxS+VIJl9KGymp5bQmSXqNNL12I5IQr+pM/OGNl4NjBcp5YUqd9yVKjngcsu4OFUO2qtpvP5DmiCfVtBEZZUBOHVxHiMxkjb2kcYX3MnnOTEGzXtCaKWjZkPgtJsEwJr+Nf+QY5sXkEHO4t7RQubBVbbFDy3lLCPOkGM26ywrDHC23Oxz+Hc6A7raATmeAq9kP5Gjxyc1KyeJMFSjuY6wjqUi5qKK3uVyOh4/vz9+fnp2fmnsZ3V+YuTc5qOHVvdJSgfWG/3UWJ77cPSm+RzPZB17420CIkVPHHPDzinm4+MXS0qmFyaOLk0dcDR8PDx1aWjq7tHRmaelku+uSx2UqJ66SE1+BVuYmVNAii309YvsHekqL8osr6+bn5iYnJ16kqamp0XuDGv6rLRVYZmSyez2/TcWoiyp94A39/qr3NhDmSaclKU7PW15PHny7tHSho/FQXdU+o+5PzY2Hl5YA6sWlpfO93Ve/POcT7qWM9dPE+Gni/HWB1/g3rnr39HSWFefbSytgnSD12riGh4dfsFQAwldbKqCvoYbnhXoKP7ThFLNMrng6RzydK5nOk86AEMAjSdbN5og3Hk7eBkK32eE+Mza/w/X53PyJ8dHPZqdOzk6emJk8MT9zan765Nz8Z6UFX/LiXSXax1jAkVSiecKOL6mtrRkfHx8ZHoY6Gwq2HvfV2dmJR6AIMwXu3T3tbnvhqyFETbDM8LvKYH9IwylEuUx2t4LeoKA3aditalarjuvU89uUjCYFvVHJaIGOaQtRfEsIUQOMXUpGpZxepGSWKBnF5F1BJ0hGK9SwGtH1Vo8eebI5KNhq62qHhgb7+/pgqYDvM3bAmEwm7E0BkH29vW4EB9o7HApmdYH8ARQCkIk2lWvQmaawusBwahaMfgDD6TjqbOZPmnQlbR3tXd19VmvOuXNn/+OjP4aGhvX3Dzud7fAl1rCd8GHYKtXEW0MIfh/PEc/liOdfRtBHQ5P585jgNvkO+HnGtbQ2ldjzM01WDJ9QkGLfEO7YNA
</item>
</items>
</chunk>
</chunks>
</Archive>