/// <summary> /// Carica il documento da stream /// </summary> /// <param name="stream"></param> /// <param name="fileName"></param> /// <returns>true se ok</returns> public bool Open(Stream stream, string fileName) { bool ok = true; selezionati.Clear(); this.filename = fileName; try { using (StreamReader sr = new StreamReader(stream)) { var serializer = new JsonSerializer(); dati = (Dati)serializer.Deserialize(sr, typeof(Dati)); } } catch (Exception e) { ok = false; Messaggi.AddMessage(Messaggi.ERR.ERRORE_OPEN, e.ToString(), Messaggi.Tipo.Errori); } int failed; if ((failed = dati.AggiornaRiferimenti()) > 0) { ok = false; Messaggi.AddMessage(Messaggi.ERR.AGGIORNA_RIFERIMENTI, $"Falliti {failed} rami", Messaggi.Tipo.Errori); } if (ok) { _isModified = false; } return(ok); }
/// <summary> /// Costruttore /// </summary> public CircuitoDoc() { dati = new Dati(); selezionati = new List <Elemento>(); dati.Nome = "Circuito" + (indx.ToString()).PadLeft(3, '0'); indx++; filename = string.Empty; _isModified = false; }
/// <summary> /// Allinea tutti i nodi alla griglia della vista /// </summary> /// <param name="v">Vista con la griglia</param> public void AllineaAllaGriglia(Vista v) { foreach (Elemento el in Dati.Elementi()) { if (el is Nodo) { Point2D rp = ((Nodo)el).P / v.GridStep; // Rapporti rp.X = Math.Round(rp.X, 0) * v.GridStep; rp.Y = Math.Round(rp.Y, 0) * v.GridStep; ((Nodo)el).P.X = rp.X; ((Nodo)el).P.Y = rp.Y; } } _isModified = true; }
public void FitZoom(Dati dt) { Tuple <Point2D, Point2D> wrldExt = dt.GetExtension(); Point2D szw = wrldExt.Item2 - wrldExt.Item1; Point2D cnw = (wrldExt.Item2 + wrldExt.Item1) / 2; centro = cnw; // Pan ottimale: nel centro Point2D szc = new Point2D(szClient.Width, szClient.Height); Point2D cnc = cenClient; Point2D scala_tmp = szw / szc; // Scale in X e in Y double scala_opt = Math.Max(scala_tmp.X, scala_tmp.Y) * Def.ZOOM_FIT_ENLARGE; scalaXY.X = scalaXY.Y = 1 / scala_opt; // Scala ottimale RecalcSzWlorld(); dl.IsUpdated = false; return; }