public void SaveChanges(ProjectTruss projectTruss) { var projectTrussesToChange = _trussContext.ProjectTruss.First(ptr => ptr.ProjectId == projectTruss.ProjectId && ptr.TrussId == projectTruss.TrussId && ptr.TrussName == projectTruss.TrussName); projectTrussesToChange.Load = projectTruss.Load; projectTrussesToChange.TrussSpacing = projectTrussesToChange.TrussSpacing; var updatedTruss = _trussContext.Truss.First(tr => tr.TrussId == projectTrussesToChange.TrussId); if (!updatedTruss.UnitForce) { foreach (var newBar in updatedTruss.Bar) { var bar = projectTruss.Truss.Bar.First(br => br.BarId == newBar.BarId); newBar.Force = bar.ActualForce; newBar.Moment = bar.ActualMoment; newBar.Length = bar.Length; newBar.SectionId = bar.SectionId; newBar.SteelId = bar.SteelId; } } else { foreach (var newBar in updatedTruss.Bar) { var bar = projectTruss.Truss.Bar.First(br => br.BarId == newBar.BarId); newBar.SectionId = bar.SectionId; newBar.SteelId = bar.SteelId; } } _trussContext.SaveChanges(); }
public void Add(ProjectTruss projectTruss) { var projectTrussesDbMap = Mapper.Map <DataAccess.Entities.ProjectTruss>(projectTruss); _trussContext.ProjectTruss.Add(projectTrussesDbMap); _trussContext.SaveChanges(); projectTruss.Truss = Mapper.Map <Truss>(_trussContext.Truss.FirstOrDefault(truss => truss.TrussId == projectTruss.TrussId)); projectTruss.Project = Mapper.Map <Project>(_trussContext.Project.FirstOrDefault(project => project.ProjectId == projectTruss.ProjectId)); }
public static IEnumerable <WP.Paragraph> Calculate(ProjectTruss projectTrussToCalculate, ISteelRepository steelRepository) { var barsCalculationParagraph = new List <WP.Paragraph>(); var trussToCalculate = projectTrussToCalculate.Truss; var projectToCalculate = projectTrussToCalculate.Project; barsCalculationParagraph.Add(FormulaCreator.CenterBigTextParagraph($"Расчет фермы")); barsCalculationParagraph.Add(FormulaCreator.TextParagraph($"Проект: {projectToCalculate.Code} - {projectToCalculate.Description}")); barsCalculationParagraph.Add(FormulaCreator.TextParagraph($"Ферма: {projectTrussToCalculate.TrussName}.")); barsCalculationParagraph.Add(FormulaCreator.TextParagraph($"Шаг ферм: {projectTrussToCalculate.TrussSpacing} мм, нагрузка на 1м2: {projectTrussToCalculate.Load} кгс/м2.")); barsCalculationParagraph.Add(FormulaCreator.CenterBigTextParagraph($"Информация о ферме")); barsCalculationParagraph.Add(FormulaCreator.TextParagraph($"Пролет: {trussToCalculate.Span} мм")); barsCalculationParagraph.Add(FormulaCreator.TextParagraph($"Уклон: {trussToCalculate.Slope}")); barsCalculationParagraph.Add(FormulaCreator.TextParagraph($"Высота на опоре: {trussToCalculate.SupportDepth} мм")); barsCalculationParagraph.Add(FormulaCreator.TextParagraph($"Количество панелей: {trussToCalculate.PanelAmount}")); barsCalculationParagraph.Add(FormulaCreator.TextParagraph($"Тип нагрузки: {trussToCalculate.LoadType}")); var barsToCalc = trussToCalculate.Bar.OrderBy(bar => bar.BarNumber); foreach (var bar in barsToCalc) { barsCalculationParagraph.AddRange(FormulaCreator.GenerateParagraphWithBarText(bar)); var Ry = steelRepository.GetStrength(bar.Steel, bar.Section.Thickness); barsCalculationParagraph.Add(FormulaCreator.TextParagraph($"Расчетное сопротивления стержня по пределу текучести: {Ry} кгс/м2")); if (bar.ActualForce < 0) { var ecc = bar.ActualMoment / Math.Abs(bar.ActualForce) * 100; var m = ecc * bar.Section.Area / bar.Section.SectionModulusX; if (Math.Abs(bar.Moment) < TOLERANCE || m <= 0.1) { barsCalculationParagraph.Add(bar.ActualMoment == 0 ? FormulaCreator.TextParagraph($"Стержень рассчитывается на сжатие") : FormulaCreator.TextParagraph($"Влияние момента незначительно, стержень рассчитывается на сжатие")); barsCalculationParagraph.AddRange(CalculateForce(bar, Ry)); } else { barsCalculationParagraph.Add(FormulaCreator.TextParagraph($"Стержень рассчитывается на сжатие с изгибом")); barsCalculationParagraph.AddRange(CalculateForceMoment(bar, Ry)); } } else { barsCalculationParagraph.Add(FormulaCreator.TextParagraph($"Стержень рассчитывается на растяжение")); bar.CalcType = "расчет на растяжение"; bar.CalcResult = bar.ActualForce / bar.Section.Area / Ry * 100; barsCalculationParagraph.Add(FormulaCreator.GenerateParagraphWithAxialTensionFormula(bar, Ry)); } } return(barsCalculationParagraph); }
public void Update(ProjectTruss item) { var projectTrussesDbFirst = _trussContext.ProjectTruss.First(ptr => ptr.ProjectId == item.ProjectId && ptr.TrussId == item.TrussId && ptr.TrussName == item.TrussName); projectTrussesDbFirst.Load = item.Load; projectTrussesDbFirst.TrussName = item.TrussName; projectTrussesDbFirst.TrussSpacing = item.TrussSpacing; _trussContext.SaveChanges(); }
public void Remove(ProjectTruss itemToDelete) { var trusstoDelete = _trussContext.Truss.First(tr => tr.TrussId == itemToDelete.TrussId); _trussContext.ProjectTruss.Remove(_trussContext.ProjectTruss.First(prtr => prtr.TrussId == itemToDelete.TrussId && prtr.ProjectId == itemToDelete.ProjectId && prtr.TrussName == itemToDelete.TrussName )); if (trusstoDelete.UnitForce != true) { var bars = from bar in _trussContext.Bar where bar.TrussId == trusstoDelete.TrussId select bar; _trussContext.Bar.RemoveRange(bars); _trussContext.Truss.Remove(trusstoDelete); } _trussContext.SaveChanges(); }
public AddTrussDialog(ProjectTruss projectTrussToEdit, IEnumerable <TypeOfLoad> loadList) : this(loadList) { UnitForceCheckBox.IsEnabled = false; this.Title = "Редактировать ферму"; TextBoxName.IsEnabled = false; FavTruss.Span = projectTrussToEdit.Truss.Span; FavTruss.Slope = projectTrussToEdit.Truss.Slope; FavTruss.PanelAmount = projectTrussToEdit.Truss.PanelAmount; FavTruss.SupportHeight = projectTrussToEdit.Truss.SupportDepth; LoadListCB.SelectedItem = LoadList.First(x => x.LoadId == projectTrussToEdit.Truss.LoadId); UnitForceCheckBox.IsChecked = projectTrussToEdit.Truss.UnitForce; NewProjectTruss = projectTrussToEdit; if (projectTrussToEdit.Truss.UnitForce) { TextBoxSpan.IsEnabled = false; TextBoxSlope.IsEnabled = false; TextBoxHeight.IsEnabled = false; TextBoxPanelAmount.IsEnabled = false; LoadListCB.IsEnabled = false; } }