public void FrontCADPreProcessor(SuspensionCoordinatesFrontGUI _scflGUI, int Index, bool IsRecreated)
        {
            ///<summary>
            ///This method initializes the CAD user control and viewport.
            ///This method is called only during the creation of a Suspension Item
            ///</summary>
            try
            {
                if (!IsRecreated)
                {
                    _scflGUI.TabPage_FrontCAD = CustomXtraTabPage.CreateNewTabPage_ForInputs("Front Suspension ", SuspensionCoordinatesFront.Assy_List_SCFL[Index].SCFL_ID);
                }

                _scflGUI.CADFront = new CAD();
                _scflGUI.TabPage_FrontCAD.Controls.Add(_scflGUI.CADFront);
                Kinematics_Software_New.TabControl_Outputs = CustomXtraTabPage.AddTabPages(Kinematics_Software_New.TabControl_Outputs, _scflGUI.TabPage_FrontCAD);
                _scflGUI.CADFront.Dock = DockStyle.Fill;
                CreateFrontCAD(_scflGUI.CADFront, _scflGUI, SuspensionCoordinatesFront.Assy_List_SCFL[Index], SuspensionCoordinatesFrontRight.Assy_List_SCFR[Index]);
                _scflGUI.CADFront.SetupViewPort();
                _scflGUI.CADFront.Visible = true;
                Kinematics_Software_New.TabControl_Outputs.SelectedTabPage = _scflGUI.TabPage_FrontCAD;
            }
            catch (Exception)
            {
                // Keeping this code in try and catch block will help during Open operation. If the method is called without a Suspension or SuspensionGUI item being present, then the software won't crash
            }
        }
        public void CreateNewSCFL(int i_create_scfl, SuspensionCoordinatesFrontGUI create_scflGUI_list)
        {
            ///<<summary>
            ///This section of the code creates a new SCFL and addes it to the List of SCFL objects
            ///</summary>

            #region Adding new SCFL object to the list of SCFL Objects
            SuspensionCoordinatesFrontGUI scflGUI = create_scflGUI_list;
            Assy_List_SCFL.Insert(i_create_scfl, new SuspensionCoordinatesFront(scflGUI));
            Assy_List_SCFL[i_create_scfl].FrontSuspensionType(scflGUI);
            Assy_List_SCFL[i_create_scfl]._SCName           = "Front Left Coordinates " + Convert.ToString(i_create_scfl + 1);
            Assy_List_SCFL[i_create_scfl].SCFL_ID           = i_create_scfl + 1;
            Assy_List_SCFL[i_create_scfl]._UndocommandsSCFL = new Stack <ICommand>();
            Assy_List_SCFL[i_create_scfl]._RedocommandsSCFL = new Stack <ICommand>();
            #endregion
        }
        public void FrontSuspensionType(SuspensionCoordinatesFrontGUI _scflGUI)
        {
            #region Determining the Suspension Type using the GUI Object
            SuspensionMotionExists = _scflGUI.SuspensionMotionExists;

            FrontSymmetry = _scflGUI.FrontSymmetryGUI;

            DoubleWishboneIdentifierFront = _scflGUI.DoubleWishboneIdentifierFront;
            McPhersonIdentifierFront      = _scflGUI.McPhersonIdentifierFront;

            PushrodIdentifierFront = _scflGUI.PushrodIdentifierFront;
            PullrodIdentifierFront = _scflGUI.PullrodIdentifierFront;

            UARBIdentifierFront = _scflGUI.UARBIdentifierFront;
            TARBIdentifierFront = _scflGUI.TARBIdentifierFront;

            NoOfCouplings = _scflGUI.NoOfCouplings;

            #endregion
        }
        public void Undo_ModifyObjectData(int l_unexcute_scfl, ICommand command)
        {
            ///<summary>
            /// This code is to undo the modification action which the user has performed
            /// </summary>

            #region Undo the Modification
            try
            {
                SuspensionCoordinatesFront _scfl_forUndo = (SuspensionCoordinatesFront)command;

                ICommand cmd = Assy_List_SCFL[l_unexcute_scfl];
                Assy_List_SCFL[l_unexcute_scfl]._RedocommandsSCFL.Push(cmd);

                Assy_List_SCFL[l_unexcute_scfl] = _scfl_forUndo;

                PopulateDataTable(l_unexcute_scfl);

                SuspensionCoordinatesFrontGUI.DisplaySCFLItem(Assy_List_SCFL[l_unexcute_scfl]);

                #region Calling Undo method for Opposite Suspension if symmetric
                if (Assy_List_SCFL[l_unexcute_scfl].FrontSymmetry == true && IsUndoRedoCalledByRight == false)
                {
                    SuspensionCoordinatesFrontRight.IsUndoRedoCalledByLeft_IdentifierMethod(true);// This method sets the IsUndoRedoCalledByLeft variable to true and prevents an infinte loop

                    UndoRedo undoRedo = new UndoRedo();
                    undoRedo.Identifier(SuspensionCoordinatesFrontRight.Assy_List_SCFR[l_unexcute_scfl]._UndocommandsSCFR, SuspensionCoordinatesFrontRight.Assy_List_SCFR[l_unexcute_scfl]._RedocommandsSCFR,
                                        l_unexcute_scfl + 1, SuspensionCoordinatesFrontRight.Assy_List_SCFR[l_unexcute_scfl].SCFRIsModified);
                    undoRedo.Undo(1);
                    SuspensionCoordinatesFrontRight.IsUndoRedoCalledByLeft_IdentifierMethod(false);//This method sets the value of IsUndoRedoCalledByLeft to false so that the Right Suspension coordinate can also be Undone
                }
                #endregion

                Kinematics_Software_New.EditFrontCAD(l_unexcute_scfl);

                Kinematics_Software_New.SCFL_ModifyInVehicle(l_unexcute_scfl, Assy_List_SCFL[l_unexcute_scfl]);
            }
            catch (Exception) { }
            #endregion
        }
        public void ModifyObjectData(int l_modify_SCFL, object modify_scfl_list, bool redo_Identifier)
        {
            ///<summary>
            ///In this section of the code, the Suspension is bring modified and it is placed under the method called ModifyObjectData because it is an Undoable operation
            ///</summary>

            #region Redo the Modification
            SuspensionCoordinatesFront _scfl_forRedo = (SuspensionCoordinatesFront)modify_scfl_list;

            ICommand cmd = Assy_List_SCFL[l_modify_SCFL];
            Assy_List_SCFL[l_modify_SCFL]._UndocommandsSCFL.Push(cmd);

            Assy_List_SCFL[l_modify_SCFL] = _scfl_forRedo;

            PopulateDataTable(l_modify_SCFL);

            Assy_List_SCFL[l_modify_SCFL].SCFLIsModified = true;

            SuspensionCoordinatesFrontGUI.DisplaySCFLItem(Assy_List_SCFL[l_modify_SCFL]);

            #region Calling Redo method for Opposite Suspension if symmetric
            if (Assy_List_SCFL[l_modify_SCFL].FrontSymmetry == true && IsUndoRedoCalledByRight == false)
            {
                SuspensionCoordinatesFrontRight.IsUndoRedoCalledByLeft_IdentifierMethod(true);// This method sets the IsUndoRedoCalledByLeft variable to true and prevents an infinte loop

                UndoRedo undoRedo = new UndoRedo();
                undoRedo.Identifier(SuspensionCoordinatesFrontRight.Assy_List_SCFR[l_modify_SCFL]._UndocommandsSCFR, SuspensionCoordinatesFrontRight.Assy_List_SCFR[l_modify_SCFL]._RedocommandsSCFR,
                                    l_modify_SCFL + 1, SuspensionCoordinatesFrontRight.Assy_List_SCFR[l_modify_SCFL].SCFRIsModified);
                undoRedo.Redo(1);
                SuspensionCoordinatesFrontRight.IsUndoRedoCalledByLeft_IdentifierMethod(false);//This method sets the value of IsUndoRedoCalledByLeft to false so that the Right Suspension coordinate can also be Undone
            }
            #endregion

            Kinematics_Software_New.EditFrontCAD(l_modify_SCFL);

            Kinematics_Software_New.SCFL_ModifyInVehicle(l_modify_SCFL, Assy_List_SCFL[l_modify_SCFL]);


            #endregion
        }
 public void CreateFrontCAD(CAD _susCADFront, SuspensionCoordinatesFrontGUI _scflGUI, /*int index,*/ SuspensionCoordinatesFront _scFL, SuspensionCoordinatesFrontRight _scFR)
 {
     ///<summary>
     ///This method is called during editing of a Suspension Item
     ///</summary>
     try
     {
         //_scflGUI.CADFront.InitializeEntities();
         _susCADFront.ClearViewPort(false, false, null);
         _susCADFront.InitializeLayers();
         _susCADFront.SuspensionPlotterInvoker(_scFL, 1, null, true, true, null, 0, 0, 0);
         _susCADFront.SuspensionPlotterInvoker(_scFR, 2, null, true, true, null, 0, 0, 0);
         _susCADFront.ARBConnector(_susCADFront.CoordinatesFL.InboardPickUp, _susCADFront.CoordinatesFR.InboardPickUp);
         _susCADFront.SteeringCSystemPlotter(_scFL, _scFR, _susCADFront.CoordinatesFL.InboardPickUp, _susCADFront.CoordinatesFR.InboardPickUp);
         _susCADFront.RefreshViewPort();
     }
     catch (Exception E)
     {
         string error = E.Message;
         // Keeping this code in try and catch block will help during Open operation. If the method is called without a Suspension or SuspensionGUI item being present, then the software won't crash
     }
 }
        public void EditFrontLeftSuspension(int l_edit_scfl, SuspensionCoordinatesFrontGUI _scflGUI)
        {
            ICommand cmd = Assy_List_SCFL[l_edit_scfl];

            Assy_List_SCFL[l_edit_scfl]._UndocommandsSCFL.Push(cmd);

            #region Front Left Cooridinates Editing
            SuspensionCoordinatesFront scfl_list = new SuspensionCoordinatesFront(_scflGUI);
            scfl_list._UndocommandsSCFL = Assy_List_SCFL[l_edit_scfl]._UndocommandsSCFL;
            scfl_list._RedocommandsSCFL = Assy_List_SCFL[l_edit_scfl]._RedocommandsSCFL;
            scfl_list._SCName           = Assy_List_SCFL[l_edit_scfl]._SCName;

            Assy_List_SCFL[l_edit_scfl] = scfl_list;
            Assy_List_SCFL[l_edit_scfl].SCFLDataTable = scfl_list.SCFLDataTable;
            Assy_List_SCFL[l_edit_scfl].SCFL_ID       = l_edit_scfl + 1;
            Assy_List_SCFL[l_edit_scfl].FrontSuspensionType(_scflGUI);
            Assy_List_SCFL[l_edit_scfl].SCFLIsModified = true;

            PopulateDataTable(l_edit_scfl);

            #endregion

            _RedocommandsSCFL.Clear();
        }
        public SuspensionCoordinatesFront(SuspensionCoordinatesFrontGUI _scflGUI)
        {
            SCFLDataTable = _scflGUI.SCFLDataTableGUI;

            #region Front Left Cooridinates Initialization

            #region Input Origin Initalization
            InputOriginX = _scflGUI._InputOriginX;
            InputOriginY = _scflGUI._InputOriginY;
            InputOriginZ = _scflGUI._InputOriginZ;
            #endregion

            #region Fixed Points FRONT LEFT Initialization - Double Wishbone & McPherson
            //  Coordinates of Fixed Point A
            A1x = _scflGUI.A1y;
            A1y = _scflGUI.A1z;
            A1z = _scflGUI.A1x;

            //  Coordinates of Fixed Point B
            B1x = _scflGUI.B1y;
            B1y = _scflGUI.B1z;
            B1z = _scflGUI.B1x;

            //  Coordinates of Fixed Point C
            C1x = _scflGUI.C1y;
            C1y = _scflGUI.C1z;
            C1z = _scflGUI.C1x;

            //  Coordinates of Fixed Point D
            D1x = _scflGUI.D1y;
            D1y = _scflGUI.D1z;
            D1z = _scflGUI.D1x;

            // Initial Coordinates of Moving Point I
            I1x = _scflGUI.I1y;
            I1y = _scflGUI.I1z;
            I1z = _scflGUI.I1x;

            // Initial Coordinates of Moving Point Jo
            JO1x = _scflGUI.JO1y;
            JO1y = _scflGUI.JO1z;
            JO1z = _scflGUI.JO1x;

            // Initial Coordinates of Fixed (For now when there is no steering) Point N
            N1x = _scflGUI.N1y;
            N1y = _scflGUI.N1z;
            N1z = _scflGUI.N1x;

            // Initial Coordinates of Fixed point Pin1
            Pin1x = _scflGUI.Pin1y;
            Pin1y = _scflGUI.Pin1z;
            Pin1z = _scflGUI.Pin1x;

            // Initial Coordinates of Fixed point UV1
            UV1x = _scflGUI.UV1y;
            UV1y = _scflGUI.UV1z;
            UV1z = _scflGUI.UV1x;

            // Initial Coordinates of Fixed point UV2
            UV2x = _scflGUI.UV2y;
            UV2y = _scflGUI.UV2z;
            UV2z = _scflGUI.UV2x;

            // Initial Coordinates of Fixed point STC1
            STC1x = _scflGUI.STC1y;
            STC1y = _scflGUI.STC1z;
            STC1z = _scflGUI.STC1x;

            //  Coordinates of Fixed Point Q
            Q1x = _scflGUI.Q1y;
            Q1y = _scflGUI.Q1z;
            Q1z = _scflGUI.Q1x;

            // Coordinates of Fixed Point R
            R1x = _scflGUI.R1y;
            R1y = _scflGUI.R1z;
            R1z = _scflGUI.R1x;

            #endregion

            #region Moving Points FRONT LEFT Initialization - Double Wishbone & McPherson
            // Initial Coordinates of Moving Point J
            J1x = _scflGUI.J1y;
            J1y = _scflGUI.J1z;
            J1z = _scflGUI.J1x;

            // Initial Coordinates of Moving Point H
            H1x = _scflGUI.H1y;
            H1y = _scflGUI.H1z;
            H1z = _scflGUI.H1x;

            // Initial Coordinates of Moving Point G
            G1x = _scflGUI.G1y;
            G1y = _scflGUI.G1z;
            G1z = _scflGUI.G1x;

            // Initial Coordinates of Moving Point F
            F1x = _scflGUI.F1y;
            F1y = _scflGUI.F1z;
            F1z = _scflGUI.F1x;

            // Initial Coordinates of Moving Point E
            E1x = _scflGUI.E1y;
            E1y = _scflGUI.E1z;
            E1z = _scflGUI.E1x;

            // Initial Coordinates of Moving Point K
            K1x = _scflGUI.K1y; //IN THE HELPFILE CLEAFLY MENTION THAT THE X COORDINATE IS TO BE INPUT AS CONTACT
            K1y = _scflGUI.K1z; //PATCH CENTRE - 1/2 TIRE WIDTH
            K1z = _scflGUI.K1x;

            // Initial Coordinates of Moving Point L
            L1x = _scflGUI.K1y + 157.48; //IN THE HELPFILE CLEAFLY MENTION THAT THE X COORDINATE IS TO BE INPUT AS CONTACT
            L1y = _scflGUI.K1z;          //PATCH CENTRE - 1/2 TIRE WIDTH
            L1z = _scflGUI.K1x;

            // Initial Coordinates of Moving Point M
            M1x = _scflGUI.M1y;
            M1y = _scflGUI.M1z;
            M1z = _scflGUI.M1x;

            // Initial Coordinates of Moving Point O
            O1x = _scflGUI.O1y;
            O1y = _scflGUI.O1z;
            O1z = _scflGUI.O1x;

            // Initial Coordinates of Moving Point P
            P1x = _scflGUI.P1y;
            P1y = _scflGUI.P1z;
            P1z = _scflGUI.P1x;

            //  Coordinates of Moving Contact Patch Point W
            W1x = _scflGUI.W1y;
            W1y = _scflGUI.W1z;
            W1z = _scflGUI.W1x;

            //  Ride Height Reference Points
            RideHeightRefx = _scflGUI.RideHeightRefy;
            RideHeightRefy = _scflGUI.RideHeightRefz;
            RideHeightRefz = _scflGUI.RideHeightRefx;
            #endregion

            #region Link Lengths Calculations
            //Link Lengths
            LowerFrontLength   = (Math.Sqrt(Math.Pow(D1x - E1x, 2) + Math.Pow(D1y - E1y, 2) + Math.Pow(D1z - E1z, 2)));
            LowerRearLength    = (Math.Sqrt(Math.Pow(C1x - E1x, 2) + Math.Pow(C1y - E1y, 2) + Math.Pow(C1z - E1z, 2)));
            UpperFrontLength   = (Math.Sqrt(Math.Pow(A1x - F1x, 2) + Math.Pow(A1y - F1y, 2) + Math.Pow(A1z - F1z, 2)));
            UpperRearLength    = (Math.Sqrt(Math.Pow(B1x - F1x, 2) + Math.Pow(B1y - F1y, 2) + Math.Pow(B1z - F1z, 2)));
            PushRodLength      = (Math.Sqrt(Math.Pow(H1x - G1x, 2) + Math.Pow(H1y - G1y, 2) + Math.Pow(H1z - G1z, 2)));
            PushRodLength_1    = (Math.Sqrt(Math.Pow(H1x - G1x, 2) + Math.Pow(H1y - G1y, 2) + Math.Pow(H1z - G1z, 2)));
            ToeLinkLength      = (Math.Sqrt(Math.Pow(N1x - M1x, 2) + Math.Pow(N1y - M1y, 2) + Math.Pow(N1z - M1z, 2)));
            DamperLength       = (Math.Sqrt(Math.Pow(J1x - JO1x, 2) + Math.Pow(J1y - JO1y, 2) + Math.Pow(J1z - JO1z, 2)));
            ARBDroopLinkLength = (Math.Sqrt(Math.Pow(O1x - P1x, 2) + Math.Pow(O1y - P1y, 2) + Math.Pow(O1z - P1z, 2)));
            ARBBladeLength     = (Math.Sqrt(Math.Pow(P1x - Q1x, 2) + Math.Pow(P1y - Q1y, 2) + Math.Pow(P1z - Q1z, 2)));
            #endregion

            ///< remarks > This list is going to be populated from the index number 1 as the delta of Wheel Deflection is 0 for the 0th Index </ remarks >
            //WheelDeflection_Steering.Insert(0, 0);
            #endregion
        }
        public void EditFrontLeftCoordinatesGUI(Kinematics_Software_New _r1, SuspensionCoordinatesFrontGUI _scflGUI, int susIndex)
        {
            r1 = _r1;
            int indexRow = 0;
            //int susIndex = r1.navBarGroupSuspensionFL.SelectedLinkIndex;
            int noOfCouplings;

            if (SuspensionCoordinatesFront.Assy_List_SCFL.Count == r1.scflGUI.Count)
            {
                noOfCouplings = SuspensionCoordinatesFront.Assy_List_SCFL[susIndex].NoOfCouplings;
            }
            else
            {
                noOfCouplings = r1.NoOfCouplings_VehicleGUI;
            }


            #region Editing the Front Left Suspension Coordinates GUI Class using its own Data Table which is modified through the User Interface's GridControl

            #region Editing the Coordinates if the Suspension Type is Double Wishbone
            if (_scflGUI.DoubleWishboneIdentifierFront == 1)
            {
                #region DOUBLE WISHBONE

                #region Fixed Points DOUBLE WISHBONE
                //  Coordinates of Fixed Point D
                D1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                D1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                D1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                //  Coordinates of Fixed Point C

                C1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                C1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                C1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                //  Coordinates of Fixed Point A

                A1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                A1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                A1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                //  Coordinates of Fixed Point B

                B1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                B1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                B1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Initial Coordinates of Moving Point I

                I1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                I1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                I1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Initial Coordinates of Moving Point Q

                Q1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                Q1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                Q1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                //  Coordinates of Fixed Point N

                N1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                N1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                N1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Coordinates of Fixed Point Pin1x
                Pin1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                Pin1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                Pin1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                if (noOfCouplings == 2)
                {
                    //Coordinates of Fixed Point UV2
                    UV2x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                    UV2y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                    UV2z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                    indexRow++;
                }

                //Coordinates of Fixed Point UV1
                UV1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                UV1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                UV1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                //Coordinates of Fixed Point STC1
                STC1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                STC1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                STC1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Coordinates of Fixed Point JO

                JO1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                JO1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                JO1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                //  Ride Height Reference Points

                RideHeightRefx = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                RideHeightRefy = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                RideHeightRefz = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                //if (_scflGUI.TARBIdentifierFront == 1)
                //{
                //    // Initial Coordinates of Fixed Point R  (Only active when the it is T ARB)

                //    R1x = SCFLDataTableGUI.Rows[indexRow].Field<double>(1);
                //    R1y = SCFLDataTableGUI.Rows[indexRow].Field<double>(2);
                //    R1z = SCFLDataTableGUI.Rows[indexRow].Field<double>(3);
                //    indexRow++;
                //}

                #endregion

                #region Moving Points DOUBLE WISHBONE
                // Initial Coordinates of Moving Point J

                J1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                J1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                J1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Initial Coordinates of Moving Point H

                H1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                H1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                H1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Initial Coordinates of Moving Point O

                O1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                O1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                O1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Initial Coordinates of Moving Point G

                G1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                G1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                G1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Initial Coordinates of Moving Point F

                F1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                F1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                F1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Initial Coordinates of Moving Point E

                E1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                E1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                E1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Initial Coordinates of Moving Point P

                P1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                P1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                P1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Initial Coordinates of Moving Point K

                K1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                K1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                K1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Initial Coordinates of Moving Point M

                M1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                M1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                M1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                //  Coordinates of Moving Contact Patch Point W

                W1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                W1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                W1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                if (_scflGUI.TARBIdentifierFront == 1)
                {
                    // Initial Coordinates of Fixed Point R  (Only active when the it is T ARB)

                    R1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                    R1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                    R1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                    indexRow++;
                }

                #endregion

                #endregion
            }
            #endregion

            #region Editing the Coordinates if the Suspension Type is McPherson
            if (_scflGUI.McPhersonIdentifierFront == 1)
            {
                #region MCPHERSON

                #region Fixed Points MCPHERSON
                //  Coordinates of Fixed Point D

                D1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                D1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                D1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                //  Coordinates of Fixed Point C

                C1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                C1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                C1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Initial Coordinates of Moving Point Q

                Q1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                Q1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                Q1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                //  Coordinates of Fixed Point N

                N1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                N1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                N1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Coordinates of Fixed Point Pin1x
                Pin1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                Pin1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                Pin1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                if (noOfCouplings == 2)
                {
                    //Coordinates of Fixed Point UV2
                    UV2x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                    UV2y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                    UV2z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                    indexRow++;
                }

                //Coordinates of Fixed Point UV1
                UV1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                UV1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                UV1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                //Coordinates of Fixed Point STC1
                STC1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                STC1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                STC1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Coordinates of Fixed Point JO

                JO1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                JO1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                JO1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Ride Height Reference Coordinates

                RideHeightRefx = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                RideHeightRefy = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                RideHeightRefz = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Coordinates of Fixed Point JO

                J1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                J1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                J1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                #endregion

                #region Moving Points MCPHERSON
                // Initial Coordinates of Moving Point E

                E1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                E1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                E1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Initial Coordinates of Moving Point P

                P1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                P1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                P1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Initial Coordinates of Moving Point K

                K1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                K1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                K1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                // Initial Coordinates of Moving Point M

                M1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                M1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                M1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;

                //  Coordinates of Moving Contact Patch Point W

                W1x = SCFLDataTableGUI.Rows[indexRow].Field <double>(1);
                W1y = SCFLDataTableGUI.Rows[indexRow].Field <double>(2);
                W1z = SCFLDataTableGUI.Rows[indexRow].Field <double>(3);
                indexRow++;
                #endregion

                #endregion
            }
            #endregion

            #endregion
        }