コード例 #1
0
        protected override void SolveInstance(IGH_DataAccess da)
        {
            var curves     = da.GetDataList <IGH_GeometricGoo>(0);
            var loadcases  = da.GetDataList <int>(1);
            var forces     = da.GetDataList <Vector3d>(2);
            var moments    = da.GetDataList <Vector3d>(3);
            var hostlocals = da.GetDataList <bool>(4);

            var gs_line_loads = new List <GS_LineLoad>();

            for (int i = 0; i < curves.Count; ++i)
            {
                var curve = curves.GetItemOrLast(i);

                if (!(curve is null))
                {
                    var ll = new GS_LineLoad()
                    {
                        LoadCase     = loadcases.GetItemOrLast(i),
                        Forces       = forces.GetItemOrLast(i),
                        Moments      = moments.GetItemOrLast(i),
                        UseHostLocal = hostlocals.GetItemOrLast(i)
                    };

                    bool addCurve = true;
                    if (curve is GS_StructuralLine)
                    {
                        var sln = curve as GS_StructuralLine;

                        ll.Value         = sln.Value;
                        ll.ReferenceLine = sln; // pass reference of structural line
                    }
                    else if (curve is GH_Curve)
                    {
                        ll.Value = (curve as GH_Curve).Value;
                    }
                    else if (curve is GH_Line)
                    {
                        ll.Value = new LineCurve((curve as GH_Line).Value);
                    }
                    else if (curve is GH_Arc)
                    {
                        ll.Value = new ArcCurve((curve as GH_Arc).Value);
                    }
                    else
                    {
                        AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Unable to Cast input to Curve Geometry");
                        addCurve = false;
                    }

                    if (addCurve)
                    {
                        gs_line_loads.Add(ll);
                    }
                }
            }

            da.SetDataList(0, gs_line_loads);
        }
コード例 #2
0
ファイル: gs_line_load.cs プロジェクト: substage/gh_sofistik
        protected override void SolveInstance(IGH_DataAccess da)
        {
            var curves     = da.GetDataList <IGH_GeometricGoo>(0);
            var loadcases  = da.GetDataList <int>(1);
            var forces     = da.GetDataList <Vector3d>(2);
            var moments    = da.GetDataList <Vector3d>(3);
            var hostlocals = da.GetDataList <bool>(4);

            var gs_line_loads = new List <GS_LineLoad>();

            for (int i = 0; i < curves.Count; ++i)
            {
                var ll = new GS_LineLoad()
                {
                    LoadCase     = loadcases.GetItemOrLast(i),
                    Forces       = forces.GetItemOrLast(i),
                    Moments      = moments.GetItemOrLast(i),
                    UseHostLocal = hostlocals.GetItemOrLast(i)
                };

                if (curves[i] is GS_StructuralLine)
                {
                    var sln = curves[i] as GS_StructuralLine;

                    ll.Value           = sln.Value;
                    ll.ReferenceLineId = sln.Id; // pass id of structural line
                }
                else if (curves[i] is GH_Curve)
                {
                    ll.Value = (curves[i] as GH_Curve).Value;
                }
                else if (curves[i] is GH_Line)
                {
                    ll.Value = new LineCurve((curves[i] as GH_Line).Value);
                }
                else if (curves[i] is GH_Arc)
                {
                    ll.Value = new ArcCurve((curves[i] as GH_Arc).Value);
                }
                else
                {
                    throw new Exception("Unable to Cast input to Curve Geometry");
                }

                gs_line_loads.Add(ll);
            }

            da.SetDataList(0, gs_line_loads);
        }