예제 #1
0
 private void OnIsVisualFrontChanged()
 {
     if (IsVisualFront)
     {
         VisualFront.VisualIsOn = true;
     }
     else
     {
         VisualFront.Dispose(); // Т.к. при включении обновляется расчет фронтов
     }
 }
예제 #2
0
        /// <summary>
        /// Расчет фронтов дома
        /// </summary>
        public void Update(int?numberHouseInGroup = null)
        {
            if (Contour == null)
            {
                return;
            }
            if (numberHouseInGroup.HasValue)
            {
                this.numberHouseInGroup = numberHouseInGroup.Value;
            }
            DefineName();

            // Визуализация зданий в доме
            UpdateBuildingsVisual();

            // Очистка визуализации фронтов
            VisualFront.Dispose();

            var calcService = FrontGroup.Front.Model.CalcService;

            try
            {
                // Отдельные линии инсоляции
                List <List <FrontCalcPoint> > contourSegmentsCalcPoints;
                var frontLines = calcService.CalcFront.CalcHouse(this, out contourSegmentsCalcPoints);
                ContourSegmentsCalcPoints = contourSegmentsCalcPoints;

                // Объединение линий фронтов для визуализациир
                //var frontLinesCopy = FrontLines.Select(s => s.Clone()).ToList();
                var frontLinesMerged = FrontValue.Merge(ref frontLines);
                VisualFront.FrontLines = frontLinesMerged;
                IsVisualFront          = FrontGroup.IsVisualFrontOn;
            }
            catch (UserBreakException)
            {
                throw;
            }
            catch (Exception ex)
            {
                AddError(ex.ToString());
            }
        }
예제 #3
0
 public void DisposeVisuals()
 {
     VisualFront?.Dispose();
     FrontGroup = null;
     //DisposeFrontLines();
 }