public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_RuntimeMessageLevel level)
        {
            msg   = "";
            level = GH_RuntimeMessageLevel.Blank;
            //var line = new LineCurve();
            Curve inCurve = null;
            var   noIndex = 0;
            var   comment = "";
            var   rfHinge = new RFLineHinge();
            var   inRFEM  = new GH_RFEM();
            var   mod     = false;
            var   del     = false;
            var   tx      = 0.0;
            var   ty      = 0.0;
            var   tz      = 0.0;
            var   rx      = 0.0;
            var   ry      = 0.0;
            var   rz      = 0.0;
            var   lineNo  = 0;
            var   sfcNo   = 0;
            var   side    = 0;

            //int newNo = 0;


            if (DA.GetData(12, ref inRFEM))
            {
                rfHinge = new RFLineHinge((RFLineHinge)inRFEM.Value);
                if (DA.GetData(0, ref inCurve))
                {
                    var myRFLine = new RFLine();
                    Component_RFLine.SetGeometry(inCurve, ref myRFLine);
                    rfHinge = new RFLineHinge(rfHinge, myRFLine);
                }
                if (DA.GetData(10, ref lineNo))
                {
                    rfHinge.LineNo = lineNo;
                }
            }
            else if (DA.GetData(0, ref inCurve))
            {
                var myRFLine = new RFLine();
                Component_RFLine.SetGeometry(inCurve, ref myRFLine);
                rfHinge = new RFLineHinge(new RFLineHinge(), myRFLine);
            }
            else if (DA.GetData(10, ref lineNo))
            {
                rfHinge.LineNo = lineNo;
            }
            else
            {
                msg   = "Insufficient input parameters. Provide either Input Curve or Line Number or existing RFLineHinge Object. ";
                level = GH_RuntimeMessageLevel.Warning;
                return;
            }
            if (DA.GetData(13, ref mod))
            {
                rfHinge.ToModify = mod;
            }
            if (DA.GetData(14, ref del))
            {
                rfHinge.ToDelete = del;
            }
            if (DA.GetData(1, ref noIndex))
            {
                rfHinge.No = noIndex;
            }
            if (DA.GetData(2, ref sfcNo))
            {
                rfHinge.SfcNo = sfcNo;
            }
            if (DA.GetData(9, ref comment))
            {
                rfHinge.Comment = comment;
            }
            if (DA.GetData(3, ref tx))
            {
                rfHinge.Tx = tx;
            }
            if (DA.GetData(4, ref ty))
            {
                rfHinge.Ty = ty;
            }
            if (DA.GetData(5, ref tz))
            {
                rfHinge.Tz = tz;
            }
            if (DA.GetData(6, ref rx))
            {
                rfHinge.Rx = rx;
            }
            if (DA.GetData(7, ref ry))
            {
                rfHinge.Ry = ry;
            }
            if (DA.GetData(8, ref rz))
            {
                rfHinge.Rz = rz;
            }

            if (DA.GetData(11, ref side))
            {
                rfHinge.Side = (HingeSideType)side;
                if (rfHinge.Side == HingeSideType.UnknownSideType)
                {
                    msg   = "Hinge Side Type not supported. ";
                    level = GH_RuntimeMessageLevel.Warning;
                    return;
                }
            }

            DA.SetData(0, rfHinge);
        }
Esempio n. 2
0
        public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_RuntimeMessageLevel level)
        {
            msg   = "";
            level = GH_RuntimeMessageLevel.Blank;

            Curve inCurve  = null;
            var   noIndex  = 0;
            var   comment  = "";
            var   rfSup    = new RFSupportL();
            var   inRFEM   = new GH_RFEM();
            var   mod      = false;
            var   del      = false;
            var   tx       = 0.0;
            var   ty       = 0.0;
            var   tz       = 0.0;
            var   rx       = 0.0;
            var   ry       = 0.0;
            var   rz       = 0.0;
            var   lineList = "";
            var   refSys   = 0;


            if (DA.GetData(11, ref inRFEM))
            {
                rfSup = new RFSupportL((RFSupportL)inRFEM.Value);
                if (DA.GetData(0, ref inCurve))
                {
                    var myRFLine = new RFLine();
                    Component_RFLine.SetGeometry(inCurve, ref myRFLine);
                    var myRFLines = new List <RFLine>()
                    {
                        myRFLine
                    };
                    rfSup = new RFSupportL(rfSup, myRFLines);
                }
            }
            else if (DA.GetData(0, ref inCurve))
            {
                var myRFLine = new RFLine();
                Component_RFLine.SetGeometry(inCurve, ref myRFLine);
                var myRFLines = new List <RFLine>()
                {
                    myRFLine
                };
                rfSup = new RFSupportL(new LineSupport(), myRFLines);
            }
            else if (DA.GetData(9, ref lineList))
            {
                rfSup          = new RFSupportL();
                rfSup.LineList = lineList;
            }
            else
            {
                msg   = "Insufficient input parameters. Provide either Input Curve or Line List or existing RFSupportL Object. ";
                level = GH_RuntimeMessageLevel.Warning;
                return;
            }
            if (DA.GetData(12, ref mod))
            {
                rfSup.ToModify = mod;
            }
            if (DA.GetData(13, ref del))
            {
                rfSup.ToDelete = del;
            }
            if (DA.GetData(1, ref noIndex))
            {
                rfSup.No = noIndex;
            }
            if (DA.GetData(8, ref comment))
            {
                rfSup.Comment = comment;
            }
            if (DA.GetData(2, ref tx))
            {
                rfSup.Tx = tx;
            }
            if (DA.GetData(3, ref ty))
            {
                rfSup.Ty = ty;
            }
            if (DA.GetData(4, ref tz))
            {
                rfSup.Tz = tz;
            }
            if (DA.GetData(5, ref rx))
            {
                rfSup.Rx = rx;
            }
            if (DA.GetData(6, ref ry))
            {
                rfSup.Ry = ry;
            }
            if (DA.GetData(7, ref rz))
            {
                rfSup.Rz = rz;
            }
            if (DA.GetData(9, ref lineList))
            {
                rfSup.LineList = lineList;
            }
            if (DA.GetData(10, ref refSys))
            {
                rfSup.RSType = (ReferenceSystemType)refSys;
                if (rfSup.RSType == ReferenceSystemType.UnknownReferenceSystemType)
                {
                    msg   = "Reference System Type not supported. ";
                    level = GH_RuntimeMessageLevel.Warning;
                    return;
                }
            }

            DA.SetData(0, rfSup);
        }
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object can be used to retrieve data from input parameters and
        /// to store data in output parameters.</param>
        protected override void SolveInstance(IGH_DataAccess DA, EvaluationUnit unit)
        {
            //var line = new LineCurve();
            Curve inCurve = null;
            var   noIndex = 0;
            var   comment = "";
            var   rfHinge = new RFLineHinge();
            var   inRFEM  = new GH_RFEM();
            var   mod     = false;
            var   del     = false;
            var   tx      = 0.0;
            var   ty      = 0.0;
            var   tz      = 0.0;
            var   rx      = 0.0;
            var   ry      = 0.0;
            var   rz      = 0.0;
            var   lineNo  = 0;
            var   sfcNo   = 0;
            var   side    = "";

            //int newNo = 0;


            if (DA.GetData(12, ref inRFEM))
            {
                rfHinge = new RFLineHinge((RFLineHinge)inRFEM.Value);
            }
            else if (DA.GetData(0, ref inCurve))
            {
                var myRFLine = new RFLine();
                Component_RFLine.SetGeometry(inCurve, ref myRFLine);
                rfHinge = new RFLineHinge(new RFLineHinge(), myRFLine);
            }
            else if (DA.GetData(10, ref lineNo))
            {
                rfHinge.LineNo = lineNo;
            }
            else
            {
                return;
            }
            if (DA.GetData(13, ref mod))
            {
                rfHinge.ToModify = mod;
            }
            if (DA.GetData(14, ref del))
            {
                rfHinge.ToDelete = del;
            }
            if (DA.GetData(1, ref noIndex))
            {
                rfHinge.No = noIndex;
            }
            if (DA.GetData(2, ref sfcNo))
            {
                rfHinge.SfcNo = sfcNo;
            }
            if (DA.GetData(9, ref comment))
            {
                rfHinge.Comment = comment;
            }
            if (DA.GetData(3, ref tx))
            {
                rfHinge.Tx = tx;
            }
            if (DA.GetData(4, ref ty))
            {
                rfHinge.Ty = ty;
            }
            if (DA.GetData(5, ref tz))
            {
                rfHinge.Tz = tz;
            }
            if (DA.GetData(6, ref rx))
            {
                rfHinge.Rx = rx;
            }
            if (DA.GetData(7, ref ry))
            {
                rfHinge.Ry = ry;
            }
            if (DA.GetData(8, ref rz))
            {
                rfHinge.Rz = rz;
            }

            if (DA.GetData(11, ref side))
            {
                Enum.TryParse(side, out HingeSideType mySide);
                rfHinge.Side = mySide;
            }

            DA.SetData(0, rfHinge);
        }
        public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_RuntimeMessageLevel level)
        {
            msg   = "";
            level = GH_RuntimeMessageLevel.Blank;
            //var line = new LineCurve();
            Curve inCurve    = null;
            var   noIndex    = 0;
            var   comment    = "";
            var   rFMember   = new RFMember();
            var   inRFEM     = new GH_RFEM();
            var   mod        = false;
            var   del        = false;
            var   lineNo     = 0;
            var   memberType = 0;
            var   taperType  = 0;
            var   rotAngle   = 0.0;
            //var intPoints = 4;
            var sCS  = 0;
            var eCS  = 0;
            var sH   = 0;
            var eH   = 0;
            var ecc  = 0;
            var div  = 0;
            var kcry = 1.0;
            var kcrz = 1.0;

            //int newNo = 0;

            if (DA.GetData(15, ref inRFEM))
            {
                rFMember = new RFMember((RFMember)inRFEM.Value);
                if (DA.GetData(1, ref sCS))
                {
                    rFMember.StartCrossSectionNo = sCS;
                }
                if (DA.GetData(0, ref inCurve))
                {
                    var myRFLine = new RFLine();
                    Component_RFLine.SetGeometry(inCurve, ref myRFLine);
                    rFMember.SetFrames();
                }
                if (DA.GetData(1, ref sCS))
                {
                    rFMember.StartCrossSectionNo = sCS;
                }
            }
            else if (DA.GetData(0, ref inCurve) && DA.GetData(1, ref sCS))
            {
                var myRFLine = new RFLine();
                Component_RFLine.SetGeometry(inCurve, ref myRFLine);
                rFMember.BaseLine = myRFLine;
                rFMember.SetFrames();
                rFMember.StartCrossSectionNo = sCS;
            }
            else if (DA.GetData(4, ref lineNo) && DA.GetData(1, ref sCS))
            {
                rFMember.LineNo              = lineNo;
                rFMember.BaseLine            = null;
                rFMember.StartCrossSectionNo = sCS;
            }
            else
            {
                msg   = "Insufficient input parameters. Provide either Input Curve and Start Cross Section or existing RFMember Object. ";
                level = GH_RuntimeMessageLevel.Warning;
                return;
            }
            // Check line length
            if (rFMember.BaseLine != null && rFMember.BaseLine.ToCurve().GetLength() <= 0.001)
            {
                level = GH_RuntimeMessageLevel.Warning;
                msg   = "Line is too short. It may cause import errors.";
            }
            if (DA.GetData(16, ref mod))
            {
                rFMember.ToModify = mod;
            }
            if (DA.GetData(17, ref del))
            {
                rFMember.ToDelete = del;
            }
            if (DA.GetData(2, ref noIndex))
            {
                rFMember.No = noIndex;
            }
            if (DA.GetData(3, ref comment))
            {
                rFMember.Comment = comment;
            }
            //if (DA.GetData(4, ref lineNo))
            //{
            //    rFMember.LineNo = lineNo;
            //}
            if (DA.GetData(5, ref memberType))
            {
                rFMember.Type = (MemberType)memberType;
                if (rFMember.Type == MemberType.UnknownMemberType)
                {
                    msg   = "Member Type not supported. ";
                    level = GH_RuntimeMessageLevel.Warning;
                    return;
                }
            }
            if (DA.GetData(6, ref rotAngle))
            {
                rFMember.RotationType  = RotationType.Angle;
                rFMember.RotationAngle = rotAngle;
            }
            if (DA.GetData(7, ref eCS))
            {
                rFMember.EndCrossSectionNo = eCS;
            }
            if (DA.GetData(8, ref sH))
            {
                rFMember.StartHingeNo = sH;
            }
            if (DA.GetData(9, ref eH))
            {
                rFMember.EndHingeNo = eH;
            }
            if (DA.GetData(10, ref ecc))
            {
                rFMember.EccentricityNo = ecc;
            }
            if (DA.GetData(11, ref div))
            {
                rFMember.DivisionNo = div;
            }
            if (DA.GetData(12, ref taperType))
            {
                rFMember.TaperShape = (TaperShapeType)taperType;
                if (rFMember.TaperShape == TaperShapeType.UnknownTaperShape)
                {
                    msg   = "Taper Shape Type not supported. ";
                    level = GH_RuntimeMessageLevel.Warning;
                    return;
                }
            }
            if (DA.GetData(13, ref kcry))
            {
                if (kcry < 0 || kcry > 1000)
                {
                    msg   = "Effective length factor Kcr,y out of range. ";
                    level = GH_RuntimeMessageLevel.Warning;
                    return;
                }
                rFMember.Kcry = kcry;
            }
            if (DA.GetData(14, ref kcrz))
            {
                if (kcrz < 0 || kcrz > 1000)
                {
                    msg   = "Effective length factor Kcr,z out of range. ";
                    level = GH_RuntimeMessageLevel.Warning;
                    return;
                }
                rFMember.Kcrz = kcrz;
            }
            DA.SetData(0, rFMember);
        }
Esempio n. 5
0
        public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_RuntimeMessageLevel level)
        {
            msg   = "";
            level = GH_RuntimeMessageLevel.Blank;
            //var line = new LineCurve();
            Curve inCurve  = null;
            var   noIndex  = 0;
            var   comment  = "";
            var   rFLine   = new RFLine();
            var   inRFEM   = new GH_RFEM();
            var   mod      = false;
            var   del      = false;
            var   nodeList = "";
            var   lineType = 0;
            var   rotAngle = 0.0;

            //int intPoints = 4;
            //int newNo = 0;

            if (DA.GetData(6, ref inRFEM))
            {
                rFLine = new RFLine((RFLine)inRFEM.Value);
            }
            else if (DA.GetData(0, ref inCurve))
            {
                Component_RFLine.SetGeometry(inCurve, ref rFLine);
            }
            else if (DA.GetData(3, ref nodeList))
            {
                rFLine.NodeList = nodeList;
            }
            else
            {
                msg   = "Insufficient input parameters. Provide either Input Curve, node list or existing RFLine Object. ";
                level = GH_RuntimeMessageLevel.Warning;
                return;
            }
            // Check line length
            if (rFLine.ControlPoints != null && rFLine.ControlPoints.Length > 0 && rFLine.ToCurve().GetLength() <= 0.001)
            {
                level = GH_RuntimeMessageLevel.Warning;
                msg   = "Line is too short. It may cause import errors.";
            }
            if (DA.GetData(7, ref mod))
            {
                rFLine.ToModify = mod;
            }
            if (DA.GetData(8, ref del))
            {
                rFLine.ToDelete = del;
            }
            if (DA.GetData(1, ref noIndex))
            {
                rFLine.No = noIndex;
            }
            if (DA.GetData(2, ref comment))
            {
                rFLine.Comment = comment;
            }
            if (DA.GetData(3, ref nodeList))
            {
                rFLine.NodeList = nodeList;
            }
            if (DA.GetData(4, ref lineType))
            {
                rFLine.Type = (LineType)lineType;
                if (rFLine.Type == LineType.UnknownLineType || rFLine.Type == LineType.ParabolaType || rFLine.Type == LineType.TrajectoryType ||
                    rFLine.Type == LineType.OnSurfaceType || (nodeList != "" && rFLine.Type == LineType.NurbSplineType))
                {
                    msg   = "Line Type not supported. ";
                    level = GH_RuntimeMessageLevel.Warning;
                    return;
                }
            }
            if (DA.GetData(5, ref rotAngle))
            {
                rFLine.RotationType  = RotationType.Angle;
                rFLine.RotationAngle = rotAngle;
            }

            DA.SetData(0, rFLine);
        }
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object can be used to retrieve data from input parameters and
        /// to store data in output parameters.</param>
        protected override void SolveInstance(IGH_DataAccess DA, EvaluationUnit unit)
        {
            //var line = new LineCurve();
            Curve inCurve    = null;
            var   noIndex    = 0;
            var   comment    = "";
            var   rFMember   = new RFMember();
            var   inRFEM     = new GH_RFEM();
            var   mod        = false;
            var   del        = false;
            var   lineNo     = 0;
            var   memberType = "";
            var   taperType  = "";
            var   rotAngle   = 0.0;
            //var intPoints = 4;
            var sCS = 0;
            var eCS = 0;
            var sH  = 0;
            var eH  = 0;
            var ecc = 0;
            var div = 0;

            //int newNo = 0;

            if (DA.GetData(13, ref inRFEM))
            {
                rFMember = new RFMember((RFMember)inRFEM.Value);
                if (DA.GetData(1, ref sCS))
                {
                    rFMember.StartCrossSectionNo = sCS;
                }
            }
            else if (DA.GetData(0, ref inCurve) && DA.GetData(1, ref sCS))
            {
                var myRFLine = new RFLine();
                Component_RFLine.SetGeometry(inCurve, ref myRFLine);
                rFMember.BaseLine            = myRFLine;
                rFMember.StartCrossSectionNo = sCS;
            }
            else
            {
                return;
            }
            if (DA.GetData(14, ref mod))
            {
                rFMember.ToModify = mod;
            }
            if (DA.GetData(15, ref del))
            {
                rFMember.ToDelete = del;
            }
            if (DA.GetData(2, ref noIndex))
            {
                rFMember.No = noIndex;
            }
            if (DA.GetData(3, ref comment))
            {
                rFMember.Comment = comment;
            }
            if (DA.GetData(4, ref lineNo))
            {
                rFMember.LineNo = lineNo;
            }
            if (DA.GetData(5, ref memberType))
            {
                Enum.TryParse(memberType, out MemberType myMemberType);
                rFMember.Type = myMemberType;
            }
            if (DA.GetData(6, ref rotAngle))
            {
                rFMember.RotationType  = RotationType.Angle;
                rFMember.RotationAngle = rotAngle;
            }
            if (DA.GetData(7, ref eCS))
            {
                rFMember.EndCrossSectionNo = eCS;
            }
            if (DA.GetData(8, ref sH))
            {
                rFMember.StartHingeNo = sH;
            }
            if (DA.GetData(9, ref eH))
            {
                rFMember.EndHingeNo = eH;
            }
            if (DA.GetData(10, ref ecc))
            {
                rFMember.EccentricityNo = ecc;
            }
            if (DA.GetData(11, ref div))
            {
                rFMember.DivisionNo = div;
            }
            if (DA.GetData(12, ref taperType))
            {
                Enum.TryParse(taperType, out TaperShapeType myTaperType);
                rFMember.TaperShape = myTaperType;
            }
            DA.SetData(0, rFMember);
        }
Esempio n. 7
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object can be used to retrieve data from input parameters and
        /// to store data in output parameters.</param>
        protected override void SolveInstance(IGH_DataAccess DA, EvaluationUnit unit)
        {
            //var line = new LineCurve();
            Curve inCurve  = null;
            var   noIndex  = 0;
            var   comment  = "";
            var   rfSup    = new RFSupportL();
            var   inRFEM   = new GH_RFEM();
            var   mod      = false;
            var   del      = false;
            var   tx       = 0.0;
            var   ty       = 0.0;
            var   tz       = 0.0;
            var   rx       = 0.0;
            var   ry       = 0.0;
            var   rz       = 0.0;
            var   lineList = "";
            var   refSys   = "";

            //int newNo = 0;


            if (DA.GetData(11, ref inRFEM))
            {
                rfSup = new RFSupportL((RFSupportL)inRFEM.Value);
            }
            else if (DA.GetData(0, ref inCurve))
            {
                var myRFLine = new RFLine();
                Component_RFLine.SetGeometry(inCurve, ref myRFLine);
                var myRFLines = new List <RFLine>()
                {
                    myRFLine
                };
                rfSup = new RFSupportL(new LineSupport(), myRFLines);
            }
            else
            {
                return;
            }
            if (DA.GetData(12, ref mod))
            {
                rfSup.ToModify = mod;
            }
            if (DA.GetData(13, ref del))
            {
                rfSup.ToDelete = del;
            }
            if (DA.GetData(1, ref noIndex))
            {
                rfSup.No = noIndex;
            }
            if (DA.GetData(8, ref comment))
            {
                rfSup.Comment = comment;
            }
            if (DA.GetData(2, ref tx))
            {
                rfSup.Tx = tx;
            }
            if (DA.GetData(3, ref ty))
            {
                rfSup.Ty = ty;
            }
            if (DA.GetData(4, ref tz))
            {
                rfSup.Tz = tz;
            }
            if (DA.GetData(5, ref rx))
            {
                rfSup.Rx = rx;
            }
            if (DA.GetData(6, ref ry))
            {
                rfSup.Ry = ry;
            }
            if (DA.GetData(7, ref rz))
            {
                rfSup.Rz = rz;
            }
            if (DA.GetData(9, ref lineList))
            {
                rfSup.LineList = lineList;
            }
            if (DA.GetData(10, ref refSys))
            {
                Enum.TryParse(refSys, out ReferenceSystemType myrefSys);
                rfSup.RSType = myrefSys;
            }

            DA.SetData(0, rfSup);
        }
        public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_RuntimeMessageLevel level)
        {
            msg   = "";
            level = GH_RuntimeMessageLevel.Blank;

            Curve inCurve      = null;
            var   noIndex      = 0;
            var   loadCase     = 0;
            var   comment      = "";
            var   rfLineLoad   = new RFLineLoad();
            var   inRFEM       = new GH_RFEM();
            var   mod          = false;
            var   del          = false;
            var   lineList     = "";
            var   type         = 0;
            var   dir          = 0;
            var   dist         = 0;
            var   reference    = 0;
            var   f1           = 0.0;
            var   f2           = 0.0;
            var   f3           = 0.0;
            var   t1           = 0.0;
            var   t2           = 0.0;
            var   loads        = new List <double>();
            var   distances    = new List <double>();
            var   totallength  = true;
            var   reldistances = true;


            if (DA.GetData(18, ref inRFEM))
            {
                rfLineLoad = new RFLineLoad((RFLineLoad)inRFEM.Value);
                if (DA.GetData(0, ref inCurve))
                {
                    var myRFLine = new RFLine();
                    Component_RFLine.SetGeometry(inCurve, ref myRFLine);
                    var myRFLines = new List <RFLine>()
                    {
                        myRFLine
                    };
                    rfLineLoad = new RFLineLoad(rfLineLoad, myRFLines, rfLineLoad.LoadCase);
                }
                if (DA.GetData(1, ref loadCase))
                {
                    rfLineLoad.LoadCase = loadCase;
                }
                if (DA.GetData(5, ref lineList))
                {
                    rfLineLoad.LineList = lineList;
                }
            }
            else if ((DA.GetData(0, ref inCurve)) && (DA.GetData(1, ref loadCase)))
            {
                var myRFLine = new RFLine();
                Component_RFLine.SetGeometry(inCurve, ref myRFLine);
                var myRFLines = new List <RFLine>()
                {
                    myRFLine
                };
                rfLineLoad                   = new RFLineLoad(new LineLoad(), myRFLines, loadCase);
                rfLineLoad.LoadType          = LoadType.ForceType;
                rfLineLoad.LoadDirType       = LoadDirectionType.LocalZType;
                rfLineLoad.LoadDistType      = LoadDistributionType.UniformType;
                rfLineLoad.LoadRefType       = LineLoadReferenceType.LinesType;
                rfLineLoad.OverTotalLength   = true;
                rfLineLoad.RelativeDistances = true;
            }
            else if (DA.GetData(5, ref lineList) && (DA.GetData(1, ref loadCase)))
            {
                rfLineLoad                   = new RFLineLoad();
                rfLineLoad.LoadCase          = loadCase;
                rfLineLoad.LineList          = lineList;
                rfLineLoad.LoadType          = LoadType.ForceType;
                rfLineLoad.LoadDirType       = LoadDirectionType.LocalZType;
                rfLineLoad.LoadDistType      = LoadDistributionType.UniformType;
                rfLineLoad.LoadRefType       = LineLoadReferenceType.LinesType;
                rfLineLoad.OverTotalLength   = true;
                rfLineLoad.RelativeDistances = true;
            }
            else
            {
                msg   = "Insufficient input parameters. Provide either base line and load case or line list and load case or existing RFLineLoad Object. ";
                level = GH_RuntimeMessageLevel.Warning;
                return;
            }
            if (DA.GetData(19, ref mod))
            {
                rfLineLoad.ToModify = mod;
            }
            if (DA.GetData(20, ref del))
            {
                rfLineLoad.ToDelete = del;
            }
            if (DA.GetData(3, ref noIndex))
            {
                rfLineLoad.No = noIndex;
            }
            if (DA.GetData(4, ref comment))
            {
                rfLineLoad.Comment = comment;
            }
            if (DA.GetDataList(10, loads) && DA.GetDataList(11, distances))
            {
                if (loads.Count != distances.Count)
                {
                    msg   = "Null forces will result in an error in RFEM. ";
                    level = GH_RuntimeMessageLevel.Warning;
                    return;
                }
                var loadsarray = new double[loads.Count, 2];
                for (int i = 0; i < loads.Count; i++)
                {
                    loadsarray[i, 0] = distances[i] * 100;
                    loadsarray[i, 1] = loads[i];
                }
                rfLineLoad.LoadArray = loadsarray;
            }
            if (DA.GetData(2, ref f1))
            {
                rfLineLoad.Magnitude1 = f1;
            }
            if (DA.GetData(6, ref f2))
            {
                rfLineLoad.Magnitude2 = f2;
            }
            if (DA.GetData(7, ref f3))
            {
                rfLineLoad.Magnitude3 = f3;
            }
            // Add warning in case of null forces
            if ((rfLineLoad.Magnitude1 == 0.0) && (rfLineLoad.Magnitude2 == 0.0) && (rfLineLoad.Magnitude3 == 0.0) && (loads.Count == 0))
            {
                msg   = "Null forces will result in an error in RFEM. ";
                level = GH_RuntimeMessageLevel.Warning;
                return;
            }
            if (DA.GetData(8, ref t1) && DA.GetData(9, ref t2))
            {
                rfLineLoad.DistanceA       = t1;
                rfLineLoad.DistanceB       = t2;
                rfLineLoad.OverTotalLength = false;
                if ((t1 < 0.0) || (t1 > 1.0) || (t2 < 0.0) || (t2 > 1.0))
                {
                    msg   = "Invalid interval. ";
                    level = GH_RuntimeMessageLevel.Warning;
                    return;
                }
            }
            if (DA.GetData(13, ref dir))
            {
                rfLineLoad.LoadDirType = (LoadDirectionType)dir;
            }
            if (DA.GetData(14, ref dist))
            {
                rfLineLoad.LoadDistType = (LoadDistributionType)dist;
                if (rfLineLoad.LoadDistType == LoadDistributionType.UnknownLoadDistributionType)
                {
                    msg   = "Load Distribution not supported. ";
                    level = GH_RuntimeMessageLevel.Warning;
                    return;
                }
            }
            if (DA.GetData(12, ref type))
            {
                var myType = (LoadType)type;
                // Check Load Orientation
                switch (myType)
                {
                case LoadType.ForceType:
                    if (rfLineLoad.LoadDirType == LoadDirectionType.LocalUType || rfLineLoad.LoadDirType == LoadDirectionType.LocalVType || rfLineLoad.LoadDirType == LoadDirectionType.UnknownLoadDirectionType || rfLineLoad.LoadDirType == LoadDirectionType.PerpendicularZType)
                    {
                        msg   = "Load Direction Type not supported for this Loading Type. ";
                        level = GH_RuntimeMessageLevel.Warning;
                        return;
                    }
                    break;

                case LoadType.MomentType:
                    if (rfLineLoad.LoadDirType == LoadDirectionType.LocalUType || rfLineLoad.LoadDirType == LoadDirectionType.LocalVType || rfLineLoad.LoadDirType == LoadDirectionType.ProjectXType || rfLineLoad.LoadDirType == LoadDirectionType.ProjectYType || rfLineLoad.LoadDirType == LoadDirectionType.ProjectZType || rfLineLoad.LoadDirType == LoadDirectionType.UnknownLoadDirectionType || rfLineLoad.LoadDirType == LoadDirectionType.PerpendicularZType)
                    {
                        msg   = "Load Direction Type not supported for this Loading Type. ";
                        level = GH_RuntimeMessageLevel.Warning;
                        return;
                    }
                    break;

                default:
                {
                    msg   = "Load Type not supported. ";
                    level = GH_RuntimeMessageLevel.Warning;
                    return;
                }
                }
                rfLineLoad.LoadType = myType;
            }
            if (DA.GetData(15, ref reference))
            {
                rfLineLoad.LoadRefType = (LineLoadReferenceType)reference;
            }
            if (DA.GetData(16, ref totallength))
            {
                rfLineLoad.OverTotalLength = totallength;
            }
            if (DA.GetData(17, ref reldistances))
            {
                rfLineLoad.RelativeDistances = reldistances;
            }
            DA.SetData(0, rfLineLoad);
        }
Esempio n. 9
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object can be used to retrieve data from input parameters and
        /// to store data in output parameters.</param>
        protected override void SolveInstance(IGH_DataAccess DA, EvaluationUnit unit)
        {
            //var line = new LineCurve();
            Curve inCurve  = null;
            var   noIndex  = 0;
            var   comment  = "";
            var   rFLine   = new RFLine();
            var   inRFEM   = new GH_RFEM();
            var   mod      = false;
            var   del      = false;
            var   nodeList = "";
            var   lineType = "";
            var   rotAngle = 0.0;

            //int intPoints = 4;
            //int newNo = 0;

            if (DA.GetData(6, ref inRFEM))
            {
                rFLine = new RFLine((RFLine)inRFEM.Value);
            }
            else if (DA.GetData(0, ref inCurve))
            {
                Component_RFLine.SetGeometry(inCurve, ref rFLine);
            }
            else
            {
                return;
            }
            if (DA.GetData(7, ref mod))
            {
                rFLine.ToModify = mod;
            }
            if (DA.GetData(8, ref del))
            {
                rFLine.ToDelete = del;
            }
            if (DA.GetData(1, ref noIndex))
            {
                rFLine.No = noIndex;
            }
            if (DA.GetData(2, ref comment))
            {
                rFLine.Comment = comment;
            }
            if (DA.GetData(3, ref nodeList))
            {
                rFLine.NodeList = nodeList;
            }
            if (DA.GetData(4, ref lineType))
            {
                Enum.TryParse(lineType, out LineType myLineType);
                rFLine.Type = myLineType;
            }
            if (DA.GetData(5, ref rotAngle))
            {
                rFLine.RotationType  = RotationType.Angle;
                rFLine.RotationAngle = rotAngle;
            }

            DA.SetData(0, rFLine);
        }