예제 #1
0
        protected override void SolveInstance(IGH_DataAccess da)
        {
            var points     = 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_point_loads = new List <GS_PointLoad>();

            for (int i = 0; i < points.Count; ++i)
            {
                var point = points.GetItemOrLast(i);

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

                    bool addPoint = true;
                    if (point is GS_StructuralPoint)
                    {
                        var spt = point as GS_StructuralPoint;

                        pl.Value          = spt.Value;
                        pl.ReferencePoint = spt; // pass reference of structural point
                    }
                    else if (point is GH_Point)
                    {
                        pl.Value = new Point((point as GH_Point).Value);
                    }
                    else
                    {
                        AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Unable to Cast input to Point Geometry");
                        addPoint = false;
                    }

                    if (addPoint)
                    {
                        gs_point_loads.Add(pl);
                    }
                }
            }
            da.SetDataList(0, gs_point_loads);
        }
예제 #2
0
        protected override void SolveInstance(IGH_DataAccess da)
        {
            var points     = 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_point_loads = new List <GS_PointLoad>();

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

                if (points[i] is GS_StructuralPoint)
                {
                    var spt = points[i] as GS_StructuralPoint;

                    pl.Value            = spt.Value;
                    pl.ReferencePointId = spt.Id; // pass id of structural point
                }
                else if (points[i] is GH_Point)
                {
                    pl.Value = new Point((points[i] as GH_Point).Value);
                }
                else
                {
                    throw new Exception("Unable to Cast input to Point Geometry");
                }

                gs_point_loads.Add(pl);
            }

            da.SetDataList(0, gs_point_loads);
        }