public static void LayoutSymbol(SymbolLayout Sym, BjtType Type, Terminal C, Terminal B, Terminal E, Func <string> Name, Func <string> Part) { int bx = -5; Sym.AddTerminal(B, new Coord(-20, 0), new Coord(bx, 0)); switch (Type) { case BjtType.NPN: Sym.AddTerminal(C, new Coord(10, 20), new Coord(10, 17)); Sym.AddTerminal(E, new Coord(10, -20), new Coord(10, -17)); Sym.DrawLine(EdgeType.Black, new Coord(10, 17), new Coord(bx, 8)); Sym.DrawArrow(EdgeType.Black, new Coord(bx, -8), new Coord(10, -17), 0.2, 0.3); break; case BjtType.PNP: Sym.AddTerminal(E, new Coord(10, 20), new Coord(10, 17)); Sym.AddTerminal(C, new Coord(10, -20), new Coord(10, -17)); Sym.DrawArrow(EdgeType.Black, new Coord(10, 17), new Coord(bx, 8), 0.2, 0.3); Sym.DrawLine(EdgeType.Black, new Coord(bx, -8), new Coord(10, -17)); break; default: throw new NotSupportedException("Unknown BJT type."); } Sym.DrawLine(EdgeType.Black, new Coord(bx, 12), new Coord(bx, -12)); if (Part != null) { Sym.DrawText(Part, new Coord(8, 20), Alignment.Far, Alignment.Near); } Sym.DrawText(Name, new Point(8, -20), Alignment.Far, Alignment.Far); Sym.AddCircle(EdgeType.Black, new Coord(0, 0), 20); }
public static void LayoutSymbol(SymbolLayout Sym, JfetType Type, Terminal S, Terminal G, Terminal D, Func <string> Name, Func <string> Part) { int bx = 0; Sym.AddTerminal(S, new Coord(10, -20), new Coord(10, -10), new Coord(0, -10)); Sym.AddTerminal(G, new Coord(-20, 0), new Coord(-10, 0)); Sym.AddTerminal(D, new Coord(10, 20), new Coord(10, 10), new Coord(0, 10)); Sym.DrawLine(EdgeType.Black, new Coord(bx, 12), new Coord(bx, -12)); switch (Type) { case JfetType.N: Sym.DrawArrow(EdgeType.Black, new Coord(-10, 0), new Coord(0, 0), 0.2, 0.3); break; case JfetType.P: Sym.DrawArrow(EdgeType.Black, new Coord(0, 0), new Coord(-10, 0), 0.2, 0.3); break; default: throw new NotSupportedException("Unknown JFET type."); } if (Part != null) { Sym.DrawText(Part, new Coord(8, 20), Alignment.Far, Alignment.Near); } Sym.DrawText(Name, new Point(8, -20), Alignment.Far, Alignment.Far); Sym.AddCircle(EdgeType.Black, new Coord(0, 0), 20); }
public override void LayoutSymbol(SymbolLayout Sym) { base.LayoutSymbol(Sym); Sym.AddWire(Anode, new Coord(0, 12)); Sym.AddWire(Cathode, new Coord(0, -12)); Sym.AddCircle(EdgeType.Black, new Coord(0, 12), 2); Sym.AddCircle(EdgeType.Black, new Coord(0, -12), 2); Sym.InBounds(new Coord(-10, 0), new Coord(10, 0)); if (closed) { Sym.AddWire(new Coord(0, -12), new Coord(0, 12)); } else { Sym.AddWire(new Coord(0, -12), new Coord(-8, 10)); } Sym.DrawText(() => Name, new Coord(2, 0), Alignment.Near, Alignment.Center); }
public override void LayoutSymbol(SymbolLayout Sym) { base.LayoutSymbol(Sym); int r = 10; Sym.AddWire(Anode, new Coord(0, r)); Sym.AddWire(Cathode, new Coord(0, -r)); Sym.AddCircle(EdgeType.Black, new Coord(0, 0), r); Sym.DrawArrow(EdgeType.Black, new Coord(0, -7), new Coord(0, 7), 0.2f); Sym.DrawText(() => Current.ToString(), new Point(r * 0.7, r * 0.7), Alignment.Near, Alignment.Near); Sym.DrawText(() => Name, new Point(r * 0.7, r * -0.7), Alignment.Near, Alignment.Far); }
public static void LayoutSymbol(SymbolLayout Sym, Terminal P, Terminal G, Terminal K, Func<string> Name, Func<string> Part) { Sym.AddTerminal(P, new Coord(0, 20), new Coord(0, 4)); Sym.AddWire(new Coord(-10, 4), new Coord(10, 4)); Sym.AddTerminal(G, new Coord(-20, 0), new Coord(-12, 0)); for (int i = -8; i < 16; i += 8) Sym.AddWire(new Coord(i, 0), new Coord(i + 4, 0)); Sym.AddTerminal(K, new Coord(-10, -20), new Coord(-10, -6), new Coord(-8, -4), new Coord(8, -4), new Coord(10, -6)); Sym.AddCircle(EdgeType.Black, new Coord(0, 0), 20); if (Part != null) Sym.DrawText(Part, new Coord(-2, 20), Alignment.Far, Alignment.Near); Sym.DrawText(Name, new Point(-8, -20), Alignment.Near, Alignment.Far); }
public static void LayoutSymbol(SymbolLayout Sym, Terminal P, Terminal G, Terminal K, Func <string> Name, Func <string> Part) { Sym.AddTerminal(P, new Coord(0, 20), new Coord(0, 4)); Sym.AddWire(new Coord(-10, 4), new Coord(10, 4)); Sym.AddTerminal(G, new Coord(-20, 0), new Coord(-12, 0)); for (int i = -8; i < 16; i += 8) { Sym.AddWire(new Coord(i, 0), new Coord(i + 4, 0)); } Sym.AddTerminal(K, new Coord(-10, -20), new Coord(-10, -6), new Coord(-8, -4), new Coord(8, -4), new Coord(10, -6)); Sym.AddCircle(EdgeType.Black, new Coord(0, 0), 20); if (Part != null) { Sym.DrawText(Part, new Coord(-2, 20), Alignment.Far, Alignment.Near); } Sym.DrawText(Name, new Point(-8, -20), Alignment.Near, Alignment.Far); }
public override void LayoutSymbol(SymbolLayout Sym) { Sym.AddTerminal(common, new Coord(0, -20), new Coord(0, -12)); Sym.AddCircle(EdgeType.Black, new Coord(0, -12), 2); for (int i = 0; i < Throws.Length; ++i) { int x = (i - Throws.Length / 2) * 20 + (Throws.Length % 2 == 0 ? 10 : 0); Sym.AddTerminal(throws[i], new Coord(x, 20), new Coord(x, 12)); Sym.DrawEllipse(EdgeType.Black, new Coord(x - 2, 10), new Coord(x + 2, 14)); //Sym.DrawText(i.ToString(), new Coord(x, 12), Alignment.Near, Alignment.Near); if (i == Position) { Sym.AddWire(new Coord(0, -12), new Coord(x, 12)); } } Sym.DrawText(() => Group, new Coord(-2, -12), Alignment.Far, Alignment.Far); Sym.DrawText(() => Name, new Coord(2, -12), Alignment.Near, Alignment.Far); }
public override void LayoutSymbol(SymbolLayout Sym) { base.LayoutSymbol(Sym); int r = 10; Sym.AddWire(Anode, new Coord(0, r)); Sym.AddWire(Cathode, new Coord(0, -r)); Sym.AddCircle(EdgeType.Black, new Coord(0, 0), r); Sym.DrawPositive(EdgeType.Black, new Coord(0, 7)); Sym.DrawNegative(EdgeType.Black, new Coord(0, -7)); if (!((Expression)Voltage is Constant)) { Sym.DrawFunction( EdgeType.Black, (t) => t * r * 0.75, (t) => Math.Sin(t * 3.1415) * r * 0.5, -1, 1); } Sym.DrawText(() => Voltage.ToString(), new Point(r * 0.7, r * 0.7), Alignment.Near, Alignment.Near); Sym.DrawText(() => Name, new Point(r * 0.7, r * -0.7), Alignment.Near, Alignment.Far); }
public static void LayoutSymbol(SymbolLayout Sym, JfetType Type, Terminal S, Terminal G, Terminal D, Func<string> Name, Func<string> Part) { int bx = 0; Sym.AddTerminal(S, new Coord(10, -20), new Coord(10, -10), new Coord(0, -10)); Sym.AddTerminal(G, new Coord(-20, 0), new Coord(-10, 0)); Sym.AddTerminal(D, new Coord(10, 20), new Coord(10, 10), new Coord(0, 10)); Sym.DrawLine(EdgeType.Black, new Coord(bx, 12), new Coord(bx, -12)); switch (Type) { case JfetType.N: Sym.DrawArrow(EdgeType.Black, new Coord(-10, 0), new Coord(0, 0), 0.2, 0.3); break; case JfetType.P: Sym.DrawArrow(EdgeType.Black, new Coord(0, 0), new Coord(-10, 0), 0.2, 0.3); break; default: throw new NotSupportedException("Unknown JFET type."); } if (Part != null) Sym.DrawText(Part, new Coord(8, 20), Alignment.Far, Alignment.Near); Sym.DrawText(Name, new Point(8, -20), Alignment.Far, Alignment.Far); Sym.AddCircle(EdgeType.Black, new Coord(0, 0), 20); }
public override void LayoutSymbol(SymbolLayout Sym) { Sym.AddTerminal(common, new Coord(0, -20), new Coord(0, -12)); Sym.AddCircle(EdgeType.Black, new Coord(0, -12), 2); for (int i = 0; i < Throws.Length; ++i) { int x = (i - Throws.Length / 2) * 20 + (Throws.Length % 2 == 0 ? 10 : 0); Sym.AddTerminal(throws[i], new Coord(x, 20), new Coord(x, 12)); Sym.DrawEllipse(EdgeType.Black, new Coord(x - 2, 10), new Coord(x + 2, 14)); //Sym.DrawText(i.ToString(), new Coord(x, 12), Alignment.Near, Alignment.Near); if (i == Position) Sym.AddWire(new Coord(0, -12), new Coord(x, 12)); } Sym.DrawText(() => Group, new Coord(-2, -12), Alignment.Far, Alignment.Far); Sym.DrawText(() => Name, new Coord(2, -12), Alignment.Near, Alignment.Far); }
public override void LayoutSymbol(SymbolLayout Sym) { base.LayoutSymbol(Sym); Sym.AddWire(Anode, new Coord(0, 12)); Sym.AddWire(Cathode, new Coord(0, -12)); Sym.AddCircle(EdgeType.Black, new Coord(0, 12), 2); Sym.AddCircle(EdgeType.Black, new Coord(0, -12), 2); Sym.InBounds(new Coord(-10, 0), new Coord(10, 0)); if (closed) Sym.AddWire(new Coord(0, -12), new Coord(0, 12)); else Sym.AddWire(new Coord(0, -12), new Coord(-8, 10)); Sym.DrawText(() => Name, new Coord(2, 0), Alignment.Near, Alignment.Center); }
public override void LayoutSymbol(SymbolLayout Sym) { base.LayoutSymbol(Sym); int r = 10; Sym.AddWire(Anode, new Coord(0, r)); Sym.AddWire(Cathode, new Coord(0, -r)); Sym.AddCircle(EdgeType.Black, new Coord(0, 0), r); Sym.DrawPositive(EdgeType.Black, new Coord(0, 7)); Sym.DrawNegative(EdgeType.Black, new Coord(0, -7)); if (!((Expression)Voltage is Constant)) Sym.DrawFunction( EdgeType.Black, (t) => t * r * 0.75, (t) => Math.Sin(t * 3.1415) * r * 0.5, -1, 1); Sym.DrawText(() => Voltage.ToString(), new Point(r * 0.7, r * 0.7), Alignment.Near, Alignment.Near); Sym.DrawText(() => Name, new Point(r * 0.7, r * -0.7), Alignment.Near, Alignment.Far); }
public static void LayoutSymbol(SymbolLayout Sym, BjtType Type, Terminal C, Terminal B, Terminal E, Func<string> Name, Func<string> Part) { int bx = -5; Sym.AddTerminal(B, new Coord(-20, 0), new Coord(bx, 0)); switch (Type) { case BjtType.NPN: Sym.AddTerminal(C, new Coord(10, 20), new Coord(10, 17)); Sym.AddTerminal(E, new Coord(10, -20), new Coord(10, -17)); Sym.DrawLine(EdgeType.Black, new Coord(10, 17), new Coord(bx, 8)); Sym.DrawArrow(EdgeType.Black, new Coord(bx, -8), new Coord(10, -17), 0.2, 0.3); break; case BjtType.PNP: Sym.AddTerminal(E, new Coord(10, 20), new Coord(10, 17)); Sym.AddTerminal(C, new Coord(10, -20), new Coord(10, -17)); Sym.DrawArrow(EdgeType.Black, new Coord(10, 17), new Coord(bx, 8), 0.2, 0.3); Sym.DrawLine(EdgeType.Black, new Coord(bx, -8), new Coord(10, -17)); break; default: throw new NotSupportedException("Unknown BJT type."); } Sym.DrawLine(EdgeType.Black, new Coord(bx, 12), new Coord(bx, -12)); if (Part != null) Sym.DrawText(Part, new Coord(8, 20), Alignment.Far, Alignment.Near); Sym.DrawText(Name, new Point(8, -20), Alignment.Far, Alignment.Far); Sym.AddCircle(EdgeType.Black, new Coord(0, 0), 20); }