<?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 > -1 Then Return Component.Params.Input.ElementAt(i).DataType > 1 ' input parameter DataType of 1 means it's not receiving input (internal or external) Else Msg("error", "Input parameter '" & param & "' not found") Return False End If End Function Private Sub Msg(ByVal type As String, ByVal msg As String) ' Output an error, warning, or informational message Select Case type Case "error" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, msg) Print("Error: " & msg) Case "warning" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, msg) Print("Warning: " & msg) Case "info" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Remark, msg) Print(msg) End Select End Sub ' Solve for the m parameter from length and width (reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m)) Private Function SolveMFromLenWid(ByVal L As Double, ByVal w As Double) As Double If w = 0 Then Return Defined.M_ZERO_W ' for the boundry condition width = 0, bypass the function and return the known m value End If Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim m As Double Dim cwl As Double Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 cwl = 2 * EllipticE(m) / EllipticK(m) - 1 ' calculate w/L with the test value of m If cwl < w / L Then ' compares the calculated w/L with the actual w/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop Return m End Function ' Solve for the m parameter from length and height (reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m)) ' Note that it's actually possible to find 2 valid values for m (hence 2 width values) at certain height values Private Function SolveMFromLenHt(ByVal L As Double, ByVal h As Double) As List(Of Double) Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim twoWidths As Boolean = h / L >= Defined.DOUBLE_W_HL_RATIO And h / L < Defined.MAX_HL_RATIO ' check to see if h/L is within the range where 2 solutions for the width are possible Dim m As Double Dim mult_m As New List(Of Double) Dim chl As Double If twoWidths Then ' find the first of two possible solutions for m with the following limits: lower = Defined.M_DOUBLE_W ' see constants at bottom of script upper = Defined.M_MAXHEIGHT ' see constants at bottom of script Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop mult_m.Add(m) ' then find the second of two possible solutions for m with the following limits: lower = Defined.M_MAXHEIGHT ' see constants at bottom of script upper = 1 Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl < h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop If m <= Defined.M_MAX Then ' return this m parameter only if it falls within the maximum useful value (above which the curve breaks down) mult_m.Add(m) End If Else ' find the one possible solution for the m parameter upper = Defined.M_DOUBLE_W ' limit the upper end of the search to the maximum value of m for which only one solution exists Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop mult_m.Add(m) End If Return mult_m End Function ' Solve for the m parameter from width and height (derived from reference {1} equations (33) and (34) with same notes as above) Private Function SolveMFromWidHt(ByVal w As Double, ByVal h As Double) As Double Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim m As Double Dim cwh As Double Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 cwh = (2 * EllipticE(m) - EllipticK(m)) / Math.Sqrt(m) ' calculate w/h with the test value of m If cwh < w / h Then ' compares the calculated w/h with the actual w/h then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop Return m End Function ' Calculate length based on height and an m parameter, derived from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m) Private Function Cal_L(ByVal h As Double, ByVal m As Double) As Double Return h * EllipticK(m) / Math.Sqrt(m) End Function ' Calculate width based on length and an m parameter, derived from reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m) Private Function Cal_W(ByVal L As Double, ByVal m As Double) As Double Return L * (2 * EllipticE(m) / EllipticK(m) - 1) End Function ' Calculate height based on length and an m parameter, from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m) Private Function Cal_H(ByVal L As Double, ByVal m As Double) As Double Return L * Math.Sqrt(m) / EllipticK(m) End Function ' Calculate the unique m parameter based on a start tangent angle, from reference {2}, just above equation (9a), that states k = Sin(angle / 2 + Pi / 4), ' but as m = k^2 and due to this script's need for an angle rotated 90° versus the one in reference {1}, the following formula is the result ' New note: verified by reference {4}, pg. 78 at the bottom Private Function Cal_M(ByVal a As Double) As Double Return (1 - Math.Cos(a)) / 2 ' equal to Sin^2(a/2) too End Function ' Calculate start tangent angle based on an m parameter, derived from above formula Private Function Cal_A(ByVal m As Double) As Double Return Math.Acos(1 - 2 * m) End Function ' This is the heart of this script, taking the found (or specified) length, width, and angle values along with the found m parameter to create ' a list of points that approximate the shape or form of the elastica. It works by finding the x and y coordinates (which are reversed versus ' the original equations (12a) and (12b) from reference {2} due to the 90° difference in orientation) based on the tangent angle along the curve. ' See reference {2} for more details on how they derived it. Note that to simplify things, the algorithm only calculates the points for half of the ' curve, then mirrors those points along the y-axis. Private Function FindBendForm(ByVal L As Double, ByVal w As Double, ByVal m As Double, ByVal ang As Double, ByVal refPln As Plane) As List(Of Point3d) L = L / 2 ' because the below algorithm is based on the formulas in reference {2} for only half of the curve w = w / 2 ' same If ang = 0 Then ' if angle (and height) = 0, then simply return the start and end points of the straight line Dim out As New List(Of Point3d) out.Add(refPln.PointAt(w, 0, 0)) out.Add(refPln.PointAt(-w, 0, 0)) Return out End If Dim x As Double Dim y As Double Dim halfCurvePts As New List(Of Point3d) Dim fullCurvePts As New List(Of Point3d) Dim translatedPts As New List(Of Point3d) ang -= Math.PI / 2 ' a hack to allow this algorithm to work, since the original curve in paper {2} was rotated 90° Dim angB As Double = ang + (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' angB is the 'lowercase theta' which should be in formula {2}(12b) as the interval ' start [a typo...see equation(3)]. It's necessary to start angB at ang + [interval] instead of just ang due to integration failing at angB = ang halfCurvePts.Add(New Point3d(w, 0, 0)) ' start with this known initial point, as integration will fail when angB = ang ' each point {x, y} is calculated from the tangent angle, angB, that occurs at each point (which is why this iterates from ~ang to -pi/2, the known end condition) Do While Math.Round(angB, Defined.ROUNDTO) >= Math.Round(-Math.PI / 2, Defined.ROUNDTO) y = (Math.Sqrt(2) * Math.Sqrt(Math.Sin(ang) - Math.Sin(angB)) * (w + L)) / (2 * EllipticE(m)) ' note that x and y are swapped vs. (12a) and (12b) x = (L / (Math.Sqrt(2) * EllipticK(m))) * Simpson(angB, -Math.PI / 2, 500, ang) ' calculate the Simpson approximation of the integral (function f below) ' over the interval angB ('lowercase theta') to -pi/2. side note: is 500 too few iterations for the Simson algorithm? If Math.Round(x, Defined.ROUNDTO) = 0 Then x = 0 halfCurvePts.Add(New Point3d(x, y, 0)) angB += (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' onto the next tangent angle Loop ' After finding the x and y values for half of the curve, add the {-x, y} values for the rest of the curve For Each point As Point3d In halfCurvePts If Math.Round(point.X, Defined.ROUNDTO) = 0 Then If Math.Round(point.Y, Defined.ROUNDTO) = 0 Then fullCurvePts.Add(New Point3d(0, 0, 0)) ' special case when width = 0: when x = 0, only duplicate the point when y = 0 too End If Else fullCurvePts.Add(New Point3d(-point.X, point.Y, 0)) End If Next halfCurvePts.Reverse fullCurvePts.AddRange(halfCurvePts) For Each p As Point3d In fullCurvePts translatedPts.Add(refPln.PointAt(p.X, p.Y, p.Z)) ' translate the points from the reference plane to the world plane Next Return translatedPts End Function ' Interpolates the points from FindBendForm to create the Elastica curve. Uses start & end tangents for greater accuracy. Private Function MakeCurve(ByVal pts As List(Of Point3d), ByVal ang As Double, ByVal refPln As Plane) As Curve If ang <> 0 Then Dim ts, te As New Vector3d(refPln.XAxis) ts.Rotate(ang, refPln.ZAxis) te.Rotate(-ang, refPln.ZAxis) Return Curve.CreateInterpolatedCurve(pts, 3, CurveKnotStyle.Chord, ts, te) ' 3rd degree curve with 'Chord' Knot Style Else Return Curve.CreateInterpolatedCurve(pts, 3) ' if angle (and height) = 0, then simply interpolate the straight line (no start/end tangents) End If End Function ' Implements the Simpson approximation for an integral of function f below Public Function Simpson(a As Double, b As Double, n As Integer, theta As Double) As Double 'n should be an even number Dim j As Integer, s1 As Double, s2 As Double, h As Double h = (b - a) / n s1 = 0 s2 = 0 For j = 1 To n - 1 Step 2 s1 = s1 + fn(a + j * h, theta) Next j For j = 2 To n - 2 Step 2 s2 = s2 + fn(a + j * h, theta) Next j Simpson = h / 3 * (fn(a, theta) + 4 * s1 + 2 * s2 + fn(b, theta)) End Function ' Specific calculation for the above integration Public Function fn(x As Double, theta As Double) As Double fn = Math.Sin(x) / (Math.Sqrt(Math.Sin(theta) - Math.Sin(x))) ' from reference {2} formula (12b) End Function ' Return the Complete Elliptic integral of the 1st kind ' Abramowitz and Stegun p.591, formula 17.3.11 ' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals Public Function EllipticK(ByVal m As Double) As Double Dim sum, term, above, below As Double sum = 1 term = 1 above = 1 below = 2 For i As Integer = 1 To 100 term *= above / below sum += Math.Pow(m, i) * Math.Pow(term, 2) above += 2 below += 2 Next sum *= 0.5 * Math.PI Return sum End Function ' Return the Complete Elliptic integral of the 2nd kind ' Abramowitz and Stegun p.591, formula 17.3.12 ' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals Public Function EllipticE(ByVal m As Double) As Double Dim sum, term, above, below As Double sum = 1 term = 1 above = 1 below = 2 For i As Integer = 1 To 100 term *= above / below sum -= Math.Pow(m, i) * Math.Pow(term, 2) / above above += 2 below += 2 Next sum *= 0.5 * Math.PI Return sum End Function Friend Partial NotInheritable Class Defined Private Sub New() End Sub ' Note: most of these values for m and h/L ratio were found with Wolfram Alpha and either specific intercepts (x=0) or local minima/maxima. They should be constant. Public Const M_SKETCHY As Double = 0.95 ' value of the m parameter where the curvature near the ends of the curve gets wonky Public Const M_MAX As Double = 0.993 ' maximum useful value of the m parameter, above which this algorithm for the form of the curve breaks down Public Const M_ZERO_W As Double = 0.826114765984970336 ' value of the m parameter when width = 0 Public Const M_MAXHEIGHT As Double = 0.701327460663101223 ' value of the m parameter at maximum possible height of the bent rod/wire Public Const M_DOUBLE_W As Double = 0.180254422335013983 ' minimum value of the m parameter when two width values are possible for a given height and length Public Const DOUBLE_W_HL_RATIO As Double = 0.257342117984635757 ' value of the height/length ratio above which there are two possible width values Public Const MAX_HL_RATIO As Double = 0.403140189705650243 ' maximum possible value of the height/length ratio Public Const MAXERR As Double = 0.0000000001 ' error tolerance Public Const MAXIT As Integer = 100 ' maximum number of iterations Public Const ROUNDTO As Integer = 10 ' number of decimal places to round off to Public Const CURVEDIVS As Integer = 50 ' number of sample points for building the curve (or half-curve as it were) End Class</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 < 10), you might have to increase the constant ROUNDTO at the bottom ' ' REFERENCES: ' {1} "The elastic rod" by M.E. Pacheco Q. & E. Pina, http://www.scielo.org.mx/pdf/rmfe/v53n2/v53n2a8.pdf ' {2} "An experiment in nonlinear beam theory" by A. Valiente, http://www.deepdyve.com/lp/doc/I3lwnxdfGz , also here: http://tiny.cc/Valiente_AEiNBT ' {3} "Snap buckling, writhing and Loop formation In twisted rods" by V.G.A. GOSS, http://myweb.lsbu.ac.uk/~gossga/thesisFinal.pdf ' {4} "Theory of Elastic Stability" by Stephen Timoshenko, http://www.scribd.com/doc/50402462/Timoshenko-Theory-of-Elastic-Stability (start on p. 76) ' ' INPUT: ' PtA - First anchor point (required) ' PtB - Second anchor point (optional, though 2 out of the 4--length, width, height, angle--need to be specified) ' [note that PtB can be the same as PtA (meaning width would be zero)] ' [also note that if a different width is additionally specified that's not equal to the distance between PtA and PtB, then the end point will not equal PtB anymore] ' Pln - Plane of the bent rod/wire, which bends up in the +y direction. The line between PtA and PtB (if specified) must be parallel to the x-axis of this plane ' ' ** 2 of the following 4 need to be specified ** ' Len - Length of the rod/wire, which needs to be > 0 ' Wid - Width between the endpoints of the curve [note: if PtB is specified in addition, and distance between PtA and PtB <> width, the end point will be relocated ' Ht - Height of the bent rod/wire (when negative, curve will bend downward, relative to the input plane, instead) ' Ang - Inner departure angle or tangent angle (in radians) at the ends of the bent rod/wire. Set up so as width approaches length (thus height approaches zero), angle approaches zero ' ' * Following variables only needed for optional calculating of bending force, not for shape of curve. ' E - Young's modulus (modulus of elasticity) in GPa (=N/m^2) (material-specific. for example, 7075 aluminum is roughly 71.7 GPa) ' I - Second moment of area (or area moment of inertia) in m^4 (cross-section-specific. for example, a hollow rod ' would have I = pi * (outer_diameter^4 - inner_diameter^4) / 32 ' Note: E*I is also known as flexural rigidity or bending stiffness ' ' OUTPUT: ' out - only for debugging messages ' Pts - the list of points that approximate the shape of the elastica ' Crv - the 3rd-degree curve interpolated from those points (with accurate start & end tangents) ' L - the length of the rod/wire ' W - the distance (width) between the endpoints of the rod/wire ' H - the height of the bent rod/wire ' A - the tangent angle at the (start) end of the rod/wire ' F - the force needed to hold the rod/wire in a specific shape (based on the material properties & cross-section) **be sure your units for 'I' match your units for the ' rest of your inputs (length, width, etc.). Also note that the critical buckling load (force) that makes the rod/wire start to bend can be found at height=0 ' ' THANKS TO: ' Mårten Nettelbladt (thegeometryofbending.blogspot.com) ' Daniel Piker (Kangaroo plugin) ' David Rutten (Grasshopper guru) ' Euler & Bernoulli (the O.G.'s) ' ' ----------------------------------------------------------------- Dim ignoreSelfIntersecting As Boolean = False ' set to True if you don't want to output curves where width < 0, which creates a self-intersecting curve Dim inCt As Integer = 0 ' count the number of required parameters that are receiving data Dim length As Double Dim width As System.Object = Nothing ' need to set as Nothing so we can check if it has been assigned a value later Dim height As Double Dim angle As Double Dim m As Double Dim multiple_m As New List(Of Double) Dim AtoB As Line Dim flip_H As Boolean = False ' if height is negative, this flag will be set Dim flip_A As Boolean = False ' if angle is negative, this flag will be set If Not IsSet("Pln") Then Msg("error", "Base plane is not set") Return End If If Not IsSet("PtA") Then Msg("error", "Point A is not set") Return End If If Math.Round(Pln.DistanceTo(PtA), Defined.ROUNDTO) <> 0 Then Msg("error", "Point A is not on the base plane") Return End If Dim refPlane As Plane = Pln ' create a reference plane = input plane and set the origin of it to PtA in case PtA isn't the origin already refPlane.Origin = PtA If IsSet("PtB") Then If Math.Round(Pln.DistanceTo(PtB), Defined.ROUNDTO) <> 0 Then Msg("error", "Point B is not on the base plane") Return End If AtoB = New Line(PtA, PtB) If AtoB.Length <> 0 And Not AtoB.Direction.IsPerpendicularTo(Pln.YAxis) Then Msg("error", "The line between PtA and PtB is not perpendicular to the Y-axis of the specified plane") Return End If inCt += 1 If IsSet("Wid") Then Msg("info", "Wid will override the distance between PtA and PtB. If you do not want this to happen, disconnect PtB or Wid.") width = PtA.DistanceTo(PtB) ' get the width (distance) between PtA and PtB Dim refPtB As Point3d refPlane.RemapToPlaneSpace(PtB, refPtB) If refPtB.X < 0 Then width = -width ' check if PtB is to the left of PtA...if so, width is negative End If If IsSet("Len") Then inCt += 1 If IsSet("Wid") Then inCt += 1 If IsSet("Ht") Then inCt += 1 If IsSet("Ang") Then inCt += 1 If inCt > 2 Then Msg("info", "More parameters set than are required (out of length, width, height, angle). Only using the first two valid ones.") ' check for connected/specified inputs. note: only the first two that it comes across will be used If IsSet("Len") Then ' if length is specified then... If Len <= 0 Then Msg("error", "Length cannot be negative or zero") Return End If If IsSet("Wid") Then ' find height & angle based on length and specified width If Wid > Len Then Msg("error", "Width is greater than length") Return End If If Wid = Len Then ' skip the solver and set the known values height = 0 m = 0 angle = 0 width = Wid Else m = SolveMFromLenWid(Len, Wid) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) angle = Cal_A(m) ' Acos(1 - 2 * m) width = Wid End If Else If width IsNot Nothing Then ' find height & angle based on length and calculated width (distance between PtA and PtB) If width > Len Then Msg("error", "Width is greater than length") Return End If If width = Len Then ' skip the solver and set the known values height = 0 m = 0 angle = 0 Else m = SolveMFromLenWid(Len, width) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If Else If IsSet("Ht") Then ' find width & angle based on length and height ** possible to return 2 results ** If Math.Abs(Ht / Len) > Defined.MAX_HL_RATIO Then Msg("error", "Height not possible with given length") Return End If If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values width = Len angle = 0 Else multiple_m = SolveMFromLenHt(Len, Ht) ' note that it's possible for two values of m to be found if height is close to max height If multiple_m.Count = 1 Then ' if there's only one m value returned, calculate the width & angle here. we'll deal with multiple m values later m = multiple_m.Item(0) width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1) angle = Cal_A(m) ' Acos(1 - 2 * m) End If End If height = Ht Else If IsSet("Ang") Then ' find width & height based on length and angle If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values width = Len height = 0 Else width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to length") Return End If length = Len Else If IsSet("Wid") Then ' if width is specified then... If IsSet("Ht") Then ' find length & angle based on specified width and height If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values length = Wid angle = 0 Else m = SolveMFromWidHt(Wid, Ht) length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If height = Ht Else If IsSet("Ang") Then ' find length & height based on specified width and angle If Wid = 0 Then Msg("error", "Curve not possible with width = 0 and an angle as inputs") Return End If If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values length = Wid height = 0 Else length = Wid / (2 * EllipticE(m) / EllipticK(m) - 1) If length < 0 Then Msg("error", "Curve not possible at specified width and angle (calculated length is negative)") Return End If height = Cal_H(length, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to width (Wid)") Return End If width = Wid Else If width IsNot Nothing Then ' if width is determined by PtA and PtB then... If IsSet("Ht") Then ' find length & angle based on calculated width and height If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values length = width angle = 0 Else m = SolveMFromWidHt(width, Ht) length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If height = Ht Else If IsSet("Ang") Then ' find length & height based on calculated width and angle If width = 0 Then Msg("error", "Curve not possible with width = 0 and an angle as inputs") Return End If If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values length = width height = 0 Else length = width / (2 * EllipticE(m) / EllipticK(m) - 1) If length < 0 Then Msg("error", "Curve not possible at specified width and angle (calculated length is negative)") Return End If height = Cal_H(length, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to PtA and PtB") Return End If Else If IsSet("Ht") Then ' if height is specified then... If IsSet("Ang") Then ' find length & width based on height and angle If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_H = True flip_A = True End If If Ht = 0 Then Msg("error", "Height can't = 0 if only height and angle are specified") Return Else If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = Not flip_A flip_H = Not flip_H End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then Msg("error", "Angle can't = 0 if only height and angle are specified") Return Else length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) width = Cal_W(length, m) ' L * (2 * E(m) / K(m) - 1) End If angle = Ang End If height = Ht Else Msg("error", "Need to specify one more parameter in addition to height") Return End If Else If IsSet("Ang") Then Msg("error", "Need to specify one more parameter in addition to angle") Return Else Msg("error", "Need to specify two of the four parameters: length, width (or PtB), height, and angle") Return End If If m > Defined.M_MAX Then Msg("error", "Form of curve not solvable with current algorithm and given inputs") Return End If refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2) If multiple_m.Count > 1 Then ' if there is more than one m value returned, calculate the width, angle, and curve for each Dim multi_pts As New DataTree(Of Point3d) Dim multi_crv As New List(Of Curve) Dim tmp_pts As New List(Of Point3d) Dim multi_W, multi_A, multi_F As New List(Of Double) Dim j As Integer = 0 ' used for creating a new branch (GH_Path) for storing pts which is itself a list of points For Each m_val As Double In multiple_m width = Cal_W(length, m_val) 'length * (2 * EllipticE(m_val) / EllipticK(m_val) - 1) If width < 0 And ignoreSelfIntersecting Then Msg("warning", "One curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False") Continue For End If If m_val >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve whose width = " & Math.Round(width, 4) & " is not guaranteed") angle = Cal_A(m_val) 'Math.Asin(2 * m_val - 1) refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2) tmp_pts = FindBendForm(length, width, m_val, angle, refPlane) multi_pts.AddRange(tmp_pts, New GH_Path(j)) multi_crv.Add(MakeCurve(tmp_pts, angle, refPlane)) multi_W.Add(width) If flip_A Then angle = -angle multi_A.Add(angle) E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2) multi_F.Add(EllipticK(m_val) ^ 2 * E * I / length ^ 2) ' from reference {4} pg. 79 j += 1 refPlane.Origin = PtA ' reset the reference plane origin to PtA for the next m_val 'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m_val & ", k=" & Math.Sqrt(m_val) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height) Next ' assign the outputs Pts = multi_pts Crv = multi_crv L = length W = multi_W If flip_H Then height = -height H = height A = multi_A F = multi_F Else ' only deal with the single m value If m >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve at these parameters is not guaranteed") If width < 0 And ignoreSelfIntersecting Then Msg("error", "Curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False") Return End If Pts = FindBendForm(length, width, m, angle, refPlane) Crv = MakeCurve(pts, angle, refPlane) L = length W = width If flip_H Then height = -height H = height If flip_A Then angle = -angle A = angle E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2) F = EllipticK(m) ^ 2 * E * I / length ^ 2 ' from reference {4} pg. 79. Note: the critical buckling (that makes the rod/wire start to bend) can be found at height=0 (width=length) 'height = Math.Sqrt(((2 * Len / 5) ^ 2 - ((Wid - Len / 5) / 2) ^ 2) ' quick approximation discovered by Mårten of 'Geometry of Bending' fame ( http://tiny.cc/it2pbx ) 'width = (Len +/- 2 * Math.Sqrt(4 * Len ^ 2 - 25 * Ht ^ 2)) / 5 ' derived from above 'length = (2 * Math.Sqrt(15 * Ht ^ 2 + 4 * Wid ^ 2) - Wid) / 3 ' derived from above 'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m & ", k=" & Math.Sqrt(m) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height) End If </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 > -1 Then Return Component.Params.Input.ElementAt(i).DataType > 1 ' input parameter DataType of 1 means it's not receiving input (internal or external) Else Msg("error", "Input parameter '" & param & "' not found") Return False End If End Function Private Sub Msg(ByVal type As String, ByVal msg As String) ' Output an error, warning, or informational message Select Case type Case "error" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, msg) Print("Error: " & msg) Case "warning" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, msg) Print("Warning: " & msg) Case "info" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Remark, msg) Print(msg) End Select End Sub ' Solve for the m parameter from length and width (reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m)) Private Function SolveMFromLenWid(ByVal L As Double, ByVal w As Double) As Double If w = 0 Then Return Defined.M_ZERO_W ' for the boundry condition width = 0, bypass the function and return the known m value End If Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim m As Double Dim cwl As Double Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 cwl = 2 * EllipticE(m) / EllipticK(m) - 1 ' calculate w/L with the test value of m If cwl < w / L Then ' compares the calculated w/L with the actual w/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop Return m End Function ' Solve for the m parameter from length and height (reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m)) ' Note that it's actually possible to find 2 valid values for m (hence 2 width values) at certain height values Private Function SolveMFromLenHt(ByVal L As Double, ByVal h As Double) As List(Of Double) Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim twoWidths As Boolean = h / L >= Defined.DOUBLE_W_HL_RATIO And h / L < Defined.MAX_HL_RATIO ' check to see if h/L is within the range where 2 solutions for the width are possible Dim m As Double Dim mult_m As New List(Of Double) Dim chl As Double If twoWidths Then ' find the first of two possible solutions for m with the following limits: lower = Defined.M_DOUBLE_W ' see constants at bottom of script upper = Defined.M_MAXHEIGHT ' see constants at bottom of script Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop mult_m.Add(m) ' then find the second of two possible solutions for m with the following limits: lower = Defined.M_MAXHEIGHT ' see constants at bottom of script upper = 1 Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl < h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop If m <= Defined.M_MAX Then ' return this m parameter only if it falls within the maximum useful value (above which the curve breaks down) mult_m.Add(m) End If Else ' find the one possible solution for the m parameter upper = Defined.M_DOUBLE_W ' limit the upper end of the search to the maximum value of m for which only one solution exists Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop mult_m.Add(m) End If Return mult_m End Function ' Solve for the m parameter from width and height (derived from reference {1} equations (33) and (34) with same notes as above) Private Function SolveMFromWidHt(ByVal w As Double, ByVal h As Double) As Double Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim m As Double Dim cwh As Double Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 cwh = (2 * EllipticE(m) - EllipticK(m)) / Math.Sqrt(m) ' calculate w/h with the test value of m If cwh < w / h Then ' compares the calculated w/h with the actual w/h then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop Return m End Function ' Calculate length based on height and an m parameter, derived from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m) Private Function Cal_L(ByVal h As Double, ByVal m As Double) As Double Return h * EllipticK(m) / Math.Sqrt(m) End Function ' Calculate width based on length and an m parameter, derived from reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m) Private Function Cal_W(ByVal L As Double, ByVal m As Double) As Double Return L * (2 * EllipticE(m) / EllipticK(m) - 1) End Function ' Calculate height based on length and an m parameter, from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m) Private Function Cal_H(ByVal L As Double, ByVal m As Double) As Double Return L * Math.Sqrt(m) / EllipticK(m) End Function ' Calculate the unique m parameter based on a start tangent angle, from reference {2}, just above equation (9a), that states k = Sin(angle / 2 + Pi / 4), ' but as m = k^2 and due to this script's need for an angle rotated 90° versus the one in reference {1}, the following formula is the result ' New note: verified by reference {4}, pg. 78 at the bottom Private Function Cal_M(ByVal a As Double) As Double Return (1 - Math.Cos(a)) / 2 ' equal to Sin^2(a/2) too End Function ' Calculate start tangent angle based on an m parameter, derived from above formula Private Function Cal_A(ByVal m As Double) As Double Return Math.Acos(1 - 2 * m) End Function ' This is the heart of this script, taking the found (or specified) length, width, and angle values along with the found m parameter to create ' a list of points that approximate the shape or form of the elastica. It works by finding the x and y coordinates (which are reversed versus ' the original equations (12a) and (12b) from reference {2} due to the 90° difference in orientation) based on the tangent angle along the curve. ' See reference {2} for more details on how they derived it. Note that to simplify things, the algorithm only calculates the points for half of the ' curve, then mirrors those points along the y-axis. Private Function FindBendForm(ByVal L As Double, ByVal w As Double, ByVal m As Double, ByVal ang As Double, ByVal refPln As Plane) As List(Of Point3d) L = L / 2 ' because the below algorithm is based on the formulas in reference {2} for only half of the curve w = w / 2 ' same If ang = 0 Then ' if angle (and height) = 0, then simply return the start and end points of the straight line Dim out As New List(Of Point3d) out.Add(refPln.PointAt(w, 0, 0)) out.Add(refPln.PointAt(-w, 0, 0)) Return out End If Dim x As Double Dim y As Double Dim halfCurvePts As New List(Of Point3d) Dim fullCurvePts As New List(Of Point3d) Dim translatedPts As New List(Of Point3d) ang -= Math.PI / 2 ' a hack to allow this algorithm to work, since the original curve in paper {2} was rotated 90° Dim angB As Double = ang + (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' angB is the 'lowercase theta' which should be in formula {2}(12b) as the interval ' start [a typo...see equation(3)]. It's necessary to start angB at ang + [interval] instead of just ang due to integration failing at angB = ang halfCurvePts.Add(New Point3d(w, 0, 0)) ' start with this known initial point, as integration will fail when angB = ang ' each point {x, y} is calculated from the tangent angle, angB, that occurs at each point (which is why this iterates from ~ang to -pi/2, the known end condition) Do While Math.Round(angB, Defined.ROUNDTO) >= Math.Round(-Math.PI / 2, Defined.ROUNDTO) y = (Math.Sqrt(2) * Math.Sqrt(Math.Sin(ang) - Math.Sin(angB)) * (w + L)) / (2 * EllipticE(m)) ' note that x and y are swapped vs. (12a) and (12b) x = (L / (Math.Sqrt(2) * EllipticK(m))) * Simpson(angB, -Math.PI / 2, 500, ang) ' calculate the Simpson approximation of the integral (function f below) ' over the interval angB ('lowercase theta') to -pi/2. side note: is 500 too few iterations for the Simson algorithm? If Math.Round(x, Defined.ROUNDTO) = 0 Then x = 0 halfCurvePts.Add(New Point3d(x, y, 0)) angB += (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' onto the next tangent angle Loop ' After finding the x and y values for half of the curve, add the {-x, y} values for the rest of the curve For Each point As Point3d In halfCurvePts If Math.Round(point.X, Defined.ROUNDTO) = 0 Then If Math.Round(point.Y, Defined.ROUNDTO) = 0 Then fullCurvePts.Add(New Point3d(0, 0, 0)) ' special case when width = 0: when x = 0, only duplicate the point when y = 0 too End If Else fullCurvePts.Add(New Point3d(-point.X, point.Y, 0)) End If Next halfCurvePts.Reverse fullCurvePts.AddRange(halfCurvePts) For Each p As Point3d In fullCurvePts translatedPts.Add(refPln.PointAt(p.X, p.Y, p.Z)) ' translate the points from the reference plane to the world plane Next Return translatedPts End Function ' Interpolates the points from FindBendForm to create the Elastica curve. Uses start & end tangents for greater accuracy. Private Function MakeCurve(ByVal pts As List(Of Point3d), ByVal ang As Double, ByVal refPln As Plane) As Curve If ang <> 0 Then Dim ts, te As New Vector3d(refPln.XAxis) ts.Rotate(ang, refPln.ZAxis) te.Rotate(-ang, refPln.ZAxis) Return Curve.CreateInterpolatedCurve(pts, 3, CurveKnotStyle.Chord, ts, te) ' 3rd degree curve with 'Chord' Knot Style Else Return Curve.CreateInterpolatedCurve(pts, 3) ' if angle (and height) = 0, then simply interpolate the straight line (no start/end tangents) End If End Function ' Implements the Simpson approximation for an integral of function f below Public Function Simpson(a As Double, b As Double, n As Integer, theta As Double) As Double 'n should be an even number Dim j As Integer, s1 As Double, s2 As Double, h As Double h = (b - a) / n s1 = 0 s2 = 0 For j = 1 To n - 1 Step 2 s1 = s1 + fn(a + j * h, theta) Next j For j = 2 To n - 2 Step 2 s2 = s2 + fn(a + j * h, theta) Next j Simpson = h / 3 * (fn(a, theta) + 4 * s1 + 2 * s2 + fn(b, theta)) End Function ' Specific calculation for the above integration Public Function fn(x As Double, theta As Double) As Double fn = Math.Sin(x) / (Math.Sqrt(Math.Sin(theta) - Math.Sin(x))) ' from reference {2} formula (12b) End Function ' Return the Complete Elliptic integral of the 1st kind ' Abramowitz and Stegun p.591, formula 17.3.11 ' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals Public Function EllipticK(ByVal m As Double) As Double Dim sum, term, above, below As Double sum = 1 term = 1 above = 1 below = 2 For i As Integer = 1 To 100 term *= above / below sum += Math.Pow(m, i) * Math.Pow(term, 2) above += 2 below += 2 Next sum *= 0.5 * Math.PI Return sum End Function ' Return the Complete Elliptic integral of the 2nd kind ' Abramowitz and Stegun p.591, formula 17.3.12 ' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals Public Function EllipticE(ByVal m As Double) As Double Dim sum, term, above, below As Double sum = 1 term = 1 above = 1 below = 2 For i As Integer = 1 To 100 term *= above / below sum -= Math.Pow(m, i) * Math.Pow(term, 2) / above above += 2 below += 2 Next sum *= 0.5 * Math.PI Return sum End Function Friend Partial NotInheritable Class Defined Private Sub New() End Sub ' Note: most of these values for m and h/L ratio were found with Wolfram Alpha and either specific intercepts (x=0) or local minima/maxima. They should be constant. Public Const M_SKETCHY As Double = 0.95 ' value of the m parameter where the curvature near the ends of the curve gets wonky Public Const M_MAX As Double = 0.993 ' maximum useful value of the m parameter, above which this algorithm for the form of the curve breaks down Public Const M_ZERO_W As Double = 0.826114765984970336 ' value of the m parameter when width = 0 Public Const M_MAXHEIGHT As Double = 0.701327460663101223 ' value of the m parameter at maximum possible height of the bent rod/wire Public Const M_DOUBLE_W As Double = 0.180254422335013983 ' minimum value of the m parameter when two width values are possible for a given height and length Public Const DOUBLE_W_HL_RATIO As Double = 0.257342117984635757 ' value of the height/length ratio above which there are two possible width values Public Const MAX_HL_RATIO As Double = 0.403140189705650243 ' maximum possible value of the height/length ratio Public Const MAXERR As Double = 0.0000000001 ' error tolerance Public Const MAXIT As Integer = 100 ' maximum number of iterations Public Const ROUNDTO As Integer = 10 ' number of decimal places to round off to Public Const CURVEDIVS As Integer = 50 ' number of sample points for building the curve (or half-curve as it were) End Class</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 < 10), you might have to increase the constant ROUNDTO at the bottom ' ' REFERENCES: ' {1} "The elastic rod" by M.E. Pacheco Q. & E. Pina, http://www.scielo.org.mx/pdf/rmfe/v53n2/v53n2a8.pdf ' {2} "An experiment in nonlinear beam theory" by A. Valiente, http://www.deepdyve.com/lp/doc/I3lwnxdfGz , also here: http://tiny.cc/Valiente_AEiNBT ' {3} "Snap buckling, writhing and Loop formation In twisted rods" by V.G.A. GOSS, http://myweb.lsbu.ac.uk/~gossga/thesisFinal.pdf ' {4} "Theory of Elastic Stability" by Stephen Timoshenko, http://www.scribd.com/doc/50402462/Timoshenko-Theory-of-Elastic-Stability (start on p. 76) ' ' INPUT: ' PtA - First anchor point (required) ' PtB - Second anchor point (optional, though 2 out of the 4--length, width, height, angle--need to be specified) ' [note that PtB can be the same as PtA (meaning width would be zero)] ' [also note that if a different width is additionally specified that's not equal to the distance between PtA and PtB, then the end point will not equal PtB anymore] ' Pln - Plane of the bent rod/wire, which bends up in the +y direction. The line between PtA and PtB (if specified) must be parallel to the x-axis of this plane ' ' ** 2 of the following 4 need to be specified ** ' Len - Length of the rod/wire, which needs to be > 0 ' Wid - Width between the endpoints of the curve [note: if PtB is specified in addition, and distance between PtA and PtB <> width, the end point will be relocated ' Ht - Height of the bent rod/wire (when negative, curve will bend downward, relative to the input plane, instead) ' Ang - Inner departure angle or tangent angle (in radians) at the ends of the bent rod/wire. Set up so as width approaches length (thus height approaches zero), angle approaches zero ' ' * Following variables only needed for optional calculating of bending force, not for shape of curve. ' E - Young's modulus (modulus of elasticity) in GPa (=N/m^2) (material-specific. for example, 7075 aluminum is roughly 71.7 GPa) ' I - Second moment of area (or area moment of inertia) in m^4 (cross-section-specific. for example, a hollow rod ' would have I = pi * (outer_diameter^4 - inner_diameter^4) / 32 ' Note: E*I is also known as flexural rigidity or bending stiffness ' ' OUTPUT: ' out - only for debugging messages ' Pts - the list of points that approximate the shape of the elastica ' Crv - the 3rd-degree curve interpolated from those points (with accurate start & end tangents) ' L - the length of the rod/wire ' W - the distance (width) between the endpoints of the rod/wire ' H - the height of the bent rod/wire ' A - the tangent angle at the (start) end of the rod/wire ' F - the force needed to hold the rod/wire in a specific shape (based on the material properties & cross-section) **be sure your units for 'I' match your units for the ' rest of your inputs (length, width, etc.). Also note that the critical buckling load (force) that makes the rod/wire start to bend can be found at height=0 ' ' THANKS TO: ' Mårten Nettelbladt (thegeometryofbending.blogspot.com) ' Daniel Piker (Kangaroo plugin) ' David Rutten (Grasshopper guru) ' Euler & Bernoulli (the O.G.'s) ' ' ----------------------------------------------------------------- Dim ignoreSelfIntersecting As Boolean = False ' set to True if you don't want to output curves where width < 0, which creates a self-intersecting curve Dim inCt As Integer = 0 ' count the number of required parameters that are receiving data Dim length As Double Dim width As System.Object = Nothing ' need to set as Nothing so we can check if it has been assigned a value later Dim height As Double Dim angle As Double Dim m As Double Dim multiple_m As New List(Of Double) Dim AtoB As Line Dim flip_H As Boolean = False ' if height is negative, this flag will be set Dim flip_A As Boolean = False ' if angle is negative, this flag will be set If Not IsSet("Pln") Then Msg("error", "Base plane is not set") Return End If If Not IsSet("PtA") Then Msg("error", "Point A is not set") Return End If If Math.Round(Pln.DistanceTo(PtA), Defined.ROUNDTO) <> 0 Then Msg("error", "Point A is not on the base plane") Return End If Dim refPlane As Plane = Pln ' create a reference plane = input plane and set the origin of it to PtA in case PtA isn't the origin already refPlane.Origin = PtA If IsSet("PtB") Then If Math.Round(Pln.DistanceTo(PtB), Defined.ROUNDTO) <> 0 Then Msg("error", "Point B is not on the base plane") Return End If AtoB = New Line(PtA, PtB) If AtoB.Length <> 0 And Not AtoB.Direction.IsPerpendicularTo(Pln.YAxis) Then Msg("error", "The line between PtA and PtB is not perpendicular to the Y-axis of the specified plane") Return End If inCt += 1 If IsSet("Wid") Then Msg("info", "Wid will override the distance between PtA and PtB. If you do not want this to happen, disconnect PtB or Wid.") width = PtA.DistanceTo(PtB) ' get the width (distance) between PtA and PtB Dim refPtB As Point3d refPlane.RemapToPlaneSpace(PtB, refPtB) If refPtB.X < 0 Then width = -width ' check if PtB is to the left of PtA...if so, width is negative End If If IsSet("Len") Then inCt += 1 If IsSet("Wid") Then inCt += 1 If IsSet("Ht") Then inCt += 1 If IsSet("Ang") Then inCt += 1 If inCt > 2 Then Msg("info", "More parameters set than are required (out of length, width, height, angle). Only using the first two valid ones.") ' check for connected/specified inputs. note: only the first two that it comes across will be used If IsSet("Len") Then ' if length is specified then... If Len <= 0 Then Msg("error", "Length cannot be negative or zero") Return End If If IsSet("Wid") Then ' find height & angle based on length and specified width If Wid > Len Then Msg("error", "Width is greater than length") Return End If If Wid = Len Then ' skip the solver and set the known values height = 0 m = 0 angle = 0 width = Wid Else m = SolveMFromLenWid(Len, Wid) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) angle = Cal_A(m) ' Acos(1 - 2 * m) width = Wid End If Else If width IsNot Nothing Then ' find height & angle based on length and calculated width (distance between PtA and PtB) If width > Len Then Msg("error", "Width is greater than length") Return End If If width = Len Then ' skip the solver and set the known values height = 0 m = 0 angle = 0 Else m = SolveMFromLenWid(Len, width) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If Else If IsSet("Ht") Then ' find width & angle based on length and height ** possible to return 2 results ** If Math.Abs(Ht / Len) > Defined.MAX_HL_RATIO Then Msg("error", "Height not possible with given length") Return End If If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values width = Len angle = 0 Else multiple_m = SolveMFromLenHt(Len, Ht) ' note that it's possible for two values of m to be found if height is close to max height If multiple_m.Count = 1 Then ' if there's only one m value returned, calculate the width & angle here. we'll deal with multiple m values later m = multiple_m.Item(0) width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1) angle = Cal_A(m) ' Acos(1 - 2 * m) End If End If height = Ht Else If IsSet("Ang") Then ' find width & height based on length and angle If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values width = Len height = 0 Else width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to length") Return End If length = Len Else If IsSet("Wid") Then ' if width is specified then... If IsSet("Ht") Then ' find length & angle based on specified width and height If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values length = Wid angle = 0 Else m = SolveMFromWidHt(Wid, Ht) length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If height = Ht Else If IsSet("Ang") Then ' find length & height based on specified width and angle If Wid = 0 Then Msg("error", "Curve not possible with width = 0 and an angle as inputs") Return End If If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values length = Wid height = 0 Else length = Wid / (2 * EllipticE(m) / EllipticK(m) - 1) If length < 0 Then Msg("error", "Curve not possible at specified width and angle (calculated length is negative)") Return End If height = Cal_H(length, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to width (Wid)") Return End If width = Wid Else If width IsNot Nothing Then ' if width is determined by PtA and PtB then... If IsSet("Ht") Then ' find length & angle based on calculated width and height If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values length = width angle = 0 Else m = SolveMFromWidHt(width, Ht) length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If height = Ht Else If IsSet("Ang") Then ' find length & height based on calculated width and angle If width = 0 Then Msg("error", "Curve not possible with width = 0 and an angle as inputs") Return End If If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values length = width height = 0 Else length = width / (2 * EllipticE(m) / EllipticK(m) - 1) If length < 0 Then Msg("error", "Curve not possible at specified width and angle (calculated length is negative)") Return End If height = Cal_H(length, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to PtA and PtB") Return End If Else If IsSet("Ht") Then ' if height is specified then... If IsSet("Ang") Then ' find length & width based on height and angle If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_H = True flip_A = True End If If Ht = 0 Then Msg("error", "Height can't = 0 if only height and angle are specified") Return Else If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = Not flip_A flip_H = Not flip_H End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then Msg("error", "Angle can't = 0 if only height and angle are specified") Return Else length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) width = Cal_W(length, m) ' L * (2 * E(m) / K(m) - 1) End If angle = Ang End If height = Ht Else Msg("error", "Need to specify one more parameter in addition to height") Return End If Else If IsSet("Ang") Then Msg("error", "Need to specify one more parameter in addition to angle") Return Else Msg("error", "Need to specify two of the four parameters: length, width (or PtB), height, and angle") Return End If If m > Defined.M_MAX Then Msg("error", "Form of curve not solvable with current algorithm and given inputs") Return End If refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2) If multiple_m.Count > 1 Then ' if there is more than one m value returned, calculate the width, angle, and curve for each Dim multi_pts As New DataTree(Of Point3d) Dim multi_crv As New List(Of Curve) Dim tmp_pts As New List(Of Point3d) Dim multi_W, multi_A, multi_F As New List(Of Double) Dim j As Integer = 0 ' used for creating a new branch (GH_Path) for storing pts which is itself a list of points For Each m_val As Double In multiple_m width = Cal_W(length, m_val) 'length * (2 * EllipticE(m_val) / EllipticK(m_val) - 1) If width < 0 And ignoreSelfIntersecting Then Msg("warning", "One curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False") Continue For End If If m_val >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve whose width = " & Math.Round(width, 4) & " is not guaranteed") angle = Cal_A(m_val) 'Math.Asin(2 * m_val - 1) refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2) tmp_pts = FindBendForm(length, width, m_val, angle, refPlane) multi_pts.AddRange(tmp_pts, New GH_Path(j)) multi_crv.Add(MakeCurve(tmp_pts, angle, refPlane)) multi_W.Add(width) If flip_A Then angle = -angle multi_A.Add(angle) E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2) multi_F.Add(EllipticK(m_val) ^ 2 * E * I / length ^ 2) ' from reference {4} pg. 79 j += 1 refPlane.Origin = PtA ' reset the reference plane origin to PtA for the next m_val 'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m_val & ", k=" & Math.Sqrt(m_val) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height) Next ' assign the outputs Pts = multi_pts Crv = multi_crv L = length W = multi_W If flip_H Then height = -height H = height A = multi_A F = multi_F Else ' only deal with the single m value If m >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve at these parameters is not guaranteed") If width < 0 And ignoreSelfIntersecting Then Msg("error", "Curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False") Return End If Pts = FindBendForm(length, width, m, angle, refPlane) Crv = MakeCurve(pts, angle, refPlane) L = length W = width If flip_H Then height = -height H = height If flip_A Then angle = -angle A = angle E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2) F = EllipticK(m) ^ 2 * E * I / length ^ 2 ' from reference {4} pg. 79. Note: the critical buckling (that makes the rod/wire start to bend) can be found at height=0 (width=length) 'height = Math.Sqrt(((2 * Len / 5) ^ 2 - ((Wid - Len / 5) / 2) ^ 2) ' quick approximation discovered by Mårten of 'Geometry of Bending' fame ( http://tiny.cc/it2pbx ) 'width = (Len +/- 2 * Math.Sqrt(4 * Len ^ 2 - 25 * Ht ^ 2)) / 5 ' derived from above 'length = (2 * Math.Sqrt(15 * Ht ^ 2 + 4 * Wid ^ 2) - Wid) / 3 ' derived from above 'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m & ", k=" & Math.Sqrt(m) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height) End If </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 > -1 Then Return Component.Params.Input.ElementAt(i).DataType > 1 ' input parameter DataType of 1 means it's not receiving input (internal or external) Else Msg("error", "Input parameter '" & param & "' not found") Return False End If End Function Private Sub Msg(ByVal type As String, ByVal msg As String) ' Output an error, warning, or informational message Select Case type Case "error" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, msg) Print("Error: " & msg) Case "warning" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, msg) Print("Warning: " & msg) Case "info" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Remark, msg) Print(msg) End Select End Sub ' Solve for the m parameter from length and width (reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m)) Private Function SolveMFromLenWid(ByVal L As Double, ByVal w As Double) As Double If w = 0 Then Return Defined.M_ZERO_W ' for the boundry condition width = 0, bypass the function and return the known m value End If Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim m As Double Dim cwl As Double Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 cwl = 2 * EllipticE(m) / EllipticK(m) - 1 ' calculate w/L with the test value of m If cwl < w / L Then ' compares the calculated w/L with the actual w/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop Return m End Function ' Solve for the m parameter from length and height (reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m)) ' Note that it's actually possible to find 2 valid values for m (hence 2 width values) at certain height values Private Function SolveMFromLenHt(ByVal L As Double, ByVal h As Double) As List(Of Double) Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim twoWidths As Boolean = h / L >= Defined.DOUBLE_W_HL_RATIO And h / L < Defined.MAX_HL_RATIO ' check to see if h/L is within the range where 2 solutions for the width are possible Dim m As Double Dim mult_m As New List(Of Double) Dim chl As Double If twoWidths Then ' find the first of two possible solutions for m with the following limits: lower = Defined.M_DOUBLE_W ' see constants at bottom of script upper = Defined.M_MAXHEIGHT ' see constants at bottom of script Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop mult_m.Add(m) ' then find the second of two possible solutions for m with the following limits: lower = Defined.M_MAXHEIGHT ' see constants at bottom of script upper = 1 Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl < h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop If m <= Defined.M_MAX Then ' return this m parameter only if it falls within the maximum useful value (above which the curve breaks down) mult_m.Add(m) End If Else ' find the one possible solution for the m parameter upper = Defined.M_DOUBLE_W ' limit the upper end of the search to the maximum value of m for which only one solution exists Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop mult_m.Add(m) End If Return mult_m End Function ' Solve for the m parameter from width and height (derived from reference {1} equations (33) and (34) with same notes as above) Private Function SolveMFromWidHt(ByVal w As Double, ByVal h As Double) As Double Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim m As Double Dim cwh As Double Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 cwh = (2 * EllipticE(m) - EllipticK(m)) / Math.Sqrt(m) ' calculate w/h with the test value of m If cwh < w / h Then ' compares the calculated w/h with the actual w/h then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop Return m End Function ' Calculate length based on height and an m parameter, derived from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m) Private Function Cal_L(ByVal h As Double, ByVal m As Double) As Double Return h * EllipticK(m) / Math.Sqrt(m) End Function ' Calculate width based on length and an m parameter, derived from reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m) Private Function Cal_W(ByVal L As Double, ByVal m As Double) As Double Return L * (2 * EllipticE(m) / EllipticK(m) - 1) End Function ' Calculate height based on length and an m parameter, from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m) Private Function Cal_H(ByVal L As Double, ByVal m As Double) As Double Return L * Math.Sqrt(m) / EllipticK(m) End Function ' Calculate the unique m parameter based on a start tangent angle, from reference {2}, just above equation (9a), that states k = Sin(angle / 2 + Pi / 4), ' but as m = k^2 and due to this script's need for an angle rotated 90° versus the one in reference {1}, the following formula is the result ' New note: verified by reference {4}, pg. 78 at the bottom Private Function Cal_M(ByVal a As Double) As Double Return (1 - Math.Cos(a)) / 2 ' equal to Sin^2(a/2) too End Function ' Calculate start tangent angle based on an m parameter, derived from above formula Private Function Cal_A(ByVal m As Double) As Double Return Math.Acos(1 - 2 * m) End Function ' This is the heart of this script, taking the found (or specified) length, width, and angle values along with the found m parameter to create ' a list of points that approximate the shape or form of the elastica. It works by finding the x and y coordinates (which are reversed versus ' the original equations (12a) and (12b) from reference {2} due to the 90° difference in orientation) based on the tangent angle along the curve. ' See reference {2} for more details on how they derived it. Note that to simplify things, the algorithm only calculates the points for half of the ' curve, then mirrors those points along the y-axis. Private Function FindBendForm(ByVal L As Double, ByVal w As Double, ByVal m As Double, ByVal ang As Double, ByVal refPln As Plane) As List(Of Point3d) L = L / 2 ' because the below algorithm is based on the formulas in reference {2} for only half of the curve w = w / 2 ' same If ang = 0 Then ' if angle (and height) = 0, then simply return the start and end points of the straight line Dim out As New List(Of Point3d) out.Add(refPln.PointAt(w, 0, 0)) out.Add(refPln.PointAt(-w, 0, 0)) Return out End If Dim x As Double Dim y As Double Dim halfCurvePts As New List(Of Point3d) Dim fullCurvePts As New List(Of Point3d) Dim translatedPts As New List(Of Point3d) ang -= Math.PI / 2 ' a hack to allow this algorithm to work, since the original curve in paper {2} was rotated 90° Dim angB As Double = ang + (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' angB is the 'lowercase theta' which should be in formula {2}(12b) as the interval ' start [a typo...see equation(3)]. It's necessary to start angB at ang + [interval] instead of just ang due to integration failing at angB = ang halfCurvePts.Add(New Point3d(w, 0, 0)) ' start with this known initial point, as integration will fail when angB = ang ' each point {x, y} is calculated from the tangent angle, angB, that occurs at each point (which is why this iterates from ~ang to -pi/2, the known end condition) Do While Math.Round(angB, Defined.ROUNDTO) >= Math.Round(-Math.PI / 2, Defined.ROUNDTO) y = (Math.Sqrt(2) * Math.Sqrt(Math.Sin(ang) - Math.Sin(angB)) * (w + L)) / (2 * EllipticE(m)) ' note that x and y are swapped vs. (12a) and (12b) x = (L / (Math.Sqrt(2) * EllipticK(m))) * Simpson(angB, -Math.PI / 2, 500, ang) ' calculate the Simpson approximation of the integral (function f below) ' over the interval angB ('lowercase theta') to -pi/2. side note: is 500 too few iterations for the Simson algorithm? If Math.Round(x, Defined.ROUNDTO) = 0 Then x = 0 halfCurvePts.Add(New Point3d(x, y, 0)) angB += (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' onto the next tangent angle Loop ' After finding the x and y values for half of the curve, add the {-x, y} values for the rest of the curve For Each point As Point3d In halfCurvePts If Math.Round(point.X, Defined.ROUNDTO) = 0 Then If Math.Round(point.Y, Defined.ROUNDTO) = 0 Then fullCurvePts.Add(New Point3d(0, 0, 0)) ' special case when width = 0: when x = 0, only duplicate the point when y = 0 too End If Else fullCurvePts.Add(New Point3d(-point.X, point.Y, 0)) End If Next halfCurvePts.Reverse fullCurvePts.AddRange(halfCurvePts) For Each p As Point3d In fullCurvePts translatedPts.Add(refPln.PointAt(p.X, p.Y, p.Z)) ' translate the points from the reference plane to the world plane Next Return translatedPts End Function ' Interpolates the points from FindBendForm to create the Elastica curve. Uses start & end tangents for greater accuracy. Private Function MakeCurve(ByVal pts As List(Of Point3d), ByVal ang As Double, ByVal refPln As Plane) As Curve If ang <> 0 Then Dim ts, te As New Vector3d(refPln.XAxis) ts.Rotate(ang, refPln.ZAxis) te.Rotate(-ang, refPln.ZAxis) Return Curve.CreateInterpolatedCurve(pts, 3, CurveKnotStyle.Chord, ts, te) ' 3rd degree curve with 'Chord' Knot Style Else Return Curve.CreateInterpolatedCurve(pts, 3) ' if angle (and height) = 0, then simply interpolate the straight line (no start/end tangents) End If End Function ' Implements the Simpson approximation for an integral of function f below Public Function Simpson(a As Double, b As Double, n As Integer, theta As Double) As Double 'n should be an even number Dim j As Integer, s1 As Double, s2 As Double, h As Double h = (b - a) / n s1 = 0 s2 = 0 For j = 1 To n - 1 Step 2 s1 = s1 + fn(a + j * h, theta) Next j For j = 2 To n - 2 Step 2 s2 = s2 + fn(a + j * h, theta) Next j Simpson = h / 3 * (fn(a, theta) + 4 * s1 + 2 * s2 + fn(b, theta)) End Function ' Specific calculation for the above integration Public Function fn(x As Double, theta As Double) As Double fn = Math.Sin(x) / (Math.Sqrt(Math.Sin(theta) - Math.Sin(x))) ' from reference {2} formula (12b) End Function ' Return the Complete Elliptic integral of the 1st kind ' Abramowitz and Stegun p.591, formula 17.3.11 ' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals Public Function EllipticK(ByVal m As Double) As Double Dim sum, term, above, below As Double sum = 1 term = 1 above = 1 below = 2 For i As Integer = 1 To 100 term *= above / below sum += Math.Pow(m, i) * Math.Pow(term, 2) above += 2 below += 2 Next sum *= 0.5 * Math.PI Return sum End Function ' Return the Complete Elliptic integral of the 2nd kind ' Abramowitz and Stegun p.591, formula 17.3.12 ' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals Public Function EllipticE(ByVal m As Double) As Double Dim sum, term, above, below As Double sum = 1 term = 1 above = 1 below = 2 For i As Integer = 1 To 100 term *= above / below sum -= Math.Pow(m, i) * Math.Pow(term, 2) / above above += 2 below += 2 Next sum *= 0.5 * Math.PI Return sum End Function Friend Partial NotInheritable Class Defined Private Sub New() End Sub ' Note: most of these values for m and h/L ratio were found with Wolfram Alpha and either specific intercepts (x=0) or local minima/maxima. They should be constant. Public Const M_SKETCHY As Double = 0.95 ' value of the m parameter where the curvature near the ends of the curve gets wonky Public Const M_MAX As Double = 0.993 ' maximum useful value of the m parameter, above which this algorithm for the form of the curve breaks down Public Const M_ZERO_W As Double = 0.826114765984970336 ' value of the m parameter when width = 0 Public Const M_MAXHEIGHT As Double = 0.701327460663101223 ' value of the m parameter at maximum possible height of the bent rod/wire Public Const M_DOUBLE_W As Double = 0.180254422335013983 ' minimum value of the m parameter when two width values are possible for a given height and length Public Const DOUBLE_W_HL_RATIO As Double = 0.257342117984635757 ' value of the height/length ratio above which there are two possible width values Public Const MAX_HL_RATIO As Double = 0.403140189705650243 ' maximum possible value of the height/length ratio Public Const MAXERR As Double = 0.0000000001 ' error tolerance Public Const MAXIT As Integer = 100 ' maximum number of iterations Public Const ROUNDTO As Integer = 10 ' number of decimal places to round off to Public Const CURVEDIVS As Integer = 50 ' number of sample points for building the curve (or half-curve as it were) End Class</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 < 10), you might have to increase the constant ROUNDTO at the bottom ' ' REFERENCES: ' {1} "The elastic rod" by M.E. Pacheco Q. & E. Pina, http://www.scielo.org.mx/pdf/rmfe/v53n2/v53n2a8.pdf ' {2} "An experiment in nonlinear beam theory" by A. Valiente, http://www.deepdyve.com/lp/doc/I3lwnxdfGz , also here: http://tiny.cc/Valiente_AEiNBT ' {3} "Snap buckling, writhing and Loop formation In twisted rods" by V.G.A. GOSS, http://myweb.lsbu.ac.uk/~gossga/thesisFinal.pdf ' {4} "Theory of Elastic Stability" by Stephen Timoshenko, http://www.scribd.com/doc/50402462/Timoshenko-Theory-of-Elastic-Stability (start on p. 76) ' ' INPUT: ' PtA - First anchor point (required) ' PtB - Second anchor point (optional, though 2 out of the 4--length, width, height, angle--need to be specified) ' [note that PtB can be the same as PtA (meaning width would be zero)] ' [also note that if a different width is additionally specified that's not equal to the distance between PtA and PtB, then the end point will not equal PtB anymore] ' Pln - Plane of the bent rod/wire, which bends up in the +y direction. The line between PtA and PtB (if specified) must be parallel to the x-axis of this plane ' ' ** 2 of the following 4 need to be specified ** ' Len - Length of the rod/wire, which needs to be > 0 ' Wid - Width between the endpoints of the curve [note: if PtB is specified in addition, and distance between PtA and PtB <> width, the end point will be relocated ' Ht - Height of the bent rod/wire (when negative, curve will bend downward, relative to the input plane, instead) ' Ang - Inner departure angle or tangent angle (in radians) at the ends of the bent rod/wire. Set up so as width approaches length (thus height approaches zero), angle approaches zero ' ' * Following variables only needed for optional calculating of bending force, not for shape of curve. ' E - Young's modulus (modulus of elasticity) in GPa (=N/m^2) (material-specific. for example, 7075 aluminum is roughly 71.7 GPa) ' I - Second moment of area (or area moment of inertia) in m^4 (cross-section-specific. for example, a hollow rod ' would have I = pi * (outer_diameter^4 - inner_diameter^4) / 32 ' Note: E*I is also known as flexural rigidity or bending stiffness ' ' OUTPUT: ' out - only for debugging messages ' Pts - the list of points that approximate the shape of the elastica ' Crv - the 3rd-degree curve interpolated from those points (with accurate start & end tangents) ' L - the length of the rod/wire ' W - the distance (width) between the endpoints of the rod/wire ' H - the height of the bent rod/wire ' A - the tangent angle at the (start) end of the rod/wire ' F - the force needed to hold the rod/wire in a specific shape (based on the material properties & cross-section) **be sure your units for 'I' match your units for the ' rest of your inputs (length, width, etc.). Also note that the critical buckling load (force) that makes the rod/wire start to bend can be found at height=0 ' ' THANKS TO: ' Mårten Nettelbladt (thegeometryofbending.blogspot.com) ' Daniel Piker (Kangaroo plugin) ' David Rutten (Grasshopper guru) ' Euler & Bernoulli (the O.G.'s) ' ' ----------------------------------------------------------------- Dim ignoreSelfIntersecting As Boolean = False ' set to True if you don't want to output curves where width < 0, which creates a self-intersecting curve Dim inCt As Integer = 0 ' count the number of required parameters that are receiving data Dim length As Double Dim width As System.Object = Nothing ' need to set as Nothing so we can check if it has been assigned a value later Dim height As Double Dim angle As Double Dim m As Double Dim multiple_m As New List(Of Double) Dim AtoB As Line Dim flip_H As Boolean = False ' if height is negative, this flag will be set Dim flip_A As Boolean = False ' if angle is negative, this flag will be set If Not IsSet("Pln") Then Msg("error", "Base plane is not set") Return End If If Not IsSet("PtA") Then Msg("error", "Point A is not set") Return End If If Math.Round(Pln.DistanceTo(PtA), Defined.ROUNDTO) <> 0 Then Msg("error", "Point A is not on the base plane") Return End If Dim refPlane As Plane = Pln ' create a reference plane = input plane and set the origin of it to PtA in case PtA isn't the origin already refPlane.Origin = PtA If IsSet("PtB") Then If Math.Round(Pln.DistanceTo(PtB), Defined.ROUNDTO) <> 0 Then Msg("error", "Point B is not on the base plane") Return End If AtoB = New Line(PtA, PtB) If AtoB.Length <> 0 And Not AtoB.Direction.IsPerpendicularTo(Pln.YAxis) Then Msg("error", "The line between PtA and PtB is not perpendicular to the Y-axis of the specified plane") Return End If inCt += 1 If IsSet("Wid") Then Msg("info", "Wid will override the distance between PtA and PtB. If you do not want this to happen, disconnect PtB or Wid.") width = PtA.DistanceTo(PtB) ' get the width (distance) between PtA and PtB Dim refPtB As Point3d refPlane.RemapToPlaneSpace(PtB, refPtB) If refPtB.X < 0 Then width = -width ' check if PtB is to the left of PtA...if so, width is negative End If If IsSet("Len") Then inCt += 1 If IsSet("Wid") Then inCt += 1 If IsSet("Ht") Then inCt += 1 If IsSet("Ang") Then inCt += 1 If inCt > 2 Then Msg("info", "More parameters set than are required (out of length, width, height, angle). Only using the first two valid ones.") ' check for connected/specified inputs. note: only the first two that it comes across will be used If IsSet("Len") Then ' if length is specified then... If Len <= 0 Then Msg("error", "Length cannot be negative or zero") Return End If If IsSet("Wid") Then ' find height & angle based on length and specified width If Wid > Len Then Msg("error", "Width is greater than length") Return End If If Wid = Len Then ' skip the solver and set the known values height = 0 m = 0 angle = 0 width = Wid Else m = SolveMFromLenWid(Len, Wid) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) angle = Cal_A(m) ' Acos(1 - 2 * m) width = Wid End If Else If width IsNot Nothing Then ' find height & angle based on length and calculated width (distance between PtA and PtB) If width > Len Then Msg("error", "Width is greater than length") Return End If If width = Len Then ' skip the solver and set the known values height = 0 m = 0 angle = 0 Else m = SolveMFromLenWid(Len, width) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If Else If IsSet("Ht") Then ' find width & angle based on length and height ** possible to return 2 results ** If Math.Abs(Ht / Len) > Defined.MAX_HL_RATIO Then Msg("error", "Height not possible with given length") Return End If If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values width = Len angle = 0 Else multiple_m = SolveMFromLenHt(Len, Ht) ' note that it's possible for two values of m to be found if height is close to max height If multiple_m.Count = 1 Then ' if there's only one m value returned, calculate the width & angle here. we'll deal with multiple m values later m = multiple_m.Item(0) width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1) angle = Cal_A(m) ' Acos(1 - 2 * m) End If End If height = Ht Else If IsSet("Ang") Then ' find width & height based on length and angle If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values width = Len height = 0 Else width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to length") Return End If length = Len Else If IsSet("Wid") Then ' if width is specified then... If IsSet("Ht") Then ' find length & angle based on specified width and height If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values length = Wid angle = 0 Else m = SolveMFromWidHt(Wid, Ht) length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If height = Ht Else If IsSet("Ang") Then ' find length & height based on specified width and angle If Wid = 0 Then Msg("error", "Curve not possible with width = 0 and an angle as inputs") Return End If If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values length = Wid height = 0 Else length = Wid / (2 * EllipticE(m) / EllipticK(m) - 1) If length < 0 Then Msg("error", "Curve not possible at specified width and angle (calculated length is negative)") Return End If height = Cal_H(length, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to width (Wid)") Return End If width = Wid Else If width IsNot Nothing Then ' if width is determined by PtA and PtB then... If IsSet("Ht") Then ' find length & angle based on calculated width and height If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values length = width angle = 0 Else m = SolveMFromWidHt(width, Ht) length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If height = Ht Else If IsSet("Ang") Then ' find length & height based on calculated width and angle If width = 0 Then Msg("error", "Curve not possible with width = 0 and an angle as inputs") Return End If If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values length = width height = 0 Else length = width / (2 * EllipticE(m) / EllipticK(m) - 1) If length < 0 Then Msg("error", "Curve not possible at specified width and angle (calculated length is negative)") Return End If height = Cal_H(length, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to PtA and PtB") Return End If Else If IsSet("Ht") Then ' if height is specified then... If IsSet("Ang") Then ' find length & width based on height and angle If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_H = True flip_A = True End If If Ht = 0 Then Msg("error", "Height can't = 0 if only height and angle are specified") Return Else If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = Not flip_A flip_H = Not flip_H End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then Msg("error", "Angle can't = 0 if only height and angle are specified") Return Else length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) width = Cal_W(length, m) ' L * (2 * E(m) / K(m) - 1) End If angle = Ang End If height = Ht Else Msg("error", "Need to specify one more parameter in addition to height") Return End If Else If IsSet("Ang") Then Msg("error", "Need to specify one more parameter in addition to angle") Return Else Msg("error", "Need to specify two of the four parameters: length, width (or PtB), height, and angle") Return End If If m > Defined.M_MAX Then Msg("error", "Form of curve not solvable with current algorithm and given inputs") Return End If refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2) If multiple_m.Count > 1 Then ' if there is more than one m value returned, calculate the width, angle, and curve for each Dim multi_pts As New DataTree(Of Point3d) Dim multi_crv As New List(Of Curve) Dim tmp_pts As New List(Of Point3d) Dim multi_W, multi_A, multi_F As New List(Of Double) Dim j As Integer = 0 ' used for creating a new branch (GH_Path) for storing pts which is itself a list of points For Each m_val As Double In multiple_m width = Cal_W(length, m_val) 'length * (2 * EllipticE(m_val) / EllipticK(m_val) - 1) If width < 0 And ignoreSelfIntersecting Then Msg("warning", "One curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False") Continue For End If If m_val >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve whose width = " & Math.Round(width, 4) & " is not guaranteed") angle = Cal_A(m_val) 'Math.Asin(2 * m_val - 1) refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2) tmp_pts = FindBendForm(length, width, m_val, angle, refPlane) multi_pts.AddRange(tmp_pts, New GH_Path(j)) multi_crv.Add(MakeCurve(tmp_pts, angle, refPlane)) multi_W.Add(width) If flip_A Then angle = -angle multi_A.Add(angle) E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2) multi_F.Add(EllipticK(m_val) ^ 2 * E * I / length ^ 2) ' from reference {4} pg. 79 j += 1 refPlane.Origin = PtA ' reset the reference plane origin to PtA for the next m_val 'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m_val & ", k=" & Math.Sqrt(m_val) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height) Next ' assign the outputs Pts = multi_pts Crv = multi_crv L = length W = multi_W If flip_H Then height = -height H = height A = multi_A F = multi_F Else ' only deal with the single m value If m >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve at these parameters is not guaranteed") If width < 0 And ignoreSelfIntersecting Then Msg("error", "Curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False") Return End If Pts = FindBendForm(length, width, m, angle, refPlane) Crv = MakeCurve(pts, angle, refPlane) L = length W = width If flip_H Then height = -height H = height If flip_A Then angle = -angle A = angle E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2) F = EllipticK(m) ^ 2 * E * I / length ^ 2 ' from reference {4} pg. 79. Note: the critical buckling (that makes the rod/wire start to bend) can be found at height=0 (width=length) 'height = Math.Sqrt(((2 * Len / 5) ^ 2 - ((Wid - Len / 5) / 2) ^ 2) ' quick approximation discovered by Mårten of 'Geometry of Bending' fame ( http://tiny.cc/it2pbx ) 'width = (Len +/- 2 * Math.Sqrt(4 * Len ^ 2 - 25 * Ht ^ 2)) / 5 ' derived from above 'length = (2 * Math.Sqrt(15 * Ht ^ 2 + 4 * Wid ^ 2) - Wid) / 3 ' derived from above 'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m & ", k=" & Math.Sqrt(m) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height) End If </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 > -1 Then Return Component.Params.Input.ElementAt(i).DataType > 1 ' input parameter DataType of 1 means it's not receiving input (internal or external) Else Msg("error", "Input parameter '" & param & "' not found") Return False End If End Function Private Sub Msg(ByVal type As String, ByVal msg As String) ' Output an error, warning, or informational message Select Case type Case "error" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, msg) Print("Error: " & msg) Case "warning" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, msg) Print("Warning: " & msg) Case "info" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Remark, msg) Print(msg) End Select End Sub ' Solve for the m parameter from length and width (reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m)) Private Function SolveMFromLenWid(ByVal L As Double, ByVal w As Double) As Double If w = 0 Then Return Defined.M_ZERO_W ' for the boundry condition width = 0, bypass the function and return the known m value End If Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim m As Double Dim cwl As Double Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 cwl = 2 * EllipticE(m) / EllipticK(m) - 1 ' calculate w/L with the test value of m If cwl < w / L Then ' compares the calculated w/L with the actual w/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop Return m End Function ' Solve for the m parameter from length and height (reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m)) ' Note that it's actually possible to find 2 valid values for m (hence 2 width values) at certain height values Private Function SolveMFromLenHt(ByVal L As Double, ByVal h As Double) As List(Of Double) Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim twoWidths As Boolean = h / L >= Defined.DOUBLE_W_HL_RATIO And h / L < Defined.MAX_HL_RATIO ' check to see if h/L is within the range where 2 solutions for the width are possible Dim m As Double Dim mult_m As New List(Of Double) Dim chl As Double If twoWidths Then ' find the first of two possible solutions for m with the following limits: lower = Defined.M_DOUBLE_W ' see constants at bottom of script upper = Defined.M_MAXHEIGHT ' see constants at bottom of script Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop mult_m.Add(m) ' then find the second of two possible solutions for m with the following limits: lower = Defined.M_MAXHEIGHT ' see constants at bottom of script upper = 1 Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl < h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop If m <= Defined.M_MAX Then ' return this m parameter only if it falls within the maximum useful value (above which the curve breaks down) mult_m.Add(m) End If Else ' find the one possible solution for the m parameter upper = Defined.M_DOUBLE_W ' limit the upper end of the search to the maximum value of m for which only one solution exists Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop mult_m.Add(m) End If Return mult_m End Function ' Solve for the m parameter from width and height (derived from reference {1} equations (33) and (34) with same notes as above) Private Function SolveMFromWidHt(ByVal w As Double, ByVal h As Double) As Double Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim m As Double Dim cwh As Double Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 cwh = (2 * EllipticE(m) - EllipticK(m)) / Math.Sqrt(m) ' calculate w/h with the test value of m If cwh < w / h Then ' compares the calculated w/h with the actual w/h then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop Return m End Function ' Calculate length based on height and an m parameter, derived from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m) Private Function Cal_L(ByVal h As Double, ByVal m As Double) As Double Return h * EllipticK(m) / Math.Sqrt(m) End Function ' Calculate width based on length and an m parameter, derived from reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m) Private Function Cal_W(ByVal L As Double, ByVal m As Double) As Double Return L * (2 * EllipticE(m) / EllipticK(m) - 1) End Function ' Calculate height based on length and an m parameter, from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m) Private Function Cal_H(ByVal L As Double, ByVal m As Double) As Double Return L * Math.Sqrt(m) / EllipticK(m) End Function ' Calculate the unique m parameter based on a start tangent angle, from reference {2}, just above equation (9a), that states k = Sin(angle / 2 + Pi / 4), ' but as m = k^2 and due to this script's need for an angle rotated 90° versus the one in reference {1}, the following formula is the result ' New note: verified by reference {4}, pg. 78 at the bottom Private Function Cal_M(ByVal a As Double) As Double Return (1 - Math.Cos(a)) / 2 ' equal to Sin^2(a/2) too End Function ' Calculate start tangent angle based on an m parameter, derived from above formula Private Function Cal_A(ByVal m As Double) As Double Return Math.Acos(1 - 2 * m) End Function ' This is the heart of this script, taking the found (or specified) length, width, and angle values along with the found m parameter to create ' a list of points that approximate the shape or form of the elastica. It works by finding the x and y coordinates (which are reversed versus ' the original equations (12a) and (12b) from reference {2} due to the 90° difference in orientation) based on the tangent angle along the curve. ' See reference {2} for more details on how they derived it. Note that to simplify things, the algorithm only calculates the points for half of the ' curve, then mirrors those points along the y-axis. Private Function FindBendForm(ByVal L As Double, ByVal w As Double, ByVal m As Double, ByVal ang As Double, ByVal refPln As Plane) As List(Of Point3d) L = L / 2 ' because the below algorithm is based on the formulas in reference {2} for only half of the curve w = w / 2 ' same If ang = 0 Then ' if angle (and height) = 0, then simply return the start and end points of the straight line Dim out As New List(Of Point3d) out.Add(refPln.PointAt(w, 0, 0)) out.Add(refPln.PointAt(-w, 0, 0)) Return out End If Dim x As Double Dim y As Double Dim halfCurvePts As New List(Of Point3d) Dim fullCurvePts As New List(Of Point3d) Dim translatedPts As New List(Of Point3d) ang -= Math.PI / 2 ' a hack to allow this algorithm to work, since the original curve in paper {2} was rotated 90° Dim angB As Double = ang + (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' angB is the 'lowercase theta' which should be in formula {2}(12b) as the interval ' start [a typo...see equation(3)]. It's necessary to start angB at ang + [interval] instead of just ang due to integration failing at angB = ang halfCurvePts.Add(New Point3d(w, 0, 0)) ' start with this known initial point, as integration will fail when angB = ang ' each point {x, y} is calculated from the tangent angle, angB, that occurs at each point (which is why this iterates from ~ang to -pi/2, the known end condition) Do While Math.Round(angB, Defined.ROUNDTO) >= Math.Round(-Math.PI / 2, Defined.ROUNDTO) y = (Math.Sqrt(2) * Math.Sqrt(Math.Sin(ang) - Math.Sin(angB)) * (w + L)) / (2 * EllipticE(m)) ' note that x and y are swapped vs. (12a) and (12b) x = (L / (Math.Sqrt(2) * EllipticK(m))) * Simpson(angB, -Math.PI / 2, 500, ang) ' calculate the Simpson approximation of the integral (function f below) ' over the interval angB ('lowercase theta') to -pi/2. side note: is 500 too few iterations for the Simson algorithm? If Math.Round(x, Defined.ROUNDTO) = 0 Then x = 0 halfCurvePts.Add(New Point3d(x, y, 0)) angB += (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' onto the next tangent angle Loop ' After finding the x and y values for half of the curve, add the {-x, y} values for the rest of the curve For Each point As Point3d In halfCurvePts If Math.Round(point.X, Defined.ROUNDTO) = 0 Then If Math.Round(point.Y, Defined.ROUNDTO) = 0 Then fullCurvePts.Add(New Point3d(0, 0, 0)) ' special case when width = 0: when x = 0, only duplicate the point when y = 0 too End If Else fullCurvePts.Add(New Point3d(-point.X, point.Y, 0)) End If Next halfCurvePts.Reverse fullCurvePts.AddRange(halfCurvePts) For Each p As Point3d In fullCurvePts translatedPts.Add(refPln.PointAt(p.X, p.Y, p.Z)) ' translate the points from the reference plane to the world plane Next Return translatedPts End Function ' Interpolates the points from FindBendForm to create the Elastica curve. Uses start & end tangents for greater accuracy. Private Function MakeCurve(ByVal pts As List(Of Point3d), ByVal ang As Double, ByVal refPln As Plane) As Curve If ang <> 0 Then Dim ts, te As New Vector3d(refPln.XAxis) ts.Rotate(ang, refPln.ZAxis) te.Rotate(-ang, refPln.ZAxis) Return Curve.CreateInterpolatedCurve(pts, 3, CurveKnotStyle.Chord, ts, te) ' 3rd degree curve with 'Chord' Knot Style Else Return Curve.CreateInterpolatedCurve(pts, 3) ' if angle (and height) = 0, then simply interpolate the straight line (no start/end tangents) End If End Function ' Implements the Simpson approximation for an integral of function f below Public Function Simpson(a As Double, b As Double, n As Integer, theta As Double) As Double 'n should be an even number Dim j As Integer, s1 As Double, s2 As Double, h As Double h = (b - a) / n s1 = 0 s2 = 0 For j = 1 To n - 1 Step 2 s1 = s1 + fn(a + j * h, theta) Next j For j = 2 To n - 2 Step 2 s2 = s2 + fn(a + j * h, theta) Next j Simpson = h / 3 * (fn(a, theta) + 4 * s1 + 2 * s2 + fn(b, theta)) End Function ' Specific calculation for the above integration Public Function fn(x As Double, theta As Double) As Double fn = Math.Sin(x) / (Math.Sqrt(Math.Sin(theta) - Math.Sin(x))) ' from reference {2} formula (12b) End Function ' Return the Complete Elliptic integral of the 1st kind ' Abramowitz and Stegun p.591, formula 17.3.11 ' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals Public Function EllipticK(ByVal m As Double) As Double Dim sum, term, above, below As Double sum = 1 term = 1 above = 1 below = 2 For i As Integer = 1 To 100 term *= above / below sum += Math.Pow(m, i) * Math.Pow(term, 2) above += 2 below += 2 Next sum *= 0.5 * Math.PI Return sum End Function ' Return the Complete Elliptic integral of the 2nd kind ' Abramowitz and Stegun p.591, formula 17.3.12 ' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals Public Function EllipticE(ByVal m As Double) As Double Dim sum, term, above, below As Double sum = 1 term = 1 above = 1 below = 2 For i As Integer = 1 To 100 term *= above / below sum -= Math.Pow(m, i) * Math.Pow(term, 2) / above above += 2 below += 2 Next sum *= 0.5 * Math.PI Return sum End Function Friend Partial NotInheritable Class Defined Private Sub New() End Sub ' Note: most of these values for m and h/L ratio were found with Wolfram Alpha and either specific intercepts (x=0) or local minima/maxima. They should be constant. Public Const M_SKETCHY As Double = 0.95 ' value of the m parameter where the curvature near the ends of the curve gets wonky Public Const M_MAX As Double = 0.993 ' maximum useful value of the m parameter, above which this algorithm for the form of the curve breaks down Public Const M_ZERO_W As Double = 0.826114765984970336 ' value of the m parameter when width = 0 Public Const M_MAXHEIGHT As Double = 0.701327460663101223 ' value of the m parameter at maximum possible height of the bent rod/wire Public Const M_DOUBLE_W As Double = 0.180254422335013983 ' minimum value of the m parameter when two width values are possible for a given height and length Public Const DOUBLE_W_HL_RATIO As Double = 0.257342117984635757 ' value of the height/length ratio above which there are two possible width values Public Const MAX_HL_RATIO As Double = 0.403140189705650243 ' maximum possible value of the height/length ratio Public Const MAXERR As Double = 0.0000000001 ' error tolerance Public Const MAXIT As Integer = 100 ' maximum number of iterations Public Const ROUNDTO As Integer = 10 ' number of decimal places to round off to Public Const CURVEDIVS As Integer = 50 ' number of sample points for building the curve (or half-curve as it were) End Class</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 < 10), you might have to increase the constant ROUNDTO at the bottom ' ' REFERENCES: ' {1} "The elastic rod" by M.E. Pacheco Q. & E. Pina, http://www.scielo.org.mx/pdf/rmfe/v53n2/v53n2a8.pdf ' {2} "An experiment in nonlinear beam theory" by A. Valiente, http://www.deepdyve.com/lp/doc/I3lwnxdfGz , also here: http://tiny.cc/Valiente_AEiNBT ' {3} "Snap buckling, writhing and Loop formation In twisted rods" by V.G.A. GOSS, http://myweb.lsbu.ac.uk/~gossga/thesisFinal.pdf ' {4} "Theory of Elastic Stability" by Stephen Timoshenko, http://www.scribd.com/doc/50402462/Timoshenko-Theory-of-Elastic-Stability (start on p. 76) ' ' INPUT: ' PtA - First anchor point (required) ' PtB - Second anchor point (optional, though 2 out of the 4--length, width, height, angle--need to be specified) ' [note that PtB can be the same as PtA (meaning width would be zero)] ' [also note that if a different width is additionally specified that's not equal to the distance between PtA and PtB, then the end point will not equal PtB anymore] ' Pln - Plane of the bent rod/wire, which bends up in the +y direction. The line between PtA and PtB (if specified) must be parallel to the x-axis of this plane ' ' ** 2 of the following 4 need to be specified ** ' Len - Length of the rod/wire, which needs to be > 0 ' Wid - Width between the endpoints of the curve [note: if PtB is specified in addition, and distance between PtA and PtB <> width, the end point will be relocated ' Ht - Height of the bent rod/wire (when negative, curve will bend downward, relative to the input plane, instead) ' Ang - Inner departure angle or tangent angle (in radians) at the ends of the bent rod/wire. Set up so as width approaches length (thus height approaches zero), angle approaches zero ' ' * Following variables only needed for optional calculating of bending force, not for shape of curve. ' E - Young's modulus (modulus of elasticity) in GPa (=N/m^2) (material-specific. for example, 7075 aluminum is roughly 71.7 GPa) ' I - Second moment of area (or area moment of inertia) in m^4 (cross-section-specific. for example, a hollow rod ' would have I = pi * (outer_diameter^4 - inner_diameter^4) / 32 ' Note: E*I is also known as flexural rigidity or bending stiffness ' ' OUTPUT: ' out - only for debugging messages ' Pts - the list of points that approximate the shape of the elastica ' Crv - the 3rd-degree curve interpolated from those points (with accurate start & end tangents) ' L - the length of the rod/wire ' W - the distance (width) between the endpoints of the rod/wire ' H - the height of the bent rod/wire ' A - the tangent angle at the (start) end of the rod/wire ' F - the force needed to hold the rod/wire in a specific shape (based on the material properties & cross-section) **be sure your units for 'I' match your units for the ' rest of your inputs (length, width, etc.). Also note that the critical buckling load (force) that makes the rod/wire start to bend can be found at height=0 ' ' THANKS TO: ' Mårten Nettelbladt (thegeometryofbending.blogspot.com) ' Daniel Piker (Kangaroo plugin) ' David Rutten (Grasshopper guru) ' Euler & Bernoulli (the O.G.'s) ' ' ----------------------------------------------------------------- Dim ignoreSelfIntersecting As Boolean = False ' set to True if you don't want to output curves where width < 0, which creates a self-intersecting curve Dim inCt As Integer = 0 ' count the number of required parameters that are receiving data Dim length As Double Dim width As System.Object = Nothing ' need to set as Nothing so we can check if it has been assigned a value later Dim height As Double Dim angle As Double Dim m As Double Dim multiple_m As New List(Of Double) Dim AtoB As Line Dim flip_H As Boolean = False ' if height is negative, this flag will be set Dim flip_A As Boolean = False ' if angle is negative, this flag will be set If Not IsSet("Pln") Then Msg("error", "Base plane is not set") Return End If If Not IsSet("PtA") Then Msg("error", "Point A is not set") Return End If If Math.Round(Pln.DistanceTo(PtA), Defined.ROUNDTO) <> 0 Then Msg("error", "Point A is not on the base plane") Return End If Dim refPlane As Plane = Pln ' create a reference plane = input plane and set the origin of it to PtA in case PtA isn't the origin already refPlane.Origin = PtA If IsSet("PtB") Then If Math.Round(Pln.DistanceTo(PtB), Defined.ROUNDTO) <> 0 Then Msg("error", "Point B is not on the base plane") Return End If AtoB = New Line(PtA, PtB) If AtoB.Length <> 0 And Not AtoB.Direction.IsPerpendicularTo(Pln.YAxis) Then Msg("error", "The line between PtA and PtB is not perpendicular to the Y-axis of the specified plane") Return End If inCt += 1 If IsSet("Wid") Then Msg("info", "Wid will override the distance between PtA and PtB. If you do not want this to happen, disconnect PtB or Wid.") width = PtA.DistanceTo(PtB) ' get the width (distance) between PtA and PtB Dim refPtB As Point3d refPlane.RemapToPlaneSpace(PtB, refPtB) If refPtB.X < 0 Then width = -width ' check if PtB is to the left of PtA...if so, width is negative End If If IsSet("Len") Then inCt += 1 If IsSet("Wid") Then inCt += 1 If IsSet("Ht") Then inCt += 1 If IsSet("Ang") Then inCt += 1 If inCt > 2 Then Msg("info", "More parameters set than are required (out of length, width, height, angle). Only using the first two valid ones.") ' check for connected/specified inputs. note: only the first two that it comes across will be used If IsSet("Len") Then ' if length is specified then... If Len <= 0 Then Msg("error", "Length cannot be negative or zero") Return End If If IsSet("Wid") Then ' find height & angle based on length and specified width If Wid > Len Then Msg("error", "Width is greater than length") Return End If If Wid = Len Then ' skip the solver and set the known values height = 0 m = 0 angle = 0 width = Wid Else m = SolveMFromLenWid(Len, Wid) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) angle = Cal_A(m) ' Acos(1 - 2 * m) width = Wid End If Else If width IsNot Nothing Then ' find height & angle based on length and calculated width (distance between PtA and PtB) If width > Len Then Msg("error", "Width is greater than length") Return End If If width = Len Then ' skip the solver and set the known values height = 0 m = 0 angle = 0 Else m = SolveMFromLenWid(Len, width) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If Else If IsSet("Ht") Then ' find width & angle based on length and height ** possible to return 2 results ** If Math.Abs(Ht / Len) > Defined.MAX_HL_RATIO Then Msg("error", "Height not possible with given length") Return End If If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values width = Len angle = 0 Else multiple_m = SolveMFromLenHt(Len, Ht) ' note that it's possible for two values of m to be found if height is close to max height If multiple_m.Count = 1 Then ' if there's only one m value returned, calculate the width & angle here. we'll deal with multiple m values later m = multiple_m.Item(0) width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1) angle = Cal_A(m) ' Acos(1 - 2 * m) End If End If height = Ht Else If IsSet("Ang") Then ' find width & height based on length and angle If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values width = Len height = 0 Else width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to length") Return End If length = Len Else If IsSet("Wid") Then ' if width is specified then... If IsSet("Ht") Then ' find length & angle based on specified width and height If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values length = Wid angle = 0 Else m = SolveMFromWidHt(Wid, Ht) length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If height = Ht Else If IsSet("Ang") Then ' find length & height based on specified width and angle If Wid = 0 Then Msg("error", "Curve not possible with width = 0 and an angle as inputs") Return End If If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values length = Wid height = 0 Else length = Wid / (2 * EllipticE(m) / EllipticK(m) - 1) If length < 0 Then Msg("error", "Curve not possible at specified width and angle (calculated length is negative)") Return End If height = Cal_H(length, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to width (Wid)") Return End If width = Wid Else If width IsNot Nothing Then ' if width is determined by PtA and PtB then... If IsSet("Ht") Then ' find length & angle based on calculated width and height If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values length = width angle = 0 Else m = SolveMFromWidHt(width, Ht) length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If height = Ht Else If IsSet("Ang") Then ' find length & height based on calculated width and angle If width = 0 Then Msg("error", "Curve not possible with width = 0 and an angle as inputs") Return End If If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values length = width height = 0 Else length = width / (2 * EllipticE(m) / EllipticK(m) - 1) If length < 0 Then Msg("error", "Curve not possible at specified width and angle (calculated length is negative)") Return End If height = Cal_H(length, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to PtA and PtB") Return End If Else If IsSet("Ht") Then ' if height is specified then... If IsSet("Ang") Then ' find length & width based on height and angle If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_H = True flip_A = True End If If Ht = 0 Then Msg("error", "Height can't = 0 if only height and angle are specified") Return Else If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = Not flip_A flip_H = Not flip_H End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then Msg("error", "Angle can't = 0 if only height and angle are specified") Return Else length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) width = Cal_W(length, m) ' L * (2 * E(m) / K(m) - 1) End If angle = Ang End If height = Ht Else Msg("error", "Need to specify one more parameter in addition to height") Return End If Else If IsSet("Ang") Then Msg("error", "Need to specify one more parameter in addition to angle") Return Else Msg("error", "Need to specify two of the four parameters: length, width (or PtB), height, and angle") Return End If If m > Defined.M_MAX Then Msg("error", "Form of curve not solvable with current algorithm and given inputs") Return End If refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2) If multiple_m.Count > 1 Then ' if there is more than one m value returned, calculate the width, angle, and curve for each Dim multi_pts As New DataTree(Of Point3d) Dim multi_crv As New List(Of Curve) Dim tmp_pts As New List(Of Point3d) Dim multi_W, multi_A, multi_F As New List(Of Double) Dim j As Integer = 0 ' used for creating a new branch (GH_Path) for storing pts which is itself a list of points For Each m_val As Double In multiple_m width = Cal_W(length, m_val) 'length * (2 * EllipticE(m_val) / EllipticK(m_val) - 1) If width < 0 And ignoreSelfIntersecting Then Msg("warning", "One curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False") Continue For End If If m_val >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve whose width = " & Math.Round(width, 4) & " is not guaranteed") angle = Cal_A(m_val) 'Math.Asin(2 * m_val - 1) refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2) tmp_pts = FindBendForm(length, width, m_val, angle, refPlane) multi_pts.AddRange(tmp_pts, New GH_Path(j)) multi_crv.Add(MakeCurve(tmp_pts, angle, refPlane)) multi_W.Add(width) If flip_A Then angle = -angle multi_A.Add(angle) E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2) multi_F.Add(EllipticK(m_val) ^ 2 * E * I / length ^ 2) ' from reference {4} pg. 79 j += 1 refPlane.Origin = PtA ' reset the reference plane origin to PtA for the next m_val 'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m_val & ", k=" & Math.Sqrt(m_val) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height) Next ' assign the outputs Pts = multi_pts Crv = multi_crv L = length W = multi_W If flip_H Then height = -height H = height A = multi_A F = multi_F Else ' only deal with the single m value If m >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve at these parameters is not guaranteed") If width < 0 And ignoreSelfIntersecting Then Msg("error", "Curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False") Return End If Pts = FindBendForm(length, width, m, angle, refPlane) Crv = MakeCurve(pts, angle, refPlane) L = length W = width If flip_H Then height = -height H = height If flip_A Then angle = -angle A = angle E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2) F = EllipticK(m) ^ 2 * E * I / length ^ 2 ' from reference {4} pg. 79. Note: the critical buckling (that makes the rod/wire start to bend) can be found at height=0 (width=length) 'height = Math.Sqrt(((2 * Len / 5) ^ 2 - ((Wid - Len / 5) / 2) ^ 2) ' quick approximation discovered by Mårten of 'Geometry of Bending' fame ( http://tiny.cc/it2pbx ) 'width = (Len +/- 2 * Math.Sqrt(4 * Len ^ 2 - 25 * Ht ^ 2)) / 5 ' derived from above 'length = (2 * Math.Sqrt(15 * Ht ^ 2 + 4 * Wid ^ 2) - Wid) / 3 ' derived from above 'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m & ", k=" & Math.Sqrt(m) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height) End If </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 > -1 Then Return Component.Params.Input.ElementAt(i).DataType > 1 ' input parameter DataType of 1 means it's not receiving input (internal or external) Else Msg("error", "Input parameter '" & param & "' not found") Return False End If End Function Private Sub Msg(ByVal type As String, ByVal msg As String) ' Output an error, warning, or informational message Select Case type Case "error" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, msg) Print("Error: " & msg) Case "warning" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, msg) Print("Warning: " & msg) Case "info" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Remark, msg) Print(msg) End Select End Sub ' Solve for the m parameter from length and width (reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m)) Private Function SolveMFromLenWid(ByVal L As Double, ByVal w As Double) As Double If w = 0 Then Return Defined.M_ZERO_W ' for the boundry condition width = 0, bypass the function and return the known m value End If Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim m As Double Dim cwl As Double Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 cwl = 2 * EllipticE(m) / EllipticK(m) - 1 ' calculate w/L with the test value of m If cwl < w / L Then ' compares the calculated w/L with the actual w/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop Return m End Function ' Solve for the m parameter from length and height (reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m)) ' Note that it's actually possible to find 2 valid values for m (hence 2 width values) at certain height values Private Function SolveMFromLenHt(ByVal L As Double, ByVal h As Double) As List(Of Double) Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim twoWidths As Boolean = h / L >= Defined.DOUBLE_W_HL_RATIO And h / L < Defined.MAX_HL_RATIO ' check to see if h/L is within the range where 2 solutions for the width are possible Dim m As Double Dim mult_m As New List(Of Double) Dim chl As Double If twoWidths Then ' find the first of two possible solutions for m with the following limits: lower = Defined.M_DOUBLE_W ' see constants at bottom of script upper = Defined.M_MAXHEIGHT ' see constants at bottom of script Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop mult_m.Add(m) ' then find the second of two possible solutions for m with the following limits: lower = Defined.M_MAXHEIGHT ' see constants at bottom of script upper = 1 Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl < h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop If m <= Defined.M_MAX Then ' return this m parameter only if it falls within the maximum useful value (above which the curve breaks down) mult_m.Add(m) End If Else ' find the one possible solution for the m parameter upper = Defined.M_DOUBLE_W ' limit the upper end of the search to the maximum value of m for which only one solution exists Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop mult_m.Add(m) End If Return mult_m End Function ' Solve for the m parameter from width and height (derived from reference {1} equations (33) and (34) with same notes as above) Private Function SolveMFromWidHt(ByVal w As Double, ByVal h As Double) As Double Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim m As Double Dim cwh As Double Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 cwh = (2 * EllipticE(m) - EllipticK(m)) / Math.Sqrt(m) ' calculate w/h with the test value of m If cwh < w / h Then ' compares the calculated w/h with the actual w/h then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop Return m End Function ' Calculate length based on height and an m parameter, derived from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m) Private Function Cal_L(ByVal h As Double, ByVal m As Double) As Double Return h * EllipticK(m) / Math.Sqrt(m) End Function ' Calculate width based on length and an m parameter, derived from reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m) Private Function Cal_W(ByVal L As Double, ByVal m As Double) As Double Return L * (2 * EllipticE(m) / EllipticK(m) - 1) End Function ' Calculate height based on length and an m parameter, from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m) Private Function Cal_H(ByVal L As Double, ByVal m As Double) As Double Return L * Math.Sqrt(m) / EllipticK(m) End Function ' Calculate the unique m parameter based on a start tangent angle, from reference {2}, just above equation (9a), that states k = Sin(angle / 2 + Pi / 4), ' but as m = k^2 and due to this script's need for an angle rotated 90° versus the one in reference {1}, the following formula is the result ' New note: verified by reference {4}, pg. 78 at the bottom Private Function Cal_M(ByVal a As Double) As Double Return (1 - Math.Cos(a)) / 2 ' equal to Sin^2(a/2) too End Function ' Calculate start tangent angle based on an m parameter, derived from above formula Private Function Cal_A(ByVal m As Double) As Double Return Math.Acos(1 - 2 * m) End Function ' This is the heart of this script, taking the found (or specified) length, width, and angle values along with the found m parameter to create ' a list of points that approximate the shape or form of the elastica. It works by finding the x and y coordinates (which are reversed versus ' the original equations (12a) and (12b) from reference {2} due to the 90° difference in orientation) based on the tangent angle along the curve. ' See reference {2} for more details on how they derived it. Note that to simplify things, the algorithm only calculates the points for half of the ' curve, then mirrors those points along the y-axis. Private Function FindBendForm(ByVal L As Double, ByVal w As Double, ByVal m As Double, ByVal ang As Double, ByVal refPln As Plane) As List(Of Point3d) L = L / 2 ' because the below algorithm is based on the formulas in reference {2} for only half of the curve w = w / 2 ' same If ang = 0 Then ' if angle (and height) = 0, then simply return the start and end points of the straight line Dim out As New List(Of Point3d) out.Add(refPln.PointAt(w, 0, 0)) out.Add(refPln.PointAt(-w, 0, 0)) Return out End If Dim x As Double Dim y As Double Dim halfCurvePts As New List(Of Point3d) Dim fullCurvePts As New List(Of Point3d) Dim translatedPts As New List(Of Point3d) ang -= Math.PI / 2 ' a hack to allow this algorithm to work, since the original curve in paper {2} was rotated 90° Dim angB As Double = ang + (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' angB is the 'lowercase theta' which should be in formula {2}(12b) as the interval ' start [a typo...see equation(3)]. It's necessary to start angB at ang + [interval] instead of just ang due to integration failing at angB = ang halfCurvePts.Add(New Point3d(w, 0, 0)) ' start with this known initial point, as integration will fail when angB = ang ' each point {x, y} is calculated from the tangent angle, angB, that occurs at each point (which is why this iterates from ~ang to -pi/2, the known end condition) Do While Math.Round(angB, Defined.ROUNDTO) >= Math.Round(-Math.PI / 2, Defined.ROUNDTO) y = (Math.Sqrt(2) * Math.Sqrt(Math.Sin(ang) - Math.Sin(angB)) * (w + L)) / (2 * EllipticE(m)) ' note that x and y are swapped vs. (12a) and (12b) x = (L / (Math.Sqrt(2) * EllipticK(m))) * Simpson(angB, -Math.PI / 2, 500, ang) ' calculate the Simpson approximation of the integral (function f below) ' over the interval angB ('lowercase theta') to -pi/2. side note: is 500 too few iterations for the Simson algorithm? If Math.Round(x, Defined.ROUNDTO) = 0 Then x = 0 halfCurvePts.Add(New Point3d(x, y, 0)) angB += (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' onto the next tangent angle Loop ' After finding the x and y values for half of the curve, add the {-x, y} values for the rest of the curve For Each point As Point3d In halfCurvePts If Math.Round(point.X, Defined.ROUNDTO) = 0 Then If Math.Round(point.Y, Defined.ROUNDTO) = 0 Then fullCurvePts.Add(New Point3d(0, 0, 0)) ' special case when width = 0: when x = 0, only duplicate the point when y = 0 too End If Else fullCurvePts.Add(New Point3d(-point.X, point.Y, 0)) End If Next halfCurvePts.Reverse fullCurvePts.AddRange(halfCurvePts) For Each p As Point3d In fullCurvePts translatedPts.Add(refPln.PointAt(p.X, p.Y, p.Z)) ' translate the points from the reference plane to the world plane Next Return translatedPts End Function ' Interpolates the points from FindBendForm to create the Elastica curve. Uses start & end tangents for greater accuracy. Private Function MakeCurve(ByVal pts As List(Of Point3d), ByVal ang As Double, ByVal refPln As Plane) As Curve If ang <> 0 Then Dim ts, te As New Vector3d(refPln.XAxis) ts.Rotate(ang, refPln.ZAxis) te.Rotate(-ang, refPln.ZAxis) Return Curve.CreateInterpolatedCurve(pts, 3, CurveKnotStyle.Chord, ts, te) ' 3rd degree curve with 'Chord' Knot Style Else Return Curve.CreateInterpolatedCurve(pts, 3) ' if angle (and height) = 0, then simply interpolate the straight line (no start/end tangents) End If End Function ' Implements the Simpson approximation for an integral of function f below Public Function Simpson(a As Double, b As Double, n As Integer, theta As Double) As Double 'n should be an even number Dim j As Integer, s1 As Double, s2 As Double, h As Double h = (b - a) / n s1 = 0 s2 = 0 For j = 1 To n - 1 Step 2 s1 = s1 + fn(a + j * h, theta) Next j For j = 2 To n - 2 Step 2 s2 = s2 + fn(a + j * h, theta) Next j Simpson = h / 3 * (fn(a, theta) + 4 * s1 + 2 * s2 + fn(b, theta)) End Function ' Specific calculation for the above integration Public Function fn(x As Double, theta As Double) As Double fn = Math.Sin(x) / (Math.Sqrt(Math.Sin(theta) - Math.Sin(x))) ' from reference {2} formula (12b) End Function ' Return the Complete Elliptic integral of the 1st kind ' Abramowitz and Stegun p.591, formula 17.3.11 ' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals Public Function EllipticK(ByVal m As Double) As Double Dim sum, term, above, below As Double sum = 1 term = 1 above = 1 below = 2 For i As Integer = 1 To 100 term *= above / below sum += Math.Pow(m, i) * Math.Pow(term, 2) above += 2 below += 2 Next sum *= 0.5 * Math.PI Return sum End Function ' Return the Complete Elliptic integral of the 2nd kind ' Abramowitz and Stegun p.591, formula 17.3.12 ' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals Public Function EllipticE(ByVal m As Double) As Double Dim sum, term, above, below As Double sum = 1 term = 1 above = 1 below = 2 For i As Integer = 1 To 100 term *= above / below sum -= Math.Pow(m, i) * Math.Pow(term, 2) / above above += 2 below += 2 Next sum *= 0.5 * Math.PI Return sum End Function Friend Partial NotInheritable Class Defined Private Sub New() End Sub ' Note: most of these values for m and h/L ratio were found with Wolfram Alpha and either specific intercepts (x=0) or local minima/maxima. They should be constant. Public Const M_SKETCHY As Double = 0.95 ' value of the m parameter where the curvature near the ends of the curve gets wonky Public Const M_MAX As Double = 0.993 ' maximum useful value of the m parameter, above which this algorithm for the form of the curve breaks down Public Const M_ZERO_W As Double = 0.826114765984970336 ' value of the m parameter when width = 0 Public Const M_MAXHEIGHT As Double = 0.701327460663101223 ' value of the m parameter at maximum possible height of the bent rod/wire Public Const M_DOUBLE_W As Double = 0.180254422335013983 ' minimum value of the m parameter when two width values are possible for a given height and length Public Const DOUBLE_W_HL_RATIO As Double = 0.257342117984635757 ' value of the height/length ratio above which there are two possible width values Public Const MAX_HL_RATIO As Double = 0.403140189705650243 ' maximum possible value of the height/length ratio Public Const MAXERR As Double = 0.0000000001 ' error tolerance Public Const MAXIT As Integer = 100 ' maximum number of iterations Public Const ROUNDTO As Integer = 10 ' number of decimal places to round off to Public Const CURVEDIVS As Integer = 50 ' number of sample points for building the curve (or half-curve as it were) End Class</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 < 10), you might have to increase the constant ROUNDTO at the bottom ' ' REFERENCES: ' {1} "The elastic rod" by M.E. Pacheco Q. & E. Pina, http://www.scielo.org.mx/pdf/rmfe/v53n2/v53n2a8.pdf ' {2} "An experiment in nonlinear beam theory" by A. Valiente, http://www.deepdyve.com/lp/doc/I3lwnxdfGz , also here: http://tiny.cc/Valiente_AEiNBT ' {3} "Snap buckling, writhing and Loop formation In twisted rods" by V.G.A. GOSS, http://myweb.lsbu.ac.uk/~gossga/thesisFinal.pdf ' {4} "Theory of Elastic Stability" by Stephen Timoshenko, http://www.scribd.com/doc/50402462/Timoshenko-Theory-of-Elastic-Stability (start on p. 76) ' ' INPUT: ' PtA - First anchor point (required) ' PtB - Second anchor point (optional, though 2 out of the 4--length, width, height, angle--need to be specified) ' [note that PtB can be the same as PtA (meaning width would be zero)] ' [also note that if a different width is additionally specified that's not equal to the distance between PtA and PtB, then the end point will not equal PtB anymore] ' Pln - Plane of the bent rod/wire, which bends up in the +y direction. The line between PtA and PtB (if specified) must be parallel to the x-axis of this plane ' ' ** 2 of the following 4 need to be specified ** ' Len - Length of the rod/wire, which needs to be > 0 ' Wid - Width between the endpoints of the curve [note: if PtB is specified in addition, and distance between PtA and PtB <> width, the end point will be relocated ' Ht - Height of the bent rod/wire (when negative, curve will bend downward, relative to the input plane, instead) ' Ang - Inner departure angle or tangent angle (in radians) at the ends of the bent rod/wire. Set up so as width approaches length (thus height approaches zero), angle approaches zero ' ' * Following variables only needed for optional calculating of bending force, not for shape of curve. ' E - Young's modulus (modulus of elasticity) in GPa (=N/m^2) (material-specific. for example, 7075 aluminum is roughly 71.7 GPa) ' I - Second moment of area (or area moment of inertia) in m^4 (cross-section-specific. for example, a hollow rod ' would have I = pi * (outer_diameter^4 - inner_diameter^4) / 32 ' Note: E*I is also known as flexural rigidity or bending stiffness ' ' OUTPUT: ' out - only for debugging messages ' Pts - the list of points that approximate the shape of the elastica ' Crv - the 3rd-degree curve interpolated from those points (with accurate start & end tangents) ' L - the length of the rod/wire ' W - the distance (width) between the endpoints of the rod/wire ' H - the height of the bent rod/wire ' A - the tangent angle at the (start) end of the rod/wire ' F - the force needed to hold the rod/wire in a specific shape (based on the material properties & cross-section) **be sure your units for 'I' match your units for the ' rest of your inputs (length, width, etc.). Also note that the critical buckling load (force) that makes the rod/wire start to bend can be found at height=0 ' ' THANKS TO: ' Mårten Nettelbladt (thegeometryofbending.blogspot.com) ' Daniel Piker (Kangaroo plugin) ' David Rutten (Grasshopper guru) ' Euler & Bernoulli (the O.G.'s) ' ' ----------------------------------------------------------------- Dim ignoreSelfIntersecting As Boolean = False ' set to True if you don't want to output curves where width < 0, which creates a self-intersecting curve Dim inCt As Integer = 0 ' count the number of required parameters that are receiving data Dim length As Double Dim width As System.Object = Nothing ' need to set as Nothing so we can check if it has been assigned a value later Dim height As Double Dim angle As Double Dim m As Double Dim multiple_m As New List(Of Double) Dim AtoB As Line Dim flip_H As Boolean = False ' if height is negative, this flag will be set Dim flip_A As Boolean = False ' if angle is negative, this flag will be set If Not IsSet("Pln") Then Msg("error", "Base plane is not set") Return End If If Not IsSet("PtA") Then Msg("error", "Point A is not set") Return End If If Math.Round(Pln.DistanceTo(PtA), Defined.ROUNDTO) <> 0 Then Msg("error", "Point A is not on the base plane") Return End If Dim refPlane As Plane = Pln ' create a reference plane = input plane and set the origin of it to PtA in case PtA isn't the origin already refPlane.Origin = PtA If IsSet("PtB") Then If Math.Round(Pln.DistanceTo(PtB), Defined.ROUNDTO) <> 0 Then Msg("error", "Point B is not on the base plane") Return End If AtoB = New Line(PtA, PtB) If AtoB.Length <> 0 And Not AtoB.Direction.IsPerpendicularTo(Pln.YAxis) Then Msg("error", "The line between PtA and PtB is not perpendicular to the Y-axis of the specified plane") Return End If inCt += 1 If IsSet("Wid") Then Msg("info", "Wid will override the distance between PtA and PtB. If you do not want this to happen, disconnect PtB or Wid.") width = PtA.DistanceTo(PtB) ' get the width (distance) between PtA and PtB Dim refPtB As Point3d refPlane.RemapToPlaneSpace(PtB, refPtB) If refPtB.X < 0 Then width = -width ' check if PtB is to the left of PtA...if so, width is negative End If If IsSet("Len") Then inCt += 1 If IsSet("Wid") Then inCt += 1 If IsSet("Ht") Then inCt += 1 If IsSet("Ang") Then inCt += 1 If inCt > 2 Then Msg("info", "More parameters set than are required (out of length, width, height, angle). Only using the first two valid ones.") ' check for connected/specified inputs. note: only the first two that it comes across will be used If IsSet("Len") Then ' if length is specified then... If Len <= 0 Then Msg("error", "Length cannot be negative or zero") Return End If If IsSet("Wid") Then ' find height & angle based on length and specified width If Wid > Len Then Msg("error", "Width is greater than length") Return End If If Wid = Len Then ' skip the solver and set the known values height = 0 m = 0 angle = 0 width = Wid Else m = SolveMFromLenWid(Len, Wid) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) angle = Cal_A(m) ' Acos(1 - 2 * m) width = Wid End If Else If width IsNot Nothing Then ' find height & angle based on length and calculated width (distance between PtA and PtB) If width > Len Then Msg("error", "Width is greater than length") Return End If If width = Len Then ' skip the solver and set the known values height = 0 m = 0 angle = 0 Else m = SolveMFromLenWid(Len, width) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If Else If IsSet("Ht") Then ' find width & angle based on length and height ** possible to return 2 results ** If Math.Abs(Ht / Len) > Defined.MAX_HL_RATIO Then Msg("error", "Height not possible with given length") Return End If If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values width = Len angle = 0 Else multiple_m = SolveMFromLenHt(Len, Ht) ' note that it's possible for two values of m to be found if height is close to max height If multiple_m.Count = 1 Then ' if there's only one m value returned, calculate the width & angle here. we'll deal with multiple m values later m = multiple_m.Item(0) width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1) angle = Cal_A(m) ' Acos(1 - 2 * m) End If End If height = Ht Else If IsSet("Ang") Then ' find width & height based on length and angle If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values width = Len height = 0 Else width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to length") Return End If length = Len Else If IsSet("Wid") Then ' if width is specified then... If IsSet("Ht") Then ' find length & angle based on specified width and height If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values length = Wid angle = 0 Else m = SolveMFromWidHt(Wid, Ht) length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If height = Ht Else If IsSet("Ang") Then ' find length & height based on specified width and angle If Wid = 0 Then Msg("error", "Curve not possible with width = 0 and an angle as inputs") Return End If If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values length = Wid height = 0 Else length = Wid / (2 * EllipticE(m) / EllipticK(m) - 1) If length < 0 Then Msg("error", "Curve not possible at specified width and angle (calculated length is negative)") Return End If height = Cal_H(length, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to width (Wid)") Return End If width = Wid Else If width IsNot Nothing Then ' if width is determined by PtA and PtB then... If IsSet("Ht") Then ' find length & angle based on calculated width and height If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values length = width angle = 0 Else m = SolveMFromWidHt(width, Ht) length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If height = Ht Else If IsSet("Ang") Then ' find length & height based on calculated width and angle If width = 0 Then Msg("error", "Curve not possible with width = 0 and an angle as inputs") Return End If If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values length = width height = 0 Else length = width / (2 * EllipticE(m) / EllipticK(m) - 1) If length < 0 Then Msg("error", "Curve not possible at specified width and angle (calculated length is negative)") Return End If height = Cal_H(length, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to PtA and PtB") Return End If Else If IsSet("Ht") Then ' if height is specified then... If IsSet("Ang") Then ' find length & width based on height and angle If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_H = True flip_A = True End If If Ht = 0 Then Msg("error", "Height can't = 0 if only height and angle are specified") Return Else If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = Not flip_A flip_H = Not flip_H End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then Msg("error", "Angle can't = 0 if only height and angle are specified") Return Else length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) width = Cal_W(length, m) ' L * (2 * E(m) / K(m) - 1) End If angle = Ang End If height = Ht Else Msg("error", "Need to specify one more parameter in addition to height") Return End If Else If IsSet("Ang") Then Msg("error", "Need to specify one more parameter in addition to angle") Return Else Msg("error", "Need to specify two of the four parameters: length, width (or PtB), height, and angle") Return End If If m > Defined.M_MAX Then Msg("error", "Form of curve not solvable with current algorithm and given inputs") Return End If refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2) If multiple_m.Count > 1 Then ' if there is more than one m value returned, calculate the width, angle, and curve for each Dim multi_pts As New DataTree(Of Point3d) Dim multi_crv As New List(Of Curve) Dim tmp_pts As New List(Of Point3d) Dim multi_W, multi_A, multi_F As New List(Of Double) Dim j As Integer = 0 ' used for creating a new branch (GH_Path) for storing pts which is itself a list of points For Each m_val As Double In multiple_m width = Cal_W(length, m_val) 'length * (2 * EllipticE(m_val) / EllipticK(m_val) - 1) If width < 0 And ignoreSelfIntersecting Then Msg("warning", "One curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False") Continue For End If If m_val >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve whose width = " & Math.Round(width, 4) & " is not guaranteed") angle = Cal_A(m_val) 'Math.Asin(2 * m_val - 1) refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2) tmp_pts = FindBendForm(length, width, m_val, angle, refPlane) multi_pts.AddRange(tmp_pts, New GH_Path(j)) multi_crv.Add(MakeCurve(tmp_pts, angle, refPlane)) multi_W.Add(width) If flip_A Then angle = -angle multi_A.Add(angle) E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2) multi_F.Add(EllipticK(m_val) ^ 2 * E * I / length ^ 2) ' from reference {4} pg. 79 j += 1 refPlane.Origin = PtA ' reset the reference plane origin to PtA for the next m_val 'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m_val & ", k=" & Math.Sqrt(m_val) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height) Next ' assign the outputs Pts = multi_pts Crv = multi_crv L = length W = multi_W If flip_H Then height = -height H = height A = multi_A F = multi_F Else ' only deal with the single m value If m >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve at these parameters is not guaranteed") If width < 0 And ignoreSelfIntersecting Then Msg("error", "Curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False") Return End If Pts = FindBendForm(length, width, m, angle, refPlane) Crv = MakeCurve(pts, angle, refPlane) L = length W = width If flip_H Then height = -height H = height If flip_A Then angle = -angle A = angle E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2) F = EllipticK(m) ^ 2 * E * I / length ^ 2 ' from reference {4} pg. 79. Note: the critical buckling (that makes the rod/wire start to bend) can be found at height=0 (width=length) 'height = Math.Sqrt(((2 * Len / 5) ^ 2 - ((Wid - Len / 5) / 2) ^ 2) ' quick approximation discovered by Mårten of 'Geometry of Bending' fame ( http://tiny.cc/it2pbx ) 'width = (Len +/- 2 * Math.Sqrt(4 * Len ^ 2 - 25 * Ht ^ 2)) / 5 ' derived from above 'length = (2 * Math.Sqrt(15 * Ht ^ 2 + 4 * Wid ^ 2) - Wid) / 3 ' derived from above 'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m & ", k=" & Math.Sqrt(m) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height) End If </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 > -1 Then Return Component.Params.Input.ElementAt(i).DataType > 1 ' input parameter DataType of 1 means it's not receiving input (internal or external) Else Msg("error", "Input parameter '" & param & "' not found") Return False End If End Function Private Sub Msg(ByVal type As String, ByVal msg As String) ' Output an error, warning, or informational message Select Case type Case "error" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, msg) Print("Error: " & msg) Case "warning" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, msg) Print("Warning: " & msg) Case "info" Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Remark, msg) Print(msg) End Select End Sub ' Solve for the m parameter from length and width (reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m)) Private Function SolveMFromLenWid(ByVal L As Double, ByVal w As Double) As Double If w = 0 Then Return Defined.M_ZERO_W ' for the boundry condition width = 0, bypass the function and return the known m value End If Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim m As Double Dim cwl As Double Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 cwl = 2 * EllipticE(m) / EllipticK(m) - 1 ' calculate w/L with the test value of m If cwl < w / L Then ' compares the calculated w/L with the actual w/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop Return m End Function ' Solve for the m parameter from length and height (reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m)) ' Note that it's actually possible to find 2 valid values for m (hence 2 width values) at certain height values Private Function SolveMFromLenHt(ByVal L As Double, ByVal h As Double) As List(Of Double) Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim twoWidths As Boolean = h / L >= Defined.DOUBLE_W_HL_RATIO And h / L < Defined.MAX_HL_RATIO ' check to see if h/L is within the range where 2 solutions for the width are possible Dim m As Double Dim mult_m As New List(Of Double) Dim chl As Double If twoWidths Then ' find the first of two possible solutions for m with the following limits: lower = Defined.M_DOUBLE_W ' see constants at bottom of script upper = Defined.M_MAXHEIGHT ' see constants at bottom of script Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop mult_m.Add(m) ' then find the second of two possible solutions for m with the following limits: lower = Defined.M_MAXHEIGHT ' see constants at bottom of script upper = 1 Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl < h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop If m <= Defined.M_MAX Then ' return this m parameter only if it falls within the maximum useful value (above which the curve breaks down) mult_m.Add(m) End If Else ' find the one possible solution for the m parameter upper = Defined.M_DOUBLE_W ' limit the upper end of the search to the maximum value of m for which only one solution exists Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 chl = Math.Sqrt(m) / EllipticK(m) ' calculate h/L with the test value of m If chl > h / L Then ' compares the calculated h/L with the actual h/L then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop mult_m.Add(m) End If Return mult_m End Function ' Solve for the m parameter from width and height (derived from reference {1} equations (33) and (34) with same notes as above) Private Function SolveMFromWidHt(ByVal w As Double, ByVal h As Double) As Double Dim n As Integer = 1 ' Iteration counter (quit if >MAXIT) Dim lower As Double = 0 ' m must be within this range Dim upper As Double = 1 Dim m As Double Dim cwh As Double Do While (upper - lower) > Defined.MAXERR AndAlso (n) < Defined.MAXIT ' Repeat until range narrow enough or MAXIT m = (upper + lower) / 2 cwh = (2 * EllipticE(m) - EllipticK(m)) / Math.Sqrt(m) ' calculate w/h with the test value of m If cwh < w / h Then ' compares the calculated w/h with the actual w/h then narrows the range of possible m upper = m Else lower = m End If n += 1 Loop Return m End Function ' Calculate length based on height and an m parameter, derived from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m) Private Function Cal_L(ByVal h As Double, ByVal m As Double) As Double Return h * EllipticK(m) / Math.Sqrt(m) End Function ' Calculate width based on length and an m parameter, derived from reference {1} equation (34), except b = width and K(k) and E(k) should be K(m) and E(m) Private Function Cal_W(ByVal L As Double, ByVal m As Double) As Double Return L * (2 * EllipticE(m) / EllipticK(m) - 1) End Function ' Calculate height based on length and an m parameter, from reference {1} equation (33), except K(k) should be K(m) and k = sqrt(m) Private Function Cal_H(ByVal L As Double, ByVal m As Double) As Double Return L * Math.Sqrt(m) / EllipticK(m) End Function ' Calculate the unique m parameter based on a start tangent angle, from reference {2}, just above equation (9a), that states k = Sin(angle / 2 + Pi / 4), ' but as m = k^2 and due to this script's need for an angle rotated 90° versus the one in reference {1}, the following formula is the result ' New note: verified by reference {4}, pg. 78 at the bottom Private Function Cal_M(ByVal a As Double) As Double Return (1 - Math.Cos(a)) / 2 ' equal to Sin^2(a/2) too End Function ' Calculate start tangent angle based on an m parameter, derived from above formula Private Function Cal_A(ByVal m As Double) As Double Return Math.Acos(1 - 2 * m) End Function ' This is the heart of this script, taking the found (or specified) length, width, and angle values along with the found m parameter to create ' a list of points that approximate the shape or form of the elastica. It works by finding the x and y coordinates (which are reversed versus ' the original equations (12a) and (12b) from reference {2} due to the 90° difference in orientation) based on the tangent angle along the curve. ' See reference {2} for more details on how they derived it. Note that to simplify things, the algorithm only calculates the points for half of the ' curve, then mirrors those points along the y-axis. Private Function FindBendForm(ByVal L As Double, ByVal w As Double, ByVal m As Double, ByVal ang As Double, ByVal refPln As Plane) As List(Of Point3d) L = L / 2 ' because the below algorithm is based on the formulas in reference {2} for only half of the curve w = w / 2 ' same If ang = 0 Then ' if angle (and height) = 0, then simply return the start and end points of the straight line Dim out As New List(Of Point3d) out.Add(refPln.PointAt(w, 0, 0)) out.Add(refPln.PointAt(-w, 0, 0)) Return out End If Dim x As Double Dim y As Double Dim halfCurvePts As New List(Of Point3d) Dim fullCurvePts As New List(Of Point3d) Dim translatedPts As New List(Of Point3d) ang -= Math.PI / 2 ' a hack to allow this algorithm to work, since the original curve in paper {2} was rotated 90° Dim angB As Double = ang + (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' angB is the 'lowercase theta' which should be in formula {2}(12b) as the interval ' start [a typo...see equation(3)]. It's necessary to start angB at ang + [interval] instead of just ang due to integration failing at angB = ang halfCurvePts.Add(New Point3d(w, 0, 0)) ' start with this known initial point, as integration will fail when angB = ang ' each point {x, y} is calculated from the tangent angle, angB, that occurs at each point (which is why this iterates from ~ang to -pi/2, the known end condition) Do While Math.Round(angB, Defined.ROUNDTO) >= Math.Round(-Math.PI / 2, Defined.ROUNDTO) y = (Math.Sqrt(2) * Math.Sqrt(Math.Sin(ang) - Math.Sin(angB)) * (w + L)) / (2 * EllipticE(m)) ' note that x and y are swapped vs. (12a) and (12b) x = (L / (Math.Sqrt(2) * EllipticK(m))) * Simpson(angB, -Math.PI / 2, 500, ang) ' calculate the Simpson approximation of the integral (function f below) ' over the interval angB ('lowercase theta') to -pi/2. side note: is 500 too few iterations for the Simson algorithm? If Math.Round(x, Defined.ROUNDTO) = 0 Then x = 0 halfCurvePts.Add(New Point3d(x, y, 0)) angB += (-Math.PI / 2 - ang) / Defined.CURVEDIVS ' onto the next tangent angle Loop ' After finding the x and y values for half of the curve, add the {-x, y} values for the rest of the curve For Each point As Point3d In halfCurvePts If Math.Round(point.X, Defined.ROUNDTO) = 0 Then If Math.Round(point.Y, Defined.ROUNDTO) = 0 Then fullCurvePts.Add(New Point3d(0, 0, 0)) ' special case when width = 0: when x = 0, only duplicate the point when y = 0 too End If Else fullCurvePts.Add(New Point3d(-point.X, point.Y, 0)) End If Next halfCurvePts.Reverse fullCurvePts.AddRange(halfCurvePts) For Each p As Point3d In fullCurvePts translatedPts.Add(refPln.PointAt(p.X, p.Y, p.Z)) ' translate the points from the reference plane to the world plane Next Return translatedPts End Function ' Interpolates the points from FindBendForm to create the Elastica curve. Uses start & end tangents for greater accuracy. Private Function MakeCurve(ByVal pts As List(Of Point3d), ByVal ang As Double, ByVal refPln As Plane) As Curve If ang <> 0 Then Dim ts, te As New Vector3d(refPln.XAxis) ts.Rotate(ang, refPln.ZAxis) te.Rotate(-ang, refPln.ZAxis) Return Curve.CreateInterpolatedCurve(pts, 3, CurveKnotStyle.Chord, ts, te) ' 3rd degree curve with 'Chord' Knot Style Else Return Curve.CreateInterpolatedCurve(pts, 3) ' if angle (and height) = 0, then simply interpolate the straight line (no start/end tangents) End If End Function ' Implements the Simpson approximation for an integral of function f below Public Function Simpson(a As Double, b As Double, n As Integer, theta As Double) As Double 'n should be an even number Dim j As Integer, s1 As Double, s2 As Double, h As Double h = (b - a) / n s1 = 0 s2 = 0 For j = 1 To n - 1 Step 2 s1 = s1 + fn(a + j * h, theta) Next j For j = 2 To n - 2 Step 2 s2 = s2 + fn(a + j * h, theta) Next j Simpson = h / 3 * (fn(a, theta) + 4 * s1 + 2 * s2 + fn(b, theta)) End Function ' Specific calculation for the above integration Public Function fn(x As Double, theta As Double) As Double fn = Math.Sin(x) / (Math.Sqrt(Math.Sin(theta) - Math.Sin(x))) ' from reference {2} formula (12b) End Function ' Return the Complete Elliptic integral of the 1st kind ' Abramowitz and Stegun p.591, formula 17.3.11 ' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals Public Function EllipticK(ByVal m As Double) As Double Dim sum, term, above, below As Double sum = 1 term = 1 above = 1 below = 2 For i As Integer = 1 To 100 term *= above / below sum += Math.Pow(m, i) * Math.Pow(term, 2) above += 2 below += 2 Next sum *= 0.5 * Math.PI Return sum End Function ' Return the Complete Elliptic integral of the 2nd kind ' Abramowitz and Stegun p.591, formula 17.3.12 ' Code from http://www.codeproject.com/Articles/566614/Elliptic-integrals Public Function EllipticE(ByVal m As Double) As Double Dim sum, term, above, below As Double sum = 1 term = 1 above = 1 below = 2 For i As Integer = 1 To 100 term *= above / below sum -= Math.Pow(m, i) * Math.Pow(term, 2) / above above += 2 below += 2 Next sum *= 0.5 * Math.PI Return sum End Function Friend Partial NotInheritable Class Defined Private Sub New() End Sub ' Note: most of these values for m and h/L ratio were found with Wolfram Alpha and either specific intercepts (x=0) or local minima/maxima. They should be constant. Public Const M_SKETCHY As Double = 0.95 ' value of the m parameter where the curvature near the ends of the curve gets wonky Public Const M_MAX As Double = 0.993 ' maximum useful value of the m parameter, above which this algorithm for the form of the curve breaks down Public Const M_ZERO_W As Double = 0.826114765984970336 ' value of the m parameter when width = 0 Public Const M_MAXHEIGHT As Double = 0.701327460663101223 ' value of the m parameter at maximum possible height of the bent rod/wire Public Const M_DOUBLE_W As Double = 0.180254422335013983 ' minimum value of the m parameter when two width values are possible for a given height and length Public Const DOUBLE_W_HL_RATIO As Double = 0.257342117984635757 ' value of the height/length ratio above which there are two possible width values Public Const MAX_HL_RATIO As Double = 0.403140189705650243 ' maximum possible value of the height/length ratio Public Const MAXERR As Double = 0.0000000001 ' error tolerance Public Const MAXIT As Integer = 100 ' maximum number of iterations Public Const ROUNDTO As Integer = 10 ' number of decimal places to round off to Public Const CURVEDIVS As Integer = 50 ' number of sample points for building the curve (or half-curve as it were) End Class</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 < 10), you might have to increase the constant ROUNDTO at the bottom ' ' REFERENCES: ' {1} "The elastic rod" by M.E. Pacheco Q. & E. Pina, http://www.scielo.org.mx/pdf/rmfe/v53n2/v53n2a8.pdf ' {2} "An experiment in nonlinear beam theory" by A. Valiente, http://www.deepdyve.com/lp/doc/I3lwnxdfGz , also here: http://tiny.cc/Valiente_AEiNBT ' {3} "Snap buckling, writhing and Loop formation In twisted rods" by V.G.A. GOSS, http://myweb.lsbu.ac.uk/~gossga/thesisFinal.pdf ' {4} "Theory of Elastic Stability" by Stephen Timoshenko, http://www.scribd.com/doc/50402462/Timoshenko-Theory-of-Elastic-Stability (start on p. 76) ' ' INPUT: ' PtA - First anchor point (required) ' PtB - Second anchor point (optional, though 2 out of the 4--length, width, height, angle--need to be specified) ' [note that PtB can be the same as PtA (meaning width would be zero)] ' [also note that if a different width is additionally specified that's not equal to the distance between PtA and PtB, then the end point will not equal PtB anymore] ' Pln - Plane of the bent rod/wire, which bends up in the +y direction. The line between PtA and PtB (if specified) must be parallel to the x-axis of this plane ' ' ** 2 of the following 4 need to be specified ** ' Len - Length of the rod/wire, which needs to be > 0 ' Wid - Width between the endpoints of the curve [note: if PtB is specified in addition, and distance between PtA and PtB <> width, the end point will be relocated ' Ht - Height of the bent rod/wire (when negative, curve will bend downward, relative to the input plane, instead) ' Ang - Inner departure angle or tangent angle (in radians) at the ends of the bent rod/wire. Set up so as width approaches length (thus height approaches zero), angle approaches zero ' ' * Following variables only needed for optional calculating of bending force, not for shape of curve. ' E - Young's modulus (modulus of elasticity) in GPa (=N/m^2) (material-specific. for example, 7075 aluminum is roughly 71.7 GPa) ' I - Second moment of area (or area moment of inertia) in m^4 (cross-section-specific. for example, a hollow rod ' would have I = pi * (outer_diameter^4 - inner_diameter^4) / 32 ' Note: E*I is also known as flexural rigidity or bending stiffness ' ' OUTPUT: ' out - only for debugging messages ' Pts - the list of points that approximate the shape of the elastica ' Crv - the 3rd-degree curve interpolated from those points (with accurate start & end tangents) ' L - the length of the rod/wire ' W - the distance (width) between the endpoints of the rod/wire ' H - the height of the bent rod/wire ' A - the tangent angle at the (start) end of the rod/wire ' F - the force needed to hold the rod/wire in a specific shape (based on the material properties & cross-section) **be sure your units for 'I' match your units for the ' rest of your inputs (length, width, etc.). Also note that the critical buckling load (force) that makes the rod/wire start to bend can be found at height=0 ' ' THANKS TO: ' Mårten Nettelbladt (thegeometryofbending.blogspot.com) ' Daniel Piker (Kangaroo plugin) ' David Rutten (Grasshopper guru) ' Euler & Bernoulli (the O.G.'s) ' ' ----------------------------------------------------------------- Dim ignoreSelfIntersecting As Boolean = False ' set to True if you don't want to output curves where width < 0, which creates a self-intersecting curve Dim inCt As Integer = 0 ' count the number of required parameters that are receiving data Dim length As Double Dim width As System.Object = Nothing ' need to set as Nothing so we can check if it has been assigned a value later Dim height As Double Dim angle As Double Dim m As Double Dim multiple_m As New List(Of Double) Dim AtoB As Line Dim flip_H As Boolean = False ' if height is negative, this flag will be set Dim flip_A As Boolean = False ' if angle is negative, this flag will be set If Not IsSet("Pln") Then Msg("error", "Base plane is not set") Return End If If Not IsSet("PtA") Then Msg("error", "Point A is not set") Return End If If Math.Round(Pln.DistanceTo(PtA), Defined.ROUNDTO) <> 0 Then Msg("error", "Point A is not on the base plane") Return End If Dim refPlane As Plane = Pln ' create a reference plane = input plane and set the origin of it to PtA in case PtA isn't the origin already refPlane.Origin = PtA If IsSet("PtB") Then If Math.Round(Pln.DistanceTo(PtB), Defined.ROUNDTO) <> 0 Then Msg("error", "Point B is not on the base plane") Return End If AtoB = New Line(PtA, PtB) If AtoB.Length <> 0 And Not AtoB.Direction.IsPerpendicularTo(Pln.YAxis) Then Msg("error", "The line between PtA and PtB is not perpendicular to the Y-axis of the specified plane") Return End If inCt += 1 If IsSet("Wid") Then Msg("info", "Wid will override the distance between PtA and PtB. If you do not want this to happen, disconnect PtB or Wid.") width = PtA.DistanceTo(PtB) ' get the width (distance) between PtA and PtB Dim refPtB As Point3d refPlane.RemapToPlaneSpace(PtB, refPtB) If refPtB.X < 0 Then width = -width ' check if PtB is to the left of PtA...if so, width is negative End If If IsSet("Len") Then inCt += 1 If IsSet("Wid") Then inCt += 1 If IsSet("Ht") Then inCt += 1 If IsSet("Ang") Then inCt += 1 If inCt > 2 Then Msg("info", "More parameters set than are required (out of length, width, height, angle). Only using the first two valid ones.") ' check for connected/specified inputs. note: only the first two that it comes across will be used If IsSet("Len") Then ' if length is specified then... If Len <= 0 Then Msg("error", "Length cannot be negative or zero") Return End If If IsSet("Wid") Then ' find height & angle based on length and specified width If Wid > Len Then Msg("error", "Width is greater than length") Return End If If Wid = Len Then ' skip the solver and set the known values height = 0 m = 0 angle = 0 width = Wid Else m = SolveMFromLenWid(Len, Wid) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) angle = Cal_A(m) ' Acos(1 - 2 * m) width = Wid End If Else If width IsNot Nothing Then ' find height & angle based on length and calculated width (distance between PtA and PtB) If width > Len Then Msg("error", "Width is greater than length") Return End If If width = Len Then ' skip the solver and set the known values height = 0 m = 0 angle = 0 Else m = SolveMFromLenWid(Len, width) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If Else If IsSet("Ht") Then ' find width & angle based on length and height ** possible to return 2 results ** If Math.Abs(Ht / Len) > Defined.MAX_HL_RATIO Then Msg("error", "Height not possible with given length") Return End If If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values width = Len angle = 0 Else multiple_m = SolveMFromLenHt(Len, Ht) ' note that it's possible for two values of m to be found if height is close to max height If multiple_m.Count = 1 Then ' if there's only one m value returned, calculate the width & angle here. we'll deal with multiple m values later m = multiple_m.Item(0) width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1) angle = Cal_A(m) ' Acos(1 - 2 * m) End If End If height = Ht Else If IsSet("Ang") Then ' find width & height based on length and angle If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values width = Len height = 0 Else width = Cal_W(Len, m) ' L * (2 * E(m) / K(m) - 1) height = Cal_H(Len, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to length") Return End If length = Len Else If IsSet("Wid") Then ' if width is specified then... If IsSet("Ht") Then ' find length & angle based on specified width and height If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values length = Wid angle = 0 Else m = SolveMFromWidHt(Wid, Ht) length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If height = Ht Else If IsSet("Ang") Then ' find length & height based on specified width and angle If Wid = 0 Then Msg("error", "Curve not possible with width = 0 and an angle as inputs") Return End If If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values length = Wid height = 0 Else length = Wid / (2 * EllipticE(m) / EllipticK(m) - 1) If length < 0 Then Msg("error", "Curve not possible at specified width and angle (calculated length is negative)") Return End If height = Cal_H(length, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to width (Wid)") Return End If width = Wid Else If width IsNot Nothing Then ' if width is determined by PtA and PtB then... If IsSet("Ht") Then ' find length & angle based on calculated width and height If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If If Ht = 0 Then ' skip the solver and set the known values length = width angle = 0 Else m = SolveMFromWidHt(width, Ht) length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) angle = Cal_A(m) ' Acos(1 - 2 * m) End If height = Ht Else If IsSet("Ang") Then ' find length & height based on calculated width and angle If width = 0 Then Msg("error", "Curve not possible with width = 0 and an angle as inputs") Return End If If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = True flip_H = True End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then ' skip the solver and set the known values length = width height = 0 Else length = width / (2 * EllipticE(m) / EllipticK(m) - 1) If length < 0 Then Msg("error", "Curve not possible at specified width and angle (calculated length is negative)") Return End If height = Cal_H(length, m) ' L * Sqrt(m) / K(m) End If angle = Ang Else Msg("error", "Need to specify one more parameter in addition to PtA and PtB") Return End If Else If IsSet("Ht") Then ' if height is specified then... If IsSet("Ang") Then ' find length & width based on height and angle If Ht < 0 Then Ht = -Ht ' if height is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_H = True flip_A = True End If If Ht = 0 Then Msg("error", "Height can't = 0 if only height and angle are specified") Return Else If Ang < 0 Then Ang = -Ang ' if angle is negative, set it to positive (for the calculations) but flip the reference plane about its x-axis refPlane.Transform(Transform.Mirror(New Plane(refPlane.Origin, refPlane.XAxis, refPlane.ZAxis))) flip_A = Not flip_A flip_H = Not flip_H End If m = Cal_M(Ang) ' (1 - Cos(a)) / 2 If Ang = 0 Then Msg("error", "Angle can't = 0 if only height and angle are specified") Return Else length = Cal_L(Ht, m) ' h * K(m) / Sqrt(m) width = Cal_W(length, m) ' L * (2 * E(m) / K(m) - 1) End If angle = Ang End If height = Ht Else Msg("error", "Need to specify one more parameter in addition to height") Return End If Else If IsSet("Ang") Then Msg("error", "Need to specify one more parameter in addition to angle") Return Else Msg("error", "Need to specify two of the four parameters: length, width (or PtB), height, and angle") Return End If If m > Defined.M_MAX Then Msg("error", "Form of curve not solvable with current algorithm and given inputs") Return End If refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2) If multiple_m.Count > 1 Then ' if there is more than one m value returned, calculate the width, angle, and curve for each Dim multi_pts As New DataTree(Of Point3d) Dim multi_crv As New List(Of Curve) Dim tmp_pts As New List(Of Point3d) Dim multi_W, multi_A, multi_F As New List(Of Double) Dim j As Integer = 0 ' used for creating a new branch (GH_Path) for storing pts which is itself a list of points For Each m_val As Double In multiple_m width = Cal_W(length, m_val) 'length * (2 * EllipticE(m_val) / EllipticK(m_val) - 1) If width < 0 And ignoreSelfIntersecting Then Msg("warning", "One curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False") Continue For End If If m_val >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve whose width = " & Math.Round(width, 4) & " is not guaranteed") angle = Cal_A(m_val) 'Math.Asin(2 * m_val - 1) refPlane.Origin = refPlane.PointAt(width / 2, 0, 0) ' adjust the origin of the reference plane so that the curve is centered about the y-axis (start of the curve is at x = -width/2) tmp_pts = FindBendForm(length, width, m_val, angle, refPlane) multi_pts.AddRange(tmp_pts, New GH_Path(j)) multi_crv.Add(MakeCurve(tmp_pts, angle, refPlane)) multi_W.Add(width) If flip_A Then angle = -angle multi_A.Add(angle) E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2) multi_F.Add(EllipticK(m_val) ^ 2 * E * I / length ^ 2) ' from reference {4} pg. 79 j += 1 refPlane.Origin = PtA ' reset the reference plane origin to PtA for the next m_val 'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m_val & ", k=" & Math.Sqrt(m_val) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height) Next ' assign the outputs Pts = multi_pts Crv = multi_crv L = length W = multi_W If flip_H Then height = -height H = height A = multi_A F = multi_F Else ' only deal with the single m value If m >= Defined.M_SKETCHY Then Msg("info", "Accuracy of the curve at these parameters is not guaranteed") If width < 0 And ignoreSelfIntersecting Then Msg("error", "Curve is self-intersecting. To enable these, set ignoreSelfIntersecting to False") Return End If Pts = FindBendForm(length, width, m, angle, refPlane) Crv = MakeCurve(pts, angle, refPlane) L = length W = width If flip_H Then height = -height H = height If flip_A Then angle = -angle A = angle E = E * 10 ^ 9 ' Young's modulus input E is in GPa, so we convert to Pa here (= N/m^2) F = EllipticK(m) ^ 2 * E * I / length ^ 2 ' from reference {4} pg. 79. Note: the critical buckling (that makes the rod/wire start to bend) can be found at height=0 (width=length) 'height = Math.Sqrt(((2 * Len / 5) ^ 2 - ((Wid - Len / 5) / 2) ^ 2) ' quick approximation discovered by Mårten of 'Geometry of Bending' fame ( http://tiny.cc/it2pbx ) 'width = (Len +/- 2 * Math.Sqrt(4 * Len ^ 2 - 25 * Ht ^ 2)) / 5 ' derived from above 'length = (2 * Math.Sqrt(15 * Ht ^ 2 + 4 * Wid ^ 2) - Wid) / 3 ' derived from above 'Print("length=" & length & ", width=" & width & ", height=" & height & ", angle=" & angle & ", m=" & m & ", k=" & Math.Sqrt(m) & ", w/L=" & width / length & ", h/L=" & height / length & ", w/h=" & width / height) End If </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+HnGtbQ2ldjzM01WDJ9QkGLfEO7YNAS+NGiVGXRmc6urv78nIiwxKciszHABHjerzYPbNkLo+XAq+k8cTrEEypfPwSBj4A5G3pGx2WI4l+fklF68+MXly9i1cek3//ZvUqmutLQxJ9ce4pumZfZuVYd7FwjfYNQmFGxwvLjh19ICE29DUUUVeA7abfAf9iRATdPX24Ntg3nZuTW1Df19vTA23fgyMfqOKvgWP/AG566XhBph0zA6geVLl/OID7rJpUUVFqqwxthuJXiebBp9lB5d5HuVfuOLpFOffZFOw+4LU0RE6q9+9Styh80///N/vXzZUyIx8/kaL29PepR9qwTpbYLQrZ2Z4ySUQb2GGbCrsxNqbgyeMFPA3oQAHjEjAlRYKppbG5iJ1gLZIvo1umoWd0CYXJcQaAi4zgq5JeAnViM+b61eJlcyCbnU45tkKFHxdhtRJLRFmawe3yt0fD09wqZn90EODwtN4vCUfIH20OFj/+Nff/3f//XX/+cPf2AwZWyOMpXCjPQTQtjZfIJ4fQl2WyFU0hzYhOByOmAUhEUCF5TacL9AYI2loqlWxa3Nfa7mxhiFbk5afaHgBl8GXGdLKc0YNlfrgNCUigwH1KdZ3MHtUrwRli8YMq9/GRftqyIHfCx1bNJZSowuOoKRGCMIC6R8fvSrE8e/ueMVkxwnio1kR4UxtKyOdYLC6wP2YsptghDMBPcnX4/o6poqW7ZRIleRlgrSzEQGyAuP9Q3Vcmbly9TcYOUZCLei1Po732dE3VEBQqhen/McoXjjJVZ5fpti5A0B0ffNi+hSsGXe+Co+PiATn16Z29yqwQkjdxhkEdxDTYA03GjJGDN/DEuOd8FsXd5tghDzvDIDc6F/TW1VttWoN1udDidmxRcvMCX04DLGemPT6nqjRcCXScFG7+8oinTHaikGzAo1AsY0NaOjSLXw4mCVjeYTTL0+wRfypfpe4IT+hHk61EOIoXtdGrzdSHu85Y4H2wQhAMh3uz9l55qcbc1NLXUNTTUvpcbm2oqaIgm9dANLxbIMhTYCQjJqC3guPSIPKK40DdgUHjeIp4TnQguBwW2lfdH94Seu4pVrhdVaYZVG8EqqVPEqs/j9L6KIYqnhuTe/TjQLRtb59SCxkTuqyugGZTKJvOhwJv5yjJbRD47ceVyIGuOX4NdKmAVynk3G3Zh4Ngk7V8fpIEcbsBEybkDjbqFuHLJomKcIELp9MgizItgCzv8RPjLfKzRaVIGBO4DRDAxqkyxI2YU9/V0dXViz9fcNDPT09nX19HavIjz2DQz29Q9A14AELc5mJaveJp23rBJ0wX9KWtuVC1Gi1AaoatfjIZi06hrqa1qb6jqKbFUhATHXLvtwmbLWxu6aytaSwjqjsC9HvGXeXNvHhW4UxzEuvXJLCkY5YrgTjbm784g6o0tD63kpqWndWkYvykwLy/b+Lg0yDlgTWKK5IeUDMxW9Heo9iD8hHoKkYBM8qRLi07DLODYqITIqNSoiUSQ15+TgTJWSFbJaSiRirVxhEfDUGq0tJ7ckLCBFkd62wmroWxgkfS5T4wP1qxcGkIrxWKJ5xIqpysstWFr66ae//ZCekbb/wCeffnbU0+vm9Mzkjz89m5weSY3UWgSvUFm8PptuK4SvXy13ynHgp5eVldjrigvr7Pm1Rfk15cVNFSXNpUUNCNsLaosL6kqKao2ashw4OWY4IePE+KmhpgF45NCHdkcYAXl6Kzehyuf7tNi4BIOhkMVWpVO4ERHJTJZao7EplTkrpNHkRkUkBATFBQcncfl6o7EoINCfGm4j0UIvxECNbgEI0VfcBrUxfAVvVbS2tLvZkd6qsye+y7VZ4PGMJRMOSMEefDjKfvLJJzivYXJysqu7MyDQLyOiaOetC98Qv3uQgIi5RJvb1tFd3+Boae1odXSK5Roqk2ey2OD/1tTc1tDobGvvybYWyiiOMt1TDKQpoRY0LhylsEwkRk7ZrHsQJvReGPFskvuM5CxtZrZOVwAyGOw6nU2lylGrc1eTRpOHR/KuVBlTIjTkBg9ghkmXcjfnyoVoDbOLXLrgK9A5gMth+QKji1IaInykarUWqvumpsYrV74PDg764ouLv/nN/4Tr18BAf0trQ5h/mobRA6590zZ5afoPlwuh0Q/0pGTQOKlJDE+fuxyeTizL8bnmefPchZhIqlJtS4xNu+kZLJVZ2RyJ17VwVkw5HDKKNQ/BGRjisNaOuqPkJlRiIiSWIoSKbr5Q9oBLyVZrLQq5RaHMViqtCoUVEK4msCMBsDYf+CFerjDoeK2FigduDd9EYlDW1QvREJfcCgQCv4zIfIhO7LgyfIXoNJiPBVNKsdVeUoDTE3DOzl/+8pff/va3ON4De/Ph9Gy2mDQsBybXrVrzfMAQiqZ9byakUujUNG5IWBKTn8WLTemK+ZeJ+P+S5/tnOiOTQhWmUnDOSSaDKbx+2TfMQ+pe9bPAiATPyWdZsSWQaMiJEHCmhmX7X2fGRCeazCXx0SneXkFXvveKTuJn6vKVBJzLhDOrKGkcGgOKPysiFcqs+FCZmt4F7R1cPTDjYsAEQ4OzARiMaH7XGBbh6OpREXyvY3fL0hvlGbBUuDK57QZBF+54BCloH4ql4g0UpG83XMAEocrojIpI5wk0HK6ayVYxkzPY0eGsuEhmdDgtXcjmqKCvAsXGpotTmkq1TyC7gxGxXsRYiuHOrl4s1T5GZ0ej85OqWXHld65QY6Lj9foCokCGNCggmkKTa9S54MXnlK1WWoODo297Btz0DJEr8/T6fP9A31OHb6ErQH/m1hTOkK6tkbflcDZHX8GYv+43EvZCCWEsdBOMhYS9cIW20NKE7364XEisyoXjCZHiqIiMmEhGTCQ9JpodHcsnKSbKHUPE02LCOVDHkOtCyIqYrjARwvUbDuDi1EZ42RCzoGwG93zpAuZChcqEERJTnU6Xr8ZQiUH1ZwitxKMyRyYxMMGIimylyhTqR5FSHOgf7iU8Ma1itMSKPvK2AkBu+VL9TXv8GgixWPmgCJ3XIhjHZgwDe3AjwlszH7LPGvswJi2sLrDG8LvGxJJRQmkGtNCBFcgeMFPNCpVRLjcLRXpMeypVNjBbR0AUQ6hKhdPzLGKpTsGoL1Qski0LcRT9A0ZmKNXccu9//q6rNRCqGK3vgRwbl+lQMwlSMQhaCbgfl2uiZjo1LJeGuTGxXEivY3e9aH4j3a4gaJCa8Vg/3e3vqdFRCdrMAj5HfuO6t29QNDVdBo6UycwrBNgQliusGGARFom14vTKYvVjYlOOZIIRbcemANiV3Ht0Zs28+2b+fQufuL8RIUs2sbrfArvYGgixTxOErX4gMrxCL415nWS9PfCvWF/U8id6CJMhDh/s7ibcLxDGKXZEauLPa1WDTI/NbEUFFYr0drv6AaE+lRLWu5XhCHMVBkA4SolTmwJuMCMj49SaPIFQx2BIk1JYdIYSOEmlpmWSmRUyU0w0NT6BmZDEFoqMSqU52C8hITALbAeehtsj3MnhmWcVTanZZRqhRCNUqAUK3DcnrUiZKSFIJ1ZqhHKVQJ7JdblRfFepYg2EUCph4QJ7HloG4Z+pv6+np3t1DJkM0CCwLtmamIH+7u4uaLJW53U3ew88LPp6u4vtBXn5NpxqWlpanGvLb3W6Skrs1TXVQ8NDBO69PS+Wv6YagwOo2Ni9Meykuf5dQHJwNiu2FAYpLavbPSkSIj4JJ6F+w3QoW6QnZUnleoLP5BBhMIqaJRLjzxBKTTKpMS42IzaOdjc8lcfH0aPZOHDP+zsq1ifoBxhIsZ7DPJ3JnDZqI4cG9nS2HWh3HujpOtjduSH1dB5qd+1vbtzb1LC3zYHEB7o696n4OquAUDu8I62BsK3NBXK1OUFkeIVcrhdiXjvZ+qLIjO1tMBdWlGOTU2lFFVz0y8vKyxqaGvNsuTALd3S2v2Y1UDj6RFl5MSCM989KCNRH+siDb/FgQ4i+owSiOlYPqT0BolgXZiQYpLJMsTiLmAiV2QAPEK4j7D6WSs2YEfFWIFKnRGQWKR4S9ufnuxvRLcy8B9bM6IHeve2OI66WI11tRztdG1J32xG7dY9e9pFK9ZEt7+OejqOd7fv1YmOu+JHbFeqdUFwDYb6tcJupsLC4qLC4sMBeWEAGimx5qEPRG1UD62WFVI8VCNb15BIeUj6cbpgxxVgOAksgGuEjTw423/6eEhERq1SYU1K5QYFRHt53MZDKpCYgupqkEuPzRyNPoFRzmgrkC4ANPE1wIbHfeDwhsEDEuzzYexj4tTYd6XAebXcsU1vr0XWEt+VF+yqK95fZ99mL9gFsoJgUEyJOacewv5UQ8hPqdyJx42qg717XFmhx0jqBERWLRZgUeIk1Qbc44XdjoJRJSWL6+UeERlDYbI2bBZchFIkMQmEmh6uRiLMQFomy+EJ1VAA/izuMQlhxpXDngWEk+Kbo5DEPm+36owdwujw9N3nq4f2zD+bOgBZnX04P5s8+Wjj76P7Zh/NnF+dOP1o8n5J6JdxHa1c/tAjmTdx5M2/e9KbEvW8Vzq7hwopiJ6jSff+Z7A7ErItcjrE7Nktmd1SVuGrK2qtL2xBYudeWdxClrcr7WqW567AuI1nbqlKHRdX8Uis/2cEBJwAGDxXKH9ASswRijXucJCZCsdgA/Q6PpxMK9UK+FswnEmjvhqdwuDo3nAak8fW//e3pUAgy8K6AxkfD7AQjsmJcBdm3hrsO9PafeLZwpiT/48a6w41VB4eHTy4tfbX0/77YjP4Ob+mz9ORYLX3cxB9R8dQ6iVBDyL6vIOxqz5RKDHIp7joklvDV3Pw1EE7PTIAmp+6RgWWaJWKmpsdXR07NjBPJZjdLNjs3hTNk4MvkbHMMDPZ2djoHhgcGh/udbS1Eaavyvk5p+DpyrfvozOzk+MTooycLWVmGWH+d2wljs3kFMFPidAKRisfTcLlakRB8pmexNJ9+HnL0WIBPAEshN4lFehpNAkYEqAKBni9Qhdym6pi95Cjqlo8msRzUM+cbK+6OD+wdHT3x7P6p8mJMikc7mg9PTgDCL5YA0iZEOLx/ivVprugnWUZjXc3Jwb69Ha79EIggFm1EvV0HMYM6WvY21n/sbN3X3XlgeHBPniVgDYSkDxJcH1ackcjAipPLSjzptrR5Mjil1dXWmMwmi8UKLzzi/wrU1uM/DcBlDQfNrHZ5ep3S8C0kQ01e/CiWIUaz9vqlILehf8O1NlYCSSGGkNAIiVh/2yvg2g3fGx5BcfGczMycg4cC/tuvL/6vU6oz3hohXw1eFAoy+XwdGJTFkcrotZgLV3cOQJjJnMk3h8wvHJmbOjE9/vnDhVOLcwQtzJxEzBxc2jehGXi+H9QK5DnCZ3JaY1316d7OQ66Ww5gyN5GJeruOVdn35un+rJD80WL5a2P94cHefTZL4BoI6xurt5YaGmtQIDZeY+NubX1VY1NtVU1ZSVkRXC628EMOVwOfK+HEVkMHtgkX5hOuEjnBQRESiSE5gZGQQA+9m5RGEctkxuQk/r//0e9f/nf0n0+ligRKYlAVYHTV8viZTJaYm1KCpf3KFi0ESGWbAT4czFIVq1zFLAMpmaVKRqmCUUIQnaRl9/Z1ATm9WE6zZ/H686TzSkZzdcWpno5DjqbDEIIIVnYe63guGa2ISAh0uo7VVx6ATFRbcaC4cG9z45H+7hcglNDK3gOVS2grVIbtuzjNYmu/Isoo1rCc8M1Z7RvxMizHbNL7GQlZHJ4CkxymOrHYKBDoOByNXJ4VFSf85HDo1VvJUrEuJDDcwyuMydYI+DoeX+3nE54cbBEk1cCxChu1sEAUJNcKkmskaa0ySqcyo0dN79cxhwzsMRNvwiqcgXt7nmTBJoN4/LhQ8YQg5ZMi5dPn9KxI+cyuelaoXCzWPOUmlvb3nHu4SIhF96dPP14499AtE0HqeTB3FkLQzzR3BkITZKIni+ceu8Wix49OFOV6r+FCg7hlC8kodayQSebMkrSSj1v4CRSVRdS5OUvU9jrSOebClCglIORyYf3QcDmYEQkCiiKhTiICZmrAFh2RHAJfXq6Wx9UKBNo7t/3hKgdfZBjrCfJVQ8GN5QosWZBxoIOFyhv2LKjxIKxiDRN0k4cwImHHgB861jNIDFGIzA4tD0mJQYagG2Ivjzv3J77F1rAnTy5M9n/WUnmgqnh/Y82hH55hNt1UJoLEtHShuvLaGggnp8empu/h7qaVgPtxioxcoXtkzKr0q5MReYdH+4dH+geHeodG+voGusYnRxEzMjowhT2gRN7V5S+Xtqb85Y9uVg18HcXOL0yVV5TDlWFzD+BCzIXB+qCgEL4gUyDIjIxIunThVkQUDWEORw1yY6lmc9SYApcjuRoaQ5QakWVXEYfgrBCMHlCa58seZwsf54hwf2jhL5p497M4c3rWNORMVcaInDIgSekRJnXyElycOAcrppkR1QDKCK8hiR1XnRKSe8crbGbsS1fLoSePL4x0Ha8o2ddQe6i99dgPTy8u/XRx6cdNael8eenlddoZ4hQY0s8a5/iQh8KQF4SJ1Y94C7ECyVZHrk7W3uYqg9eL3Y6NLzk52VlZxsrq2uxsK3bAQMxB3tXlu0trRfxKaYgh5Z3XqQYUcbV1Vde/99Ey4Bm2oTdDvnw+IzIvMOAuj6/lctRUCj82Mj0lhQ/k2GzVasIsSEYC0XSaQE6vL5CvOSMFCjYTf1zF0+sVjEwpO1PK0cs4ejlJXANIwctS8LOUfKNSQJBKaNaIrFpxtk6Mu1ktMqn5BmGNXfWThFI9OXYOQuxPj88v/XhhaelLgsB/r8QP6C6dqSr2WQthu6MN1OG+r6MXIxHz0kh3Rmwww+IB7r7QXuI0p/qGWqerFSeWVFaVtXc6N8m45rsbl/9zsg5nX39XXr412IsBH+pNrT9jsBdmxBsYLDEJD6DCncVSriJgqYyPoycn8sCOSEaji0Ju0+CUDeuVm8sJiZfYmJcxVJR/ZWRoT1f7/q6O/b3dBzah/p4DHW37Whr3NNTtcbXu7es+MDz0V4MyxcR9rKDXTt0DhBd+fHz+7z9ceAXbrWPKpdMNFb5rINQqcraQdMpcUKYqD6RX2RDWq22gN/1EprJgczKoC+R8m0X46tMvsO00/q6UyZIw6Ng/RgyeAInJxP+JWSElm63wugWntWQuT8tkKrlctfdtz2/PhMb76yDIwF4PjQ8WiJmsicLcq/09+9taj4A2WQzgFdYDpbkfW1R/Usj+w2rd42w92t+z16ikZAt/ktGqpu5ha/tbQlhfsZYLDax7HwaN6FlDKyROaxCmVYrSqkASKg48qZNl1ONOxoAEqRXYm/Ki98M6obRQsZAYrAsIDGYzpdeueHj5hHt7h4SEpkKuWYuiHExJxiCQQROG+NBUtE7gB8kF288ghgiS6oI8hNnmC24d6VEQsRIAuXAnwp3uRywDyPju9uNYD9SUH6irPFhq39fmODbUd5jNuEa5W61m1k9PYIP7p3//8djS348vLX32JnSovvLKGi7UcJrejqAI1nCbtNzmZeI1a3nNKAqPb1qgit1gEQ278RiHLR7GuWJ7RU8fDintamvvrK2rLyktKywqIk5xa+vo6OzuBPV0WvSlRu4rVP5YydGjC/z9wul0cUw0JS6ecds76I5fPKY9BkO+mkj8EIN7GpUjTq8uUjyA6gf8B7sHPGjCPGQXzt5sd119uHhyYfYMFgMP7p9ZhNAPQX/hHKkIhb50ZpzQnT6CUnT2DKFHXTj39OH5pw/OPcbC4PEZlery7atsuEnoJSyzJs2kpFrUb0YmdbJOoFsD4cjo0NvR6Njw4BAMh7Ay9sKZHU7uvf09o/eGcb7FyOjg65c5PDJwb2JQxLSaeYQLr131MO2uRa02ajUWlSbHYimx5RfBQIj/WajR6LKyCrVqk0JlLi6po6eLufGvWNpj1QglS3pcVgZdiFGUnA7BZ3S67KUQIh4QpqaxGXE2HMu4om6FOIozBOhRtY76rxx1eyemzty/d9JVeail4VBBzp6JqbNzQ58X5O8d7vzUUXe4rvJAWeFeGCjKivdPjJ8mRJW/fUHQ0lmNxFecPIC1kIm3mMVZNHKI+5sSVORrICRt6BACcToowriwbbO9ox2Ry6862smNnORLpCRfwTLf3ET8376CAsJ+C1E0N8/W0NRssZjhS4k0L82FeGwIxS41shBc+Na9e2MsNv3SuRAYyu9cZn536YpEqgnwDb/tHwvPa7M5x8/PFxrRkpIyCkUY5H/XwztcLLakUameV8M2V7C5/ammYoKFgJCAjY4TbLkUqhjh1QRofX0Cg8PS2CwloKXRxN4egenhNjDx8z0bhDijog33t38/OnDw4cMzD6c/dzUcHBs83tN5eHbm5MzIp93tRwa6joI1Z+596mg52OlA/Kmlv53HnPecPrNnJxjYi69SR7zalLgGwvZ2HArqanPfV4h47HA/dmz6qs3R6sBZ2/ivZ7XYUN/QWNfc0pRfkFdbV41usL5AsvwXCmzvaMPx+Gmp1DBPsTStWU51hvowKBQOFgBoawgXGRlM/K+8x48fms3WhAT42WKukvL4uvC7SVjz5W2q5oZnW0KQ1tfP3w2MlM2SX/nOIyySBlbD4yqShIXERURm0BlyQAuVt7eXH3aeYs0OBQ3pL+o++Wqown5jcurU2ODpsaGz0xPnIVhOj5+fHD03MXZuBoGxcxOjZ6fvnZudOD+Dt2PnxkfO3hteprGxYyYVTlfaaqu9KSv3LcmAjHlmY57FZAOZjeQdj/kWo81EvH09MuQasyxiWjE8JMidvRpmR1R0KviGms5Lo3Jj49MSklLjE1MjoxNTUlmUdB4oLZ0dG8nKITYCbtZnwUbMWPsdn1AaXZqRIaHTpRHhyQmJHATwuJrQVwAzYoBrUjIjNdxYqnkKicnrUhrOmiZPYIRoigM8cJIcZCuQ/E2IyJJeq+dgFbsFu9TWcCF8lreWNG9RIK0LizByeYc79pilx5pSozVpMToQJTYzLSYzJUpLicnEZmgyMiVKxUkqeuXWWeKMb/kDaqwhlcJJTxeD8I8n6TQpGV5NJH6IwT0hkSaiVhUoiEUhNtfB9x62X3KXk/tkIHjpw/w0C2+2NyMJXFKJ3VvvaLJf7wpMbLv6AGi1wYjYTCudy5PMbkpzr7N13b01bjI8gJNG5VGpIoIowrQ0AZUqXn4kIsUZ6SLfO+FxiZyMDALX5BSWn0eygTMIjsFyEM4c7rP7tmAAXAve2/ujfrje3O/ePdevC5UL8UEanzt30qliiEKALTmJFXI3NT1dgsfnBFz53j5hicm8dBJmquimxw0cEwYVq/vApAlsO8XSYotOjcGAPJnFntWzZgzu+xvSrFU4/Q8EoU0+x44r9fYIoqYvY0NJEyQlc6npq7mQeEWOogjgnpBID/KkWYmxnZi3wIg4RBNWiy1hRAzFWnaLXpFq0iZlqZKNmpTNSJ1i1qZYM1Oz9akWXYpJg/QJGi72oi79E3khtOUd/4MqEOI79pglhWvDIuOiYyigmFhqbByVDK+mmNjlRyQIDo3hp1a4WXDZDcfA6cdeVGKqfu4hgECOe9cL7i8lckPMi/rbbNF9GdPS2bEPzoyd7XuhrtuEBvr2t7s+aar7S03Vnx0tH/f37hsZ/otRRf0HgpBUT+OAO2Z8ASuxiP0axEooZCfajbzB1cclgP9g/0uPyIfimxBNRePYV6yktSjozSAlvYXYZcDCPgKnikFEKt3xClrzi0cdA0I50+psPdzpOuJsPkLo5zam3s7jJYSi9c8K+f81W/a4HEf7evYblRn/WBCixYFivgymvrnXp3XHXaAEA7cfoilmROJAI/GMmtNQU1uH86taW1yNja0lJeXFxeV2e2ldXVNLK4x3OGHH1djUqBXUrnOzyxEvqDh5ztZDcCt1Nh3paj8ObWpXG6Fc7Wojwz/H9HQeb6o9VF99qLnuUGX5AYDd17PPoqH/o0H4amXH6wz+WGLi+CKcbsNPqskWTadFawuLSgyG3PzCmtzc4oaGevxzdQolLcuYa7fXGPS5+QXVpWU1lDgFjooA6sQ2ORiNFfDPeMRIFCzOnYRnKRwsoFmFuhVq1WePzj9dPIcw9K6Eb+rcmR+fXIBDBlwxfnxM2DRgXHz28NwPz06pxeG7EL4dqMS/W8A51Xe9pN+cDvYPCITHxjdfX0tMFYpFWj6fl5aWZrcXcThyOk189ert+GSeVGKKiIz47nxI9B11uLcEBK/iy+cS4uI9FsfOlpXs+/HJxXzzX83mPSOjp2DvzTP+Od/6SVX5vuysPY21h0psn5Tn72tqOkI4qZJaVkLRelGrvb4L4dtBSJxuAw019p+Kkht8vSJZbDmWJXS6nMOBiYqZkpJUU1OVQeNjnyl22NAZCh5fE+gbnRpmxckc2KoPkqc70sPL4yKDH82e7u0+/sPjCz3OoxUVB8bHTj1ZONPuPOJqPjrS91lr/ZHBvs8HOo7XVx3s6vp06W9f/mwWXrogE+9C+G5bUgCkXfmQHp+bmJJOY0gyaCIKlZuSmh4ZHRcbn5SQlIEYBhPxghQKHRolWDyg2VmhfNlTDdf8w1PCe/iHR1CCw+vC7Qn+Ezjsq2UnjHWB1Yb7pRO2rNRdLnxrLlzOiKMPFfTW+HBxUpSMpMRIkDwhQpocLV+JjA8Xiqm1SLxmrhUuqLn6Z48/X/rbRQLCzZ2dXny7dCLfmLQGQjzsXjuxBZaX9rt/dnQL/H8vKf57xZJDFgAAAABJRU5ErkJggg==</bitmap> </item> </items> </chunk> </chunks> </Archive>