Exemplo n.º 1
0
        public static CircuitXml ToCircuitXml(IEnumerable <DiagramObject> diagramObjects)
        {
            var cx = new CircuitXml();

            cx.Nodes.AddRange(diagramObjects.OfType <Node>());
            cx.Resistors.AddRange(diagramObjects.OfType <Resistor>());
            cx.VoltageSources.AddRange(diagramObjects.OfType <VoltageSource>());
            cx.Switches.AddRange(diagramObjects.OfType <Switch>());
            return(cx);
        }
Exemplo n.º 2
0
 /// <summary>
 ///     Serializes a circuit.
 /// </summary>
 /// <param name="cx">A <see cref="CircuitXml" /> object.</param>
 /// <param name="s">
 ///     A <see cref="Stream" /> which the XML will be written to.
 /// </param>
 /// <exception cref="ArgumentNullException">
 ///     If <paramref name="cx" /> or <paramref name="s" /> is null.
 /// </exception>
 public void Serialize([NotNull] CircuitXml cx, [NotNull] Stream s)
 {
     if (cx == null)
     {
         throw new ArgumentNullException(nameof(cx));
     }
     if (s == null)
     {
         throw new ArgumentNullException(nameof(s));
     }
     _ser.Serialize(s, cx);
 }
Exemplo n.º 3
0
        /// <summary>
        ///     Serializes a circuit.
        /// </summary>
        /// <param name="cx">A <see cref="CircuitXml" /> object.</param>
        /// <exception cref="ArgumentNullException">
        ///     If <paramref name="cx" /> is null.
        /// </exception>
        public string Serialize([NotNull] CircuitXml cx)
        {
            if (cx == null)
            {
                throw new ArgumentNullException(nameof(cx));
            }
            string r;

            using (var sw = new StringWriter())
            {
                _ser.Serialize(sw, cx);
                r = sw.ToString();
            }
            return(r);
        }
Exemplo n.º 4
0
        public static IEnumerable <DiagramObject> ToDiagram(this CircuitXml cx)
        {
            var nodes = cx.Nodes.Where(n => n != null).ToDictionary(n => n.Id);

            foreach (var n in nodes.Values)
            {
                yield return(n);
            }
            Node ln;

            foreach (var r in cx.Resistors.Where(r => r != null))
            {
                if (r.Node1Id != null && nodes.TryGetValue(r.Node1Id.Value, out ln))
                {
                    r.Node1 = ln;
                }
                if (r.Node2Id != null && nodes.TryGetValue(r.Node2Id.Value, out ln))
                {
                    r.Node2 = ln;
                }
                yield return(r);
            }
            foreach (var v in cx.VoltageSources)
            {
                if (v.Node1Id != null && nodes.TryGetValue(v.Node1Id.Value, out ln))
                {
                    v.Node1 = ln;
                }
                if (v.Node2Id != null && nodes.TryGetValue(v.Node2Id.Value, out ln))
                {
                    v.Node2 = ln;
                }
                yield return(v);
            }
            foreach (var s in cx.Switches)
            {
                if (s.Node1Id != null && nodes.TryGetValue(s.Node1Id.Value, out ln))
                {
                    s.Node1 = ln;
                }
                if (s.Node2Id != null && nodes.TryGetValue(s.Node2Id.Value, out ln))
                {
                    s.Node2 = ln;
                }
                yield return(s);
            }
        }