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));
        }
示例#3
0
        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();
        }
示例#6
0
 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;
     }
 }