public DiodeElm(Point pos) : base(pos) { mModelName = lastModelName; mDiode = new Diode(mCir); ReferenceName = "D"; setup(); }
public DiodeElm(Point p1, Point p2, int f, StringTokenizer st) : base(p1, p2, f) { const double defaultdrop = 0.805904783; mDiode = new Diode(mCir); double fwdrop = defaultdrop; double zvoltage = 0; try { ReferenceName = st.nextToken(); } catch { } if (0 != (f & FLAG_MODEL)) { try { mModelName = CustomLogicModel.unescape(st.nextToken()); } catch { } } else { if (0 != (f & FLAG_FWDROP)) { try { fwdrop = st.nextTokenDouble(); } catch { } } mModel = DiodeModel.GetModelWithParameters(fwdrop, zvoltage); mModelName = mModel.Name; } setup(); }
public void ChangeDiodeMode() { Vector2R pos = UserInterface.WorldMousePos; Node found = null; float shortedDistance = Int32.MaxValue; for (int i = room.MasterGroup.fullSet.Count - 1; i >= 0; i--) { Node n = (Node)room.MasterGroup.fullSet.ElementAt(i); if (!n.HasComp <Diode>()) { continue; } // find node that has been clicked, starting from the most recently placed nodes float distsquared = Vector2R.DistanceSquared(n.body.pos, pos); //if (distsquared < n.body.radius * n.body.radius) //{ if (distsquared < shortedDistance) { found = n; shortedDistance = distsquared; } //} } if (found != null) { Diode d = found.Comp <Diode>(); //int mode = (int)d.mode; //int countModes = Enum.GetValues(typeof(Diode.Mode)).Length; //d.mode = (Diode.Mode)((mode + 1) % countModes); found.body.orient += GMath.PI; } }
/* set up body diodes */ void setupDiodes() { /* diode from node 1 to body terminal */ mDiodeB1 = new Diode(mCir); mDiodeB1.SetupForDefaultModel(); /* diode from node 2 to body terminal */ mDiodeB2 = new Diode(mCir); mDiodeB2.SetupForDefaultModel(); }
/// <summary> /// Create a diode with a model /// </summary> /// <param name="name">Diode name</param> /// <param name="anode">Anode</param> /// <param name="cathode">Cathode</param> /// <param name="model">Model</param> /// <param name="modelparams">Model parameters</param> /// <returns></returns> Diode CreateDiode(string name, string anode, string cathode, string model, string modelparams) { var d = new Diode(name); var dm = new DiodeModel(model); ApplyParameters(dm, modelparams); d.SetModel(dm); d.Connect(anode, cathode); return(d); }
/// <summary> /// Create a diode with a model /// </summary> /// <param name="name">Diode name</param> /// <param name="anode">Anode</param> /// <param name="cathode">Cathode</param> /// <param name="model">Model</param> /// <param name="modelparams">Model parameters</param> /// <returns></returns> Diode CreateDiode(Identifier name, Identifier anode, Identifier cathode, Identifier model, string modelparams) { Diode d = new Diode(name); DiodeModel dm = new DiodeModel(model); ApplyParameters(dm, modelparams); d.SetModel(dm); d.Connect(anode, cathode); return(d); }
private Diode CreateDiode(string name, string anode, string cathode, string model) { var d = new Diode(name) { Model = model }; d.Connect(anode, cathode); return(d); }
public override void Draw(MicroWorld.Graphics.Renderer renderer) { if (!Visible) { return; } if (texture0cw == null) { return; } if (!CanDraw()) { return; } Diode d = parent as Diode; switch (parent.ComponentRotation) { case Component.Rotation.cw0: renderer.Draw(texture0cw, new Rectangle((int)Position.X, (int)Position.Y, (int)GetSizeRotated(parent.ComponentRotation).X, (int)GetSizeRotated(parent.ComponentRotation).Y), null, Color.White); break; case Component.Rotation.cw90: renderer.Draw(texture90cw, new Rectangle((int)Position.X, (int)Position.Y, (int)GetSizeRotated(parent.ComponentRotation).X, (int)GetSizeRotated(parent.ComponentRotation).Y), null, Color.White); break; case Component.Rotation.cw180: renderer.Draw(texture180cw, new Rectangle((int)Position.X, (int)Position.Y, (int)GetSizeRotated(parent.ComponentRotation).X, (int)GetSizeRotated(parent.ComponentRotation).Y), null, Color.White); break; case Component.Rotation.cw270: renderer.Draw(texture270cw, new Rectangle((int)Position.X, (int)Position.Y, (int)GetSizeRotated(parent.ComponentRotation).X, (int)GetSizeRotated(parent.ComponentRotation).Y), null, Color.White); break; default: break; } }
public void AddTickets() { Vector2R pos = UserInterface.WorldMousePos; Node found = null; float shortedDistance = Int32.MaxValue; for (int i = room.MasterGroup.fullSet.Count - 1; i >= 0; i--) { Node n = (Node)room.MasterGroup.fullSet.ElementAt(i); if (!n.HasComp <Diode>()) { continue; } // find node that has been clicked, starting from the most recently placed nodes float distsquared = Vector2R.DistanceSquared(n.body.pos, pos); //if (distsquared < n.body.radius * n.body.radius) //{ if (distsquared < shortedDistance) { found = n; shortedDistance = distsquared; } //} } if (found != null) { Diode d = found.Comp <Diode>(); if (!d.semaphore) { d.semaphore = true; d.maxTickets = 1; } else { d.maxTickets += 1; d.maxTickets %= 4; } } }
private Diode CreateDiode(string name, string anode, string cathode, string model) { var d = new Diode(name, anode, cathode, model); return(d); }
public SpiceSharp.Components.Component Generate(string componentIdentifier, string originalName, string type, ParameterCollection parameters, ICircuitContext context) { if (parameters.Count < 3) { throw new System.Exception("Model expected"); } Diode diode = new Diode(componentIdentifier); context.CreateNodes(diode, parameters); context.SimulationPreparations.ExecuteActionBeforeSetup((simulation) => { context.ModelsRegistry.SetModel( diode, simulation, parameters.Get(2), $"Could not find model {parameters.Get(2)} for diode {originalName}", (DiodeModel model) => diode.Model = model.Name, context.Result); }); // Read the rest of the parameters for (int i = 3; i < parameters.Count; i++) { if (parameters[i] is WordParameter w) { if (w.Image.ToLower() == "on") { diode.SetParameter("off", false); } else if (w.Image.ToLower() == "off") { diode.SetParameter("off", true); } else { throw new System.Exception("Expected on/off for diode"); } } if (parameters[i] is AssignmentParameter asg) { if (asg.Name.ToLower() == "ic") { context.SetParameter(diode, "ic", asg.Value); } } if (parameters[i] is ValueParameter || parameters[i] is ExpressionParameter) { // TODO: Fix this please it's broken ... var bp = diode.ParameterSets.Get <SpiceSharp.Components.DiodeBehaviors.BaseParameters>(); if (!bp.Area.Given) { bp.Area.Value = context.Evaluator.EvaluateDouble(parameters.Get(i)); } else { if (!bp.Temperature.Given) { bp.Temperature.Value = context.Evaluator.EvaluateDouble(parameters.Get(i)); } } } } return(diode); }
public DiodeInputChanged(int time, Diode diode) : base(time) { inputId = diode.Input.Id; newSignal = diode.Input.Signal; }
/// <summary> /// Generate a diode /// </summary> /// <param name="name">Name</param> /// <param name="parameters">Parameters</param> /// <param name="netlist">Netlist</param> /// <returns></returns> protected override ICircuitObject Generate(string type, CircuitIdentifier name, List <Token> parameters, Netlist netlist) { Diode dio = new Diode(name); dio.ReadNodes(netlist.Path, parameters); if (parameters.Count < 3) { throw new ParseException(parameters[1], "Model expected", false); } dio.SetModel(netlist.FindModel <DiodeModel>(parameters[2])); // Read the rest of the parameters for (int i = 3; i < parameters.Count; i++) { switch (parameters[i].kind) { case WORD: switch (parameters[i].image.ToLower()) { case "on": dio.DIOoff = false; break; case "off": dio.DIOoff = true; break; default: throw new ParseException(parameters[i], "ON or OFF expected"); } break; case ASSIGNMENT: AssignmentToken at = parameters[i] as AssignmentToken; if (at.Name.image.ToLower() == "ic") { dio.DIOinitCond = netlist.ParseDouble(at.Value); } else { throw new ParseException(parameters[i], "IC expected"); } break; case VALUE: case EXPRESSION: if (!dio.DIOarea.Given) { dio.DIOarea.Set(netlist.ParseDouble(parameters[i])); } else if (!dio.DIOtemp.Given) { dio.DIO_TEMP = netlist.ParseDouble(parameters[i]); } else { throw new ParseException(parameters[i], "Invalid parameter"); } break; default: throw new ParseException(parameters[i], "Unrecognized parameter"); } } return(dio); }
public LightChanged(int time, Diode diode, Signal newLight) : base(time) { this.diode = diode; this.newLight = newLight; }
public Alarm(Diode diode, Buzzer buzzer, Button button) { this.diode = diode; this.buzzer = buzzer; this.button = button; }
public static UIElement convert(TNodeUI node) { UIElement rst = null; switch (node.Info.CptType) { case ComponentType.Terminal: { rst = new Terminal(node.Info); break; } case ComponentType.Switch: { rst = new Switch(node.Info); break; } case ComponentType.Resistance: { rst = new Resistance(node.Info); break; } case ComponentType.Indicator: { rst = new Indicator(node.Info); break; } case ComponentType.Diode: { rst = new Diode(node.Info, node.Reverse); break; } case ComponentType.ContactClose: case ComponentType.ContactOpen: { rst = new StandardContact(node.Info); break; } case ComponentType.Coil: { rst = new Coil(node.Info); break; } case ComponentType.Capacitance: { rst = new Capacitance(node.Info); break; } case ComponentType.Breaker: { rst = new Breaker(node.Info); break; } case ComponentType.Blank: { rst = new BlankLine(node.Info); break; } } return(rst); }