private void OnIsVisualFrontChanged() { if (IsVisualFront) { VisualFront.VisualIsOn = true; } else { VisualFront.Dispose(); // Т.к. при включении обновляется расчет фронтов } }
/// <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()); } }
public void DisposeVisuals() { VisualFront?.Dispose(); FrontGroup = null; //DisposeFrontLines(); }