/// <summary> /// Method to initialize all the Axes involved in the wheel assembly.Called only once during 1st time initialization which happenes using <see cref="SetupChangeDatabase()"/> construction /// </summary> /// <param name="scm">Object of the SuspensionCoordinateMaster Class</param> public void InitializePointsAndVectors(SetupChange_CornerVariables sccv, SuspensionCoordinatesMaster scm, Dictionary <string, AdjustmentTools> adjToolDictionary) { ///<summary>Creating a vector out the Spindle End Coordinates so that I can use the Mathnet.Euclidean functions to calcualate its angles with respect to space</summary> WheelSpindle = new Custom3DGeometry(new Point3D(scm.K1x, scm.K1y, scm.K1z), new Point3D(scm.L1x, scm.L1y, scm.L1z)); ///<summary>Creating the contact patch point</summary> ContactPatch = new ChildPoint_VariablePoint(new Point3D(scm.W1x, scm.W1y, scm.W1z)); ///<summary>Creatng the Ball Joints</summary> LBJ = new Point3D(scm.E1x, scm.E1y, scm.E1z); UBJ = new Point3D(scm.F1x, scm.F1y, scm.F1z); ToeLinkUpright = new Point3D(scm.M1x, scm.M1y, scm.M1z); ///<summary>Initializing axes passing through the wheel centre. These will be used to initialize other axes</summary> WheelCentreAxis = new StandardAxesLines(new Point3D(scm.K1x, scm.K1y, scm.K1z), new Point3D(scm.K1x, scm.K1y, scm.K1z + 100), new Point3D(scm.K1x, scm.K1y, scm.K1z), new Point3D(scm.K1x + 100, scm.K1y, scm.K1z), new Point3D(scm.K1x, scm.K1y, scm.K1z), new Point3D(scm.K1x, scm.K1y + 100, scm.K1z)); ///<summary> ///Initializing the SteeringAxis Vector ///</summary> ///<remarks>Initialization of the Steering Axis</remarks> SteeringAxis = new Custom3DGeometry(LBJ, UBJ); InitializeAuxillaries(0); UprightTriangle.Add(new Triangle(/*new Point3D(UBJ.X, UBJ.Y, UBJ.Z),*/ UBJ, /*new Point3D(LBJ.X, LBJ.Y, LBJ.Z)*/ LBJ, /* new Point3D(ToeLinkUpright.X, ToeLinkUpright.Y, ToeLinkUpright.Z)*/ ToeLinkUpright)); ///<summary>Initializing the <see cref="LBJToToeLink"/> Vector</summary> LBJToToeLink = new Custom3DGeometry(LBJ, ToeLinkUpright); ///<summary>Initializing the <see cref="UBJToToeLink"/> Vector</summary> UBJToToeLink = new Custom3DGeometry(UBJ, ToeLinkUpright); ///<summary></summary> AdjOptions = new AdjustmentOptions(scm, this, adjToolDictionary, sccv); }
/// <summary> /// Method to assign the KPI Master Adjuster /// </summary> /// <param name="_adjToolDictionary">tionary which is initialized with all the <see cref="AdjustmentTools"/> the user has selected for each Setup Change</param> private void AssignKPIAdjuster(SetupChange_CornerVariables _sccv, Dictionary <string, AdjustmentTools> _adjToolDictionary, SetupChangeDatabase _scd) { if (_sccv.kpiAdjustmentTool == AdjustmentTools.TopFrontArm || _sccv.kpiAdjustmentTool == AdjustmentTools.DirectValue) { _adjToolDictionary["KPIChange"] = _sccv.kpiAdjustmentTool; MKPIAdjusterLine = TopFrontArm; MKPIAdjusterVector = TopFrontVector; AxisRotation_KPI = _scd.LBJToToeLink.Line.DeltaLine; UprightIndexForKPI = 0; } else if (_sccv.kpiAdjustmentTool == AdjustmentTools.TopRearArm) { _adjToolDictionary["KPIChange"] = _sccv.kpiAdjustmentTool; MKPIAdjusterLine = TopRearArm; MKPIAdjusterVector = TopRearVector; AxisRotation_KPI = _scd.LBJToToeLink.Line.DeltaLine; UprightIndexForKPI = 0; } else if (_sccv.kpiAdjustmentTool == AdjustmentTools.BottomFrontArm) { _adjToolDictionary["KPIChange"] = _sccv.kpiAdjustmentTool; MKPIAdjusterLine = BottomFrontArm; MKPIAdjusterVector = BottomFrontArmVector; AxisRotation_KPI = _scd.UBJToToeLink.Line.DeltaLine; UprightIndexForKPI = 1; } else if (_sccv.kpiAdjustmentTool == AdjustmentTools.BottomRearArm) { _adjToolDictionary["KPIChange"] = _sccv.kpiAdjustmentTool; MKPIAdjusterLine = BottomRearArm; MKPIAdjusterVector = BottomRearArmVector; AxisRotation_KPI = _scd.UBJToToeLink.Line.DeltaLine; UprightIndexForKPI = 1; } }
/// <summary> /// <para>Method to Modify the <see cref="SetupChange_CornerVariables"/> objects of this</para> /// <para>This method is called immediately as a change is made in the <see cref="XUC_SetupChange_Children"/></para> /// </summary> /// <param name="_setupChangeGUI">GUI Object of <see cref="SetupChange_GUI"/></param> /// <param name="_setupChange_CV_Master_GUI"><see cref="SetupChange_CornerVariables"/> object of the <see cref="SetupChange_GUI"/> class which is going to be passed onto the <see cref="SetupChange_CornerVariables"/> /// object of this class</param> /// <param name="identifier"></param> public void InitOrEditDeltas(SetupChange_GUI _setupChangeGUI, SetupChange_CornerVariables _setupChange_CV_Master_GUI, int identifier) { setupChangeGUI = _setupChangeGUI; setupChange_CV_Master = new SetupChange_CornerVariables(); setupChange_CV_Master = _setupChange_CV_Master_GUI; if (identifier == 1) { setupChange_CV_FL = null; setupChange_CV_FL = setupChange_CV_Master; } else if (identifier == 2) { setupChange_CV_FR = null; setupChange_CV_FR = setupChange_CV_Master; } else if (identifier == 3) { setupChange_CV_RL = null; setupChange_CV_RL = setupChange_CV_Master; } else if (identifier == 4) { setupChange_CV_RR = null; setupChange_CV_RR = setupChange_CV_Master; } }
internal void DisplayOutputs(SetupChange_Outputs setup_OP_FL, SetupChange_CornerVariables cvFL, SetupChange_Outputs setup_OP_FR, SetupChange_CornerVariables cvFR, SetupChange_Outputs setup_OP_RL, SetupChange_CornerVariables cvRL, SetupChange_Outputs setup_OP_RR, SetupChange_CornerVariables cvRR) { bool Converged = true; ///<summary>Setting the Front Left Outputs</summary> SetupChangeFL_Results.DisplayIndividualOutputs(OC_FL, setup_OP_FL, cvFL, SetupChangeFL_Results, SetupChangeFL_Results.vGridControl1, ref Converged); ///<summary>Plotting the User's and Calculated Bump Steer Curve. If they are not requested, their count will be zero and it will be taken care of </summary> SetupChangeFL_Results.PlotBumpSteerGraph(setup_OP_FL, cvFL, SetupChangeFL_Results); ///<summary>Setting the Front Right Outputs</summary> SetupChangeFR_Results.DisplayIndividualOutputs(OC_FR, setup_OP_FR, cvFR, SetupChangeFR_Results, SetupChangeFR_Results.vGridControl1, ref Converged); ///<summary>Plotting the User's and Calculated Bump Steer Curve. If they are not requested, their count will be zero and it will be taken care of </summary> SetupChangeFR_Results.PlotBumpSteerGraph(setup_OP_FR, cvFR, SetupChangeFR_Results); ///<summary>Setting the Rear Left Outputs</summary> SetupChangeRL_Results.DisplayIndividualOutputs(OC_RL, setup_OP_RL, cvRL, SetupChangeRL_Results, SetupChangeRL_Results.vGridControl1, ref Converged); ///<summary>Plotting the User's and Calculated Bump Steer Curve. If they are not requested, their count will be zero and it will be taken care of </summary> SetupChangeFR_Results.PlotBumpSteerGraph(setup_OP_RL, cvRL, SetupChangeRL_Results); ///<summary>Setting the Rear Right Outputs</summary> SetupChangeRR_Results.DisplayIndividualOutputs(OC_RR, setup_OP_RR, cvRR, SetupChangeRR_Results, SetupChangeRR_Results.vGridControl1, ref Converged); ///<summary>Plotting the User's and Calculated Bump Steer Curve. If they are not requested, their count will be zero and it will be taken care of </summary> SetupChangeRR_Results.PlotBumpSteerGraph(setup_OP_RR, cvRR, SetupChangeRR_Results); ///<summary>Displaying the Results Panel in a Floating Style</summary> FloatOutputDockPanel(); }
/// <summary> /// Method to initialize the Parent Data of the Bump Steer Chart /// ---IMP---This is used only for the Input section of the Setup Change and not the Output Section /// </summary> /// <param name="_setupCV"></param> public void GetParentObjectData(SetupChange_CornerVariables _setupCV) { Setup_CV = _setupCV; Setup_CV.BS_Params = BumpSteerParms; AddPointToChart(chartControl1, 0, 0, 0, false); }
/// <summary> /// Method to edit the actual Setup Change class' object /// </summary> /// <param name="setupChangeMaster"></param> /// <param name="identifier"></param> public void EditSetupChangeDeltas(SetupChange_CornerVariables setupChangeMaster, int identifier) { R1 = Kinematics_Software_New.AssignFormVariable(); int indexSetup = R1.navBarGroupSetupChange.SelectedLinkIndex; SetupChange.List_SetupChange[indexSetup].InitOrEditDeltas(this, setupChangeMaster, identifier); }
/// <summary> /// Method to Assign the Master Adjusters based on the <see cref="AdjustmentTools"/> which the user has selected for each SetupChange /// </summary> /// <param name="adjToolDictionary">tionary which is initialized with all the <see cref="AdjustmentTools"/> the user has selected for each Setup Change</param> internal void AssignMasterAdjusters(SetupChange_CornerVariables sccv, Dictionary <string, AdjustmentTools> adjToolDictionary, SetupChangeDatabase scd) { AssignCamberAdjust(sccv, adjToolDictionary, scd); AssignToeAdjuster(scd); AssignCasterAdjuster(sccv, adjToolDictionary, scd); AssignKPIAdjuster(sccv, adjToolDictionary, scd); AssignRideHeightAdjuster(adjToolDictionary); }
/// <summary> /// Method to assing the Camber Master Adjuster /// </summary> /// <param name="_adjToolDictionary">tionary which is initialized with all the <see cref="AdjustmentTools"/> the user has selected for each Setup Change</param> private void AssignCamberAdjust(SetupChange_CornerVariables _sccv, Dictionary <string, AdjustmentTools> _adjToolDictionary, SetupChangeDatabase _scd) { if (_sccv.camberAdjustmentTool == AdjustmentTools.TopCamberMount || _sccv.camberAdjustmentTool == AdjustmentTools.DirectValue) { MCamberAdjusterLine = TopCamberShimsLine; MCamberAdjusterVector = TopCamberShimsVector; AxisRotation_Camber = _scd.LBJToToeLink.Line.DeltaLine; _sccv.AdjToolsDictionary["CamberChange"] = _sccv.camberAdjustmentTool; UprightIndexForCamber = 0; } else if (_sccv.camberAdjustmentTool == AdjustmentTools.BottomCamberMount) { MCamberAdjusterLine = BottomCamberShimsLine; MCamberAdjusterVector = BottomCamberShimsVector; AxisRotation_Camber = _scd.UBJToToeLink.Line.DeltaLine; _sccv.AdjToolsDictionary["CamberChange"] = _sccv.camberAdjustmentTool; UprightIndexForCamber = 1; } }
public void PlotBumpSteerGraph(SetupChange_Outputs _setupOP, SetupChange_CornerVariables _cv, XUC_SetupChangeResults _resultsGUI) { for (int i = 0; i < _resultsGUI.bumpSteerCurve1.chartControl1.Series.Count; i++) { _resultsGUI.bumpSteerCurve1.chartControl1.Series[i].Points.Clear(); } if (_cv.monitorBumpSteer || _cv.BumpSteerChangeRequested) { ///<summary> ///Ensuring that the <see cref="SetupChange_Outputs.Calc_BumpSteerChart"/> is not null ///Basically this ensures that the if the user Ran a simulation with Bump Steer Change but didn't create a BS Chart the software doesnt't fail /// </summary> if (_setupOP.Calc_BumpSteerChart != null) { ///<summary>If the Bump Steer Change is requested then setting the Enaled status to true so that the user can scroll and zoom the Bump Steer Contro </summary> _resultsGUI.bumpSteerCurve1.Enabled = true; _resultsGUI.bumpSteerCurve1.chartControl1.Series[0].Points.Clear(); ///<summary>Setting the <see cref="BumpSteerCurve.IsOutputChart"/> value to true to teach the CHart that the Output is calling it. ///---IMPORTANT--- This is an important step so that the accidentally clicking the control doesn;t create a series point /// </summary> _resultsGUI.bumpSteerCurve1.IsOutputChart = true; for (int i = 0; i < _setupOP.Req_BumpSteerChart.Count; i++) { _resultsGUI.bumpSteerCurve1.AddPointToChart(_resultsGUI.bumpSteerCurve1.chartControl1, _cv.BS_Params.WheelDeflections[_cv.BS_Params.HighestBumpindex + i], _setupOP.Req_BumpSteerChart[i].Degrees, 0, true); } _resultsGUI.bumpSteerCurve1.AddSeriesToChart(_resultsGUI.bumpSteerCurve1.chartControl1); ///<summary>Plotting the Computed Bump Steer Chart</summary> for (int i = 0; i < _setupOP.Calc_BumpSteerChart.Count; i++) { _resultsGUI.bumpSteerCurve1.AddPointToChart(_resultsGUI.bumpSteerCurve1.chartControl1, _cv.BS_Params.WheelDeflections[_cv.BS_Params.HighestBumpindex + i], _setupOP.Calc_BumpSteerChart[i].Degrees, 1, true); } _resultsGUI.bumpSteerCurve1.Enabled = true; } } }
/// <summary> /// Enumeration to decide which the Parent Change is. That is, the Entry point of the Setup Change Closed Loop Solver /// </summary> /// <summary> /// Overloaded constructor to <see cref="SolverMasterClass"/> and <see cref="OutputClass"/> and <see cref="SetupChange_CornerVariables"/> along with lists /// </summary> /// <param name="_sMC"></param> /// <param name="_oC"></param> /// <param name="_setupChange_DB_Dictionary"></param> public SetupChange_ClosedLoopSolver(SolverMasterClass _sMC, List <OutputClass> _oC, ref Dictionary <string, double> _setupChange_DB_Dictionary, Angle _finalCamber, Angle _finalToe, Angle _finalCaster, Angle _finalKPI) { ///<summary>Assining the object of the <see cref="SolverMasterClass"/></summary> SMC = _sMC; ///<summary>Assining the object of the <see cref="OutputClass"/></summary> OC = _oC; ///<summary>Assining the object of the <see cref="SetupChange_CornerVariables"/></summary> SetupChange_CV_Base = new SetupChange_CornerVariables(); SetupChange_CV_Base = OC[0].sccvOP; ///<summary>Assining the object of the <see cref="SetupChangeDatabase"/></summary> SetupChange_DB = SMC.SetupChange_DB_Master; ///<remarks>---OBSELETE---</remarks> SetupChange_DB_Dictionary = _setupChange_DB_Dictionary; ///<summary>Initializing all the Lists of this class which will be used for the Setup Change Verificating and History maintainance</summary> InitializeLists(); ///<summary>Creating delegates which will be stored in a master Multicast Delegate. This master delegate will the Invocation list and will call the methods according to that lsit </summary> invokeCamberClosedLoop = new MethodInvocationOrderDecider(ClosedLoop_ChangeCamber_Invoker); invokeToeClosedLoop = new MethodInvocationOrderDecider(ClosedLoop_ChangeToe_Invoker); invokeCasterClosedLoop = new MethodInvocationOrderDecider(ClosedLoop_ChangeCaster_Invoker); invokeKPIClosedLoop = new MethodInvocationOrderDecider(ClosedLoop_ChangeKPI_Invoker); invokeLinkLengthClosedLoop = new MethodInvocationOrderDecider(ClosedLoop_ChangeLinkLengths_Invoker); ///<summary>Dumping all the above delegates into the Multicast delegate. This will be sorted eventually based on the entry point to the closed loop </summary> AssignMulticastDelegate(); FinalCamber = _finalCamber; FinalToe = _finalToe; FinalCaster = _finalCaster; FinalKPI = _finalKPI; }
/// <summary> /// Overloaded Constructor /// </summary> /// <param name="_setupChangeName">Name of the Setup Change</param> /// <param name="_setupChangeID">ID of the Setup Change </param> public SetupChange_GUI(string _setupChangeName, int _setupChangeID) { R1 = Kinematics_Software_New.AssignFormVariable(); ///<summary>Assinging the Name</summary> _SetupChangeName = _setupChangeName + _setupChangeID; ///<summary>Assinging the ID</summary> _SetupChangeID = _setupChangeID; ///<summary>Initializing the <see cref="SetupChange_CornerVariables"/>objects</summary> setupChangeFL_GUI = new SetupChange_CornerVariables(); setupChangeFR_GUI = new SetupChange_CornerVariables(); setupChangeRL_GUI = new SetupChange_CornerVariables(); setupChangeRR_GUI = new SetupChange_CornerVariables(); XUC_SetupChange = new XUC_SetupChange(); ///<summary>Initializing the <see cref="NavBarItem"/> Object</summary> navBarItemSetupChange = new CusNavBarItem(_setupChangeName, _setupChangeID, this); ///<summary>Initialzing the <see cref="CustomXtraTabPage"/> object</summary> TabPage_SetupChangeGUI = CustomXtraTabPage.CreateNewTabPage_ForInputs(_setupChangeName, _setupChangeID); }
/// <summary> /// Method to Initialize all the Adjustment tools and decide which the Master Adjusters are going to be /// </summary> /// <param name="scm"></param> /// <param name="scd"></param> /// <param name="adjToolDictionary">Dictionary which is initialized with all the <see cref="AdjustmentTools"/> the user has selected for each Setup Change</param> public AdjustmentOptions(SuspensionCoordinatesMaster scm, SetupChangeDatabase scd, Dictionary <string, AdjustmentTools> adjToolDictionary, SetupChange_CornerVariables sccv) { TopWishbonePlane = new Plane(new Point3D(scm.F1x, scm.F1y, scm.F1z), new Point3D(scm.A1x, scm.A1y, scm.A1z), new Point3D(scm.B1x, scm.B1y, scm.B1z)); TopFrontArm.Add(new Line(new Point3D(scm.A1x, scm.A1y, scm.A1z), new Point3D(scm.F1x, scm.F1y, scm.F1z) /*scd.UBJ*/)); TopFrontVector.Add(new Vector3D(TopFrontArm[TopFrontArm.Count - 1].StartPoint, TopFrontArm[TopFrontArm.Count - 1].EndPoint)); TopRearArm.Add(new Line(new Point3D(scm.B1x, scm.B1y, scm.B1z), new Point3D(scm.F1x, scm.F1y, scm.F1z) /*scd.UBJ*/)); TopRearVector.Add(new Vector3D(TopRearArm[TopRearArm.Count - 1].StartPoint, TopRearArm[TopRearArm.Count - 1].EndPoint)); BottomWishbonePlane = new Plane(new Point3D(scm.E1x, scm.E1y, scm.E1z), new Point3D(scm.D1x, scm.D1y, scm.D1z), new Point3D(scm.C1x, scm.C1y, scm.C1z)); BottomFrontArm.Add(new Line(new Point3D(scm.D1x, scm.D1y, scm.D1z), new Point3D(scm.E1x, scm.E1y, scm.E1z) /*scd.LBJ*/)); BottomFrontArmVector.Add(new Vector3D(BottomFrontArm[BottomFrontArm.Count - 1].StartPoint, BottomFrontArm[BottomFrontArm.Count - 1].EndPoint)); BottomRearArm.Add(new Line(new Point3D(scm.C1x, scm.C1y, scm.C1z), new Point3D(scm.E1x, scm.E1y, scm.E1z) /*scd.LBJ*/)); BottomRearArmVector.Add(new Vector3D(BottomRearArm[BottomRearArm.Count - 1].StartPoint, BottomRearArm[BottomRearArm.Count - 1].EndPoint)); MToeAdjusterLine.Add(new Line(new Point3D(scm.N1x, scm.N1y, scm.N1z), new Point3D(scm.M1x, scm.M1y, scm.M1z) /*scd.ToeLinkUpright*/)); MToeAdjusterVector.Add(new Vector3D(MToeAdjusterLine[MToeAdjusterLine.Count - 1].StartPoint, MToeAdjusterLine[MToeAdjusterLine.Count - 1].EndPoint)); PushrodLine.Add(new Line(new Point3D(scm.J1x, scm.J1y, scm.J1z), new Point3D(scm.G1x, scm.G1y, scm.G1z))); PushrodVector.Add(new Vector3D(PushrodLine[PushrodLine.Count - 1].StartPoint, PushrodLine[PushrodLine.Count - 1].EndPoint)); InitializeShimsGeometry(scm, scd, TopCamberShimsLine, TopCamberShimsVector, TopWishbonePlane, scd.UBJ); InitializeShimsGeometry(scm, scd, BottomCamberShimsLine, BottomCamberShimsVector, BottomWishbonePlane, scd.LBJ); //InitUprightBasedOnAdjustmentTool(adjToolDictionary, scd); AssignMasterAdjusters(sccv, adjToolDictionary, scd); }
public SetupChange_CornerVariables Clone() { SetupChange_CornerVariables tempCV = new SetupChange_CornerVariables(); tempCV.deltaKPI = this.deltaKPI; tempCV.KPIChangeRequested = this.KPIChangeRequested; tempCV.deltaTopFrontArm = this.deltaTopFrontArm; tempCV.deltaTopRearArm = this.deltaTopRearArm; tempCV.deltaCamber = this.deltaCamber; tempCV.CamberChangeRequested = this.CamberChangeRequested; tempCV.deltaCamberShims = this.deltaCamberShims; tempCV.camberShimThickness = this.camberShimThickness; tempCV.deltaCamberShimVectorLength = this.deltaCamberShimVectorLength; tempCV.deltaCaster = this.deltaCaster; tempCV.CasterChangeRequested = this.CasterChangeRequested; tempCV.deltaBottmFrontArm = this.deltaBottmFrontArm; tempCV.deltaBottomRearArm = this.deltaBottomRearArm; tempCV.deltaToe = this.deltaToe; tempCV.ToeChangeRequested = this.ToeChangeRequested; tempCV.deltaToeLinkLength = this.deltaToeLinkLength; tempCV.deltaToeShims = this.deltaToeShims; tempCV.ToeShimThickness = this.ToeShimThickness; tempCV.deltaRideHeight = this.deltaRideHeight; tempCV.RHIChangeRequested = this.RHIChangeRequested; tempCV.deltaPushrod = this.deltaPushrod; tempCV.RideHeightChanged = this.RideHeightChanged; tempCV.BumpSteerChangeRequested = this.BumpSteerChangeRequested; tempCV.constKPI = this.constKPI; tempCV.constCamber = this.constCamber; tempCV.constCaster = this.constCaster; tempCV.constToe = this.constToe; tempCV.constRideHeight = this.constRideHeight; tempCV.monitorBumpSteer = this.monitorBumpSteer; tempCV.iterationsCamber = this.iterationsCamber; tempCV.iterationsCaster = this.iterationsCaster; tempCV.iterationsKPI = this.iterationsKPI; tempCV.iterationsToe = this.iterationsToe; tempCV.iterationsLinkLength = this.iterationsLinkLength; tempCV.LinkLengthChanged = tempCV.LinkLengthChanged; tempCV.LinkLengthsWhichHaveNotChanged = tempCV.LinkLengthsWhichHaveNotChanged; tempCV.cornerName = this.cornerName; tempCV.camberAdjustmentType = this.camberAdjustmentType; tempCV.camberAdjustmentTool = this.camberAdjustmentTool; tempCV.OverrideRandomSelectorForKPI = this.OverrideRandomSelectorForKPI; tempCV.toeAdjustmentType = this.toeAdjustmentType; tempCV.toeAdjustmentTool = this.toeAdjustmentTool; tempCV.casterAdjustmentType = this.casterAdjustmentType; tempCV.OverrideRandomSelectorForCaster = this.OverrideRandomSelectorForCaster; tempCV.casterAdjustmentTool = this.casterAdjustmentTool; tempCV.kpiAdjustmentType = this.kpiAdjustmentType; tempCV.kpiAdjustmentTool = this.kpiAdjustmentTool; tempCV.rideheightAdjustmentType = this.rideheightAdjustmentType; tempCV.rideheightAdjustmentTool = this.rideheightAdjustmentTool; tempCV.AdjToolsDictionary = this.AdjToolsDictionary; tempCV.Caster_KPI_Adj = this.Caster_KPI_Adj; tempCV.Camber_Adj = this.Camber_Adj; tempCV.Toe_Adj = this.Toe_Adj; tempCV.BumpSteer_Adj = this.BumpSteer_Adj; tempCV.BS_Params = this.BS_Params; tempCV.Master_Adj = this.Master_Adj; return(tempCV); }
/// <summary> /// Method to display the Outputs of Each Setup Change. If a particular param is not requested the initial value is shown /// </summary> /// <param name="_oc"></param> /// <param name="_setupOP"></param> /// <param name="_cv"></param> /// <param name="_resultsGUI"></param> /// <param name="_resultsGrid"></param> /// <param name="_converged"></param> public void DisplayIndividualOutputs(OutputClass _oc, SetupChange_Outputs _setupOP, SetupChange_CornerVariables _cv, XUC_SetupChangeResults _resultsGUI, VGridControl _resultsGrid, ref bool _converged) { string test = _cv.kpiAdjustmentTool.ToString(); ///<summary>Assining the KPI Outputs</summary> _resultsGrid.SetCellValue(_resultsGUI.rowKPIAngle, 1, Convert.ToString(Math.Round(Angle.FromRadians(_oc.KPI).Degrees, 2)) + " | " + Convert.ToString(Math.Round(_setupOP.Calc_KPI.Degrees, 2))); if (_cv.KPIChangeRequested || _cv.constKPI || _cv.CasterChangeRequested || _cv.constCaster) { if (_cv.Master_Adj["Caster/KPI"].ContainsKey(AdjustmentTools.TopFrontArm.ToString())) { _resultsGrid.SetCellValue(_resultsGUI.rowTopFrontAdj, 1, Convert.ToString(Math.Round(_setupOP.TopFrontLength, 3))); _resultsGUI.rowTopFrontAdj.Visible = true; } else { _resultsGUI.rowTopFrontAdj.Visible = false; } if (_cv.Master_Adj["Caster/KPI"].ContainsKey(AdjustmentTools.TopRearArm.ToString())) { _resultsGrid.SetCellValue(_resultsGUI.rowTopRearAdj, 1, Convert.ToString(Math.Round(_setupOP.TopRearLength, 3))); _resultsGUI.rowTopRearAdj.Visible = true; } else { _resultsGUI.rowTopRearAdj.Visible = false; } if (_cv.Master_Adj["Caster/KPI"].ContainsKey(AdjustmentTools.BottomFrontArm.ToString())) { _resultsGrid.SetCellValue(_resultsGUI.rowBottomFrontAdj, 1, Convert.ToString(Math.Round(_setupOP.BottomFrontLength, 3))); _resultsGUI.rowBottomFrontAdj.Visible = true; } else { _resultsGUI.rowBottomFrontAdj.Visible = false; } if (_cv.Master_Adj["Caster/KPI"].ContainsKey(AdjustmentTools.BottomRearArm.ToString())) { _resultsGrid.SetCellValue(_resultsGUI.rowBottomRearAdj, 1, Convert.ToString(Math.Round(_setupOP.BottomRearLength, 3))); _resultsGUI.rowBottomRearAdj.Visible = true; } else { _resultsGUI.rowBottomRearAdj.Visible = false; } } else { _resultsGUI.rowTopFrontAdj.Visible = false; _resultsGUI.rowTopRearAdj.Visible = false; _resultsGUI.rowBottomFrontAdj.Visible = false; _resultsGUI.rowBottomRearAdj.Visible = false; } _resultsGrid.SetCellValue(_resultsGUI.rowKPIConvergance, 1, _setupOP.KPI_Conv.ConvergenceStatus); ///<summary>Assingint the Caster Outputs</summary> _resultsGrid.SetCellValue(_resultsGUI.rowCasterAngle, 1, Convert.ToString(Math.Round(Angle.FromRadians(_oc.Caster).Degrees, 2)) + " | " + Convert.ToString(Math.Round(_setupOP.Calc_Caster.Degrees, 2))); _resultsGrid.SetCellValue(_resultsGUI.rowCasterConvergance, 1, _setupOP.Caster_Conv.ConvergenceStatus); ///<summary>Assining the Camber Outputs</summary> _resultsGrid.SetCellValue(_resultsGUI.rowCamberAngle, 1, Convert.ToString(Math.Round(Angle.FromRadians(_oc.waOP.StaticCamber).Degrees, 3)) + " | " + Convert.ToString(Math.Round(_setupOP.Calc_Camber.Degrees, 3))); if (_cv.CamberChangeRequested || _cv.constCamber) { if (_cv.Master_Adj["Camber"].ContainsKey(AdjustmentTools.TopCamberMount.ToString())) { _resultsGrid.SetCellValue(_resultsGUI.rowTopCamberMount, 1, Convert.ToString(Math.Round(_setupOP.TopCamberShimsLength, 3))); _resultsGrid.SetCellValue(_resultsGUI.rowShimsTopCamberMount, 1, Convert.ToString(Math.Round(_setupOP.TopCamberShimsNo, 3))); _resultsGUI.rowTopCamberMount.Visible = true; } else { _resultsGUI.rowTopCamberMount.Visible = false; } if (_cv.Master_Adj["Camber"].ContainsKey(AdjustmentTools.BottomCamberMount.ToString())) { _resultsGrid.SetCellValue(_resultsGUI.rowBottomCamberMount, 1, Convert.ToString(Math.Round(_setupOP.BottomCamberShimsLength, 3))); _resultsGrid.SetCellValue(_resultsGUI.rowShimsBottomCamberMount, 1, Convert.ToString(Math.Round(_setupOP.BottomCamberShimsNo, 3))); _resultsGUI.rowBottomCamberMount.Visible = true; } else { _resultsGUI.rowBottomCamberMount.Visible = false; } } else { _resultsGUI.rowTopCamberMount.Visible = false; _resultsGUI.rowBottomCamberMount.Visible = false; } _resultsGrid.SetCellValue(_resultsGUI.rowCamberConvergance, 1, _setupOP.Camber_Conv.ConvergenceStatus); ///<summary>Assigning the Toe Outputs</summary> _resultsGrid.SetCellValue(_resultsGUI.rowToeAngle, 1, Convert.ToString(Math.Round(Angle.FromRadians(_oc.waOP.StaticToe).Degrees, 3)) + " | " + Convert.ToString(Math.Round(_setupOP.Calc_Toe.Degrees, 3))); if (_cv.ToeChangeRequested || _cv.constToe) { if (_cv.Master_Adj["Toe"].ContainsKey(AdjustmentTools.ToeLinkLength.ToString())) { _resultsGrid.SetCellValue(_resultsGUI.rowToeLink, 1, Convert.ToString(Math.Round(_setupOP.ToeLinklength, 3))); _resultsGUI.rowToeLink.Visible = true; } else { _resultsGUI.rowToeLink.Visible = false; } } else { _resultsGUI.rowToeLink.Visible = false; } _resultsGrid.SetCellValue(_resultsGUI.rowToeConvergance, 1, _setupOP.Toe_Conv.ConvergenceStatus); ///<summary>Assigning the Ride Height</summary> _resultsGrid.SetCellValue(_resultsGUI.rowRideHeight, 1, _setupOP.Calc_RideHeight); _resultsGrid.SetCellValue(_resultsGUI.rowLinkRHName, 1, _cv.rideheightAdjustmentTool.ToString()); _resultsGrid.SetCellValue(rowLinkRHDelta, 1, Convert.ToString(Math.Round(_setupOP.PushrodLength, 3))); _resultsGrid.SetCellValue(_resultsGUI.rowRHConvergance, 1, _setupOP.RideHeight_Conv.ConvergenceStatus); ///<summary>Setting the results of the Bump Steer</summary> if (_cv.BumpSteerChangeRequested) { _resultsGrid.SetCellValue(rowToeLinkInboard_x, 1, Convert.ToString(Math.Round(_setupOP.ToeLinkInboard.X, 3))); _resultsGUI.rowToeLinkInboard_x.Visible = true; _resultsGrid.SetCellValue(rowToeLinkInboard_y, 1, Convert.ToString(Math.Round(_setupOP.ToeLinkInboard.Y, 3))); _resultsGUI.rowToeLinkInboard_y.Visible = true; _resultsGrid.SetCellValue(rowToeLinkInboard_z, 1, Convert.ToString(Math.Round(_setupOP.ToeLinkInboard.Z, 3))); _resultsGUI.rowToeLinkInboard_z.Visible = true; } else { _resultsGUI.rowToeLinkInboard_x.Visible = false; _resultsGUI.rowToeLinkInboard_y.Visible = false; _resultsGUI.rowToeLinkInboard_z.Visible = false; } _resultsGrid.SetCellValue(rowBSConvergence, 1, _setupOP.BumpSteer_Conv.ConvergenceStatus); }