public static void PrepareCalculationsSet(this CalculationsModel model, List <SolutionModel> solutions) { CalculationsModel calculation = model; List <SpringModel> allSprings = TextConnector.Spring_GetAll(); List <List <SpringModel> > allSetups = new List <List <SpringModel> >(); allSetups = CreateAllCombinations(calculation.AllowedSpringNumber, allSprings, new List <SpringModel>()); int springNumber = calculation.CountSpringNumber(); List <List <SpringModel> > allCombinations = new List <List <SpringModel> >(); foreach (List <SpringModel> setup in allSetups) { allCombinations.AddRange(CreateAllCombinations(springNumber, setup, new List <SpringModel>())); } //List<SolutionModel> solutions = new List<SolutionModel>(); foreach (List <SpringModel> springSetup in allCombinations) { solutions.Add(new SolutionModel(calculation, springSetup)); } solutions = solutions.Distinct().ToList(); foreach (SolutionModel solution in solutions) { solution.SimulateSolution(); } //objListOrder.Sort((x, y) => x.OrderDate.CompareTo(y.OrderDate)); //solutions.Sort((x, y) => x.Result.CompareTo(y.Result)); }
public static void CreateCalculation(CalculationsModel model) { CreateCompressor(model.Compressor); foreach (FixationPointModel point in model.Points) { CreateFixationPoint(point); } List <CalculationsModel> allCalculations = Calculations_GetAll(); if (allCalculations.Count > 0) { model.Id = allCalculations.OrderByDescending(x => x.Id).First().Id + 1; } else { model.Id = 1; } allCalculations.Add(model); allCalculations.SaveCalculationsToFile(); }
public static List <CalculationsModel> ConvertTextToCalculation(this List <string> lines) { //Id|^|Name|^|CompressorId|^|PointId\\\\PointId\\\\PointId|^|AllowedSpringNumber; List <CalculationsModel> output = new List <CalculationsModel>(); CalculationsModel curr = new CalculationsModel(); List <FixationPointModel> fixationPoints = TextConnector.FixationPoint_GetAll(); List <CompressorModel> compressors = TextConnector.Compressor_GetAll(); foreach (string line in lines) { string[] cols = line.Split(new string[] { "|^|" }, StringSplitOptions.None); curr.Id = int.Parse(cols[0]); curr.Name = cols[1]; curr.Compressor = compressors.Where(x => x.Id == int.Parse(cols[2])).First(); string[] colsPoint = cols[3].Split(new string[] { "," }, StringSplitOptions.None); foreach (string point in colsPoint) { curr.Points.Add(fixationPoints.Where(x => x.Id == int.Parse(point)).ToList().First()); } curr.AllowedSpringNumber = int.Parse(cols[4]); output.Add(curr); curr = new CalculationsModel(); } return(output); }
private static int CountSpringNumber(this CalculationsModel model) { int output = 0; foreach (FixationPointModel point in model.Points) { if (point.UpperSpringBool) { output++; } if (point.LowerSpringBool) { output++; } } return(output); }
public SolutionModel(CalculationsModel model, List <SpringModel> springSetup) : base(model) { List <SpringModel> springs = new List <SpringModel>(springSetup); List <SpringModel> param = new List <SpringModel>(); this.Points = new List <SolutionPointModel>(); foreach (FixationPointModel point in model.Points) { if (point.UpperSpringBool) { param.Add(springs.First()); springs.RemoveAt(0); } else { param.Add(new SpringModel(true)); } if (point.LowerSpringBool) { param.Add(springs.First()); springs.RemoveAt(0); } else { param.Add(new SpringModel(true)); } this.Points.Add(new SolutionPointModel(point, new List <SpringModel>(param))); param.Clear(); } if (Points.Count() == 3) { this.Points.Add(new SolutionPointModel(true)); } }
private void loadCalculationsButton_Click(object sender, EventArgs e) { if (calculationsComboBox.SelectedItem == null) { MessageBox.Show("You dind't choose any calculation to perform!"); return; } CalculationsModel chosenCalculation = new CalculationsModel(); chosenCalculation = (CalculationsModel)calculationsComboBox.SelectedItem; List <SolutionModel> solutions = new List <SolutionModel>(); chosenCalculation.PrepareCalculationsSet(solutions); List <SolutionModel> results = new List <SolutionModel>(); solutions.SelectSolutions(results); ResultsViewer frm = new ResultsViewer(results); frm.Show(); }
private void calculateButton_Click(object sender, EventArgs e) { if (!ValidateData()) { return; } fixationPoints.Clear(); calculation = new CalculationsModel(); FixationPointModel fixationPointOne = new FixationPointModel(); FixationPointModel fixationPointTwo = new FixationPointModel(); FixationPointModel fixationPointThree = new FixationPointModel(); FixationPointModel fixationPointFour = new FixationPointModel() { Chosen = false }; CompressorModel compressorModel = new CompressorModel(); fixationPointOne.XPosition = double.Parse(pointOnePositionXTextBox.Text); fixationPointOne.YPosition = double.Parse(pointOnePositionYTextBox.Text); fixationPointOne.UpperSpringBool = upperSpringOneCheckBox.Checked; fixationPointOne.LowerSpringBool = lowerSpringOneChceckBox.Checked; fixationPointOne.Parts = (PartSetModel)otherPartsSizeOneComboBox.SelectedItem; fixationPointOne.Chosen = true; fixationPointTwo.XPosition = double.Parse(pointTwoPositionXTextBox.Text); fixationPointTwo.YPosition = double.Parse(pointTwoPositionYTextBox.Text); fixationPointTwo.UpperSpringBool = upperSpringTwoCheckBox.Checked; fixationPointTwo.LowerSpringBool = lowerSpringTwoChceckBox.Checked; fixationPointTwo.Parts = (PartSetModel)otherPartsSizeTwoComboBox.SelectedItem; fixationPointTwo.Chosen = true; fixationPointThree.XPosition = double.Parse(pointThreePositionXTextBox.Text); fixationPointThree.YPosition = double.Parse(pointThreePositionYTextBox.Text); fixationPointThree.UpperSpringBool = upperSpringThreeCheckBox.Checked; fixationPointThree.LowerSpringBool = lowerSpringThreeChceckBox.Checked; fixationPointThree.Parts = (PartSetModel)otherPartsSizeTwoComboBox.SelectedItem; fixationPointThree.Chosen = true; if (fourFixationPointsRadioButton.Checked == true) { fixationPointFour.XPosition = double.Parse(pointFourPositionXTextBox.Text); fixationPointFour.YPosition = double.Parse(pointFourPositionYTextBox.Text); fixationPointFour.UpperSpringBool = upperSpringFourCheckBox.Checked; fixationPointFour.LowerSpringBool = lowerSpringFourChceckBox.Checked; fixationPointFour.Parts = (PartSetModel)otherPartsSizeTwoComboBox.SelectedItem; fixationPointFour.Chosen = true; } compressorModel.Mass = double.Parse(compressorMassTextBox.Text); compressorModel.XCorrection = double.Parse(xCorrectionTextBox.Text); compressorModel.YCorrection = double.Parse(yCorrectionTextBox.Text); compressorModel.CogDistToPistX = double.Parse(cogDistToPistXTextBox.Text); compressorModel.CogDistToIzolZ = double.Parse(cogDistToIzolZTextBox.Text); fixationPoints.Add(fixationPointOne); fixationPoints.Add(fixationPointTwo); fixationPoints.Add(fixationPointThree); if (fourFixationPointsRadioButton.Checked == true) { fixationPoints.Add(fixationPointFour); } calculation.Name = calculationNameTextBox.Text; calculation.Compressor = compressorModel; calculation.Points = fixationPoints; calculation.AllowedSpringNumber = int.Parse((string)allowedSpringNumberComboBox.SelectedItem); TextConnector.CreateCalculation(calculation); List <SolutionModel> solutions = new List <SolutionModel>(); calculation.PrepareCalculationsSet(solutions); List <SolutionModel> results = new List <SolutionModel>(); solutions.SelectSolutions(results); ResultsViewer frm = new ResultsViewer(results); frm.Show(); }