public TransformerView(DataVertex dv) { InitializeComponent(); this.dv = dv; this._mn = App.Current.MainWindow as MainWindow; this.globalVertices = _mn.GlobalVertices; this.globalEdges = _mn.GlobalEdges; DataVertexTransformer dataVertexTransformer = (DataVertexTransformer)dv; //if node already consist some data if (dataVertexTransformer.NameA != null) { populateViewIfObjectExists(dataVertexTransformer); } if ((_mn.graphView.DataContext as GraphViewModel).dvtp != null) { lineTo.Text = (_mn.graphView.DataContext as GraphViewModel).dvtp.Element_id; last_value = lineTo.Text; lineTo.IsReadOnly = true; } else { //lineTo.Text = dataVertexTransformer.Line_to; //lineTo.IsReadOnly = true; } setupViewDeafultValues(); }
private DataVertexTransformer setupDataVertexTransformerProperties() { DataVertexTransformer dataVertexTransformer = new DataVertexTransformer() { //populate data Text = dv.Text, Element_id = linefrom.Text, typeOfVertex = dv.typeOfVertex, NameA = first_name.Text, NameB = second_name.Text, _kVA_A = Double.Parse(apparent_power_first_part.Text), _kVA_B = Double.Parse(apparent_power_second_part.Text), _kV_HighA = Double.Parse(high_limit_first_part.Text), _kV_HighB = Double.Parse(high_limit_second_part.Text), _kV_LowA = Double.Parse(low_limit_first_part.Text), _kV_LowB = Double.Parse(low_limit_second_part.Text), RPercentageA = Double.Parse(r_percentage__first_part.Text), RPercentageB = Double.Parse(r_percentage__second_part.Text), XPercentageA = Double.Parse(x_percentage__first_part.Text), XPercentageB = Double.Parse(x_percentage__second_part.Text), Line_from = linefrom.Text, Line_to = lineTo.Text }; return(dataVertexTransformer); }
private void CreateTransformerVertex(DataVertex dv, double m = 0, double n = 0) { VertexControl vc; if (dvt != null) { MessageBox.Show("Transformer already created"); return; } dvt = new DataVertexTransformer() { Text = "First transfromer ending: " + dv.Element_id, Element_id = dv.Element_id }; dvt.typeOfVertex = DataVertex.TypeOfVertex.TRANSFORMER_VERTEX; vc = new VertexControl(dvt); if (m == 0) { vc.SetPosition(new Point(x, y)); } else { vc.SetPosition(m, n); } mainWindow.GlobalVertices.Add(dvt.Element_id, dvt); vc.Background = Brushes.GreenYellow; mainWindow.graphView.Area.AddVertexAndData(dvt, vc, true); Point point = CreatePointBasedOn(vc); if (graphState == GraphState.NORMAL) { x += 30; y += 30; } return; }
public void PrepareComplexVertexForDelete(DataVertex dv) { VertexControl vc = GetVertexControlWithDataVertex(dv.Element_id); Point p = CreatePointBasedOn(vc); DeleteVertex(dv); if (dv.typeOfVertex == DataVertex.TypeOfVertex.REGULATOR_VERTEX) { dvr = (DataVertexRegulator)dv; if (dvr.Line_Segment_To != null) { if (mainWindow.GlobalVertices.Keys.Contains(dvr.Line_Segment_To)) { DeleteVertex(mainWindow.GlobalVertices[dvr.Line_Segment_To]); mainWindow.GlobalVertices.Remove(dvr.Line_Segment_To); dvrp = null; } } dvr = null; } else if (dv.typeOfVertex == DataVertex.TypeOfVertex.TRANSFORMER_VERTEX) { dvt = (DataVertexTransformer)dv; if (dvt.Line_to != null) { if (mainWindow.GlobalVertices.Keys.Contains(dvt.Line_to)) { DeleteVertex(mainWindow.GlobalVertices[dvt.Line_to]); mainWindow.GlobalVertices.Remove(dvt.Line_to); dvtp = null; } } dvt = null; } mainWindow.enableButtonIfEdgesExists(); mainWindow.CloseAllWindows(); }
private void populateViewIfObjectExists(DataVertexTransformer dataVertexTransformer) { dynamicButton.Content = "Update"; dynamicButton2.IsEnabled = true; first_name.Text = dataVertexTransformer.NameA; second_name.Text = dataVertexTransformer.NameB; second_component = dataVertexTransformer.Line_to; apparent_power_first_part.Text = dataVertexTransformer._kVA_A.ToString(); apparent_power_second_part.Text = dataVertexTransformer._kVA_B.ToString(); high_limit_first_part.Text = dataVertexTransformer._kV_HighA.ToString(); low_limit_first_part.Text = dataVertexTransformer._kV_LowA.ToString(); high_limit_second_part.Text = dataVertexTransformer._kV_HighB.ToString(); low_limit_second_part.Text = dataVertexTransformer._kV_LowB.ToString(); r_percentage__first_part.Text = dataVertexTransformer.RPercentageA.ToString(); r_percentage__second_part.Text = dataVertexTransformer.RPercentageB.ToString(); x_percentage__first_part.Text = dataVertexTransformer.XPercentageA.ToString(); x_percentage__second_part.Text = dataVertexTransformer.XPercentageB.ToString(); last_value = lineTo.Text; }
public Dictionary <Type, Dictionary <string, IdentifiedObject> > CreateObjectModel(Dictionary <string, DataVertex> globalVertices, Dictionary <string, List <DataEdge> > globalEdges, Dictionary <string, CableConfiguration> globalCableConfiguration, Dictionary <string, SpotLoad> globalSpotLoads) { globalComponentDictionary = new Dictionary <Type, Dictionary <string, IdentifiedObject> >(); terminalPairsContainer = new List <TerminalPair>(); perLengthImpedanceContainer = new Dictionary <string, PerLengthImpedance>(); wireInfoContainer = new Dictionary <string, WireInfo>(); usagePointContainer = new Dictionary <string, SpotLoad>(); powerTransformerEnding = new Dictionary <string, DataVertexTransformer>(); PSRType local_psr_pt = new PSRType(); circuit = new Circuit(); string mrid = Guid.NewGuid().ToString(); PSRType psrTypeCircuit = new PSRType() { MRID = "Feeder", Name = "Feeder" }; circuit.PSRType = psrTypeCircuit; circuit.ID = mrid; circuit.MRID = mrid; circuit.Name = "Feeder_36"; addComponentToGlobalDictionary(circuit, circuit.GetType()); addComponentToGlobalDictionary(psrTypeCircuit, psrTypeCircuit.GetType()); Dictionary <string, ConnectivityNode> connectivityNodeContainer = new Dictionary <string, ConnectivityNode>(); foreach (DataVertex dataVertex in globalVertices.Values) { if (dataVertex.typeOfVertex == DataVertex.TypeOfVertex.TRANSFORMER_VERTEX) { PowerTransformer powerTransformer = new PowerTransformer(); DataVertexTransformer dvt = (DataVertexTransformer)dataVertex; string power_transformer_mrid = Guid.NewGuid().ToString(); powerTransformer.ID = power_transformer_mrid; powerTransformer.MRID = power_transformer_mrid; powerTransformer.Name = "2 winding power transformer"; local_psr_pt = new PSRType() { Name = "Consumer Transformer", MRID = "Consumer Transformer" }; powerTransformer.PSRType = local_psr_pt; powerTransformer.EquipmentContainer = circuit; addComponentToGlobalDictionary(local_psr_pt, local_psr_pt.GetType()); ConnectivityNode w1T_cn = new ConnectivityNode(); string connectivity_node_mrid = Guid.NewGuid().ToString(); w1T_cn.ID = connectivity_node_mrid; w1T_cn.MRID = connectivity_node_mrid; w1T_cn.ConnectivityNodeContainer = circuit; if ((dataVertex as DataVertexTransformer).Line_from == null) { continue; } ; w1T_cn.Name = (dataVertex as DataVertexTransformer).Line_from; connectivityNodeContainer.Add((dataVertex as DataVertexTransformer).Line_from, w1T_cn); addComponentToGlobalDictionary(w1T_cn, w1T_cn.GetType()); ConnectivityNode w2T_cn = new ConnectivityNode(); connectivity_node_mrid = Guid.NewGuid().ToString(); w2T_cn.ID = connectivity_node_mrid; w2T_cn.MRID = connectivity_node_mrid; w2T_cn.ConnectivityNodeContainer = circuit; w2T_cn.Name = (dataVertex as DataVertexTransformer).Line_to; connectivityNodeContainer.Add((dataVertex as DataVertexTransformer).Line_to, w2T_cn); if ((dataVertex as DataVertexTransformer).Line_to == null) { continue; } ; addComponentToGlobalDictionary(w2T_cn, w2T_cn.GetType()); Terminal w1T = new Terminal(); w1T.MRID = power_transformer_mrid + ".W1.T"; w1T.ID = power_transformer_mrid + ".W1.T"; w1T.SequenceNumber = 1; w1T.ConductingEquipment = powerTransformer; w1T.ConnectivityNode = w1T_cn; w1T.Phases = PhaseCode.s2N; w1T.Name = "Transformer end terminal 1"; Terminal w2T = new Terminal(); w2T.MRID = power_transformer_mrid + ".W2.T"; w2T.ID = power_transformer_mrid + ".W2.T"; w2T.SequenceNumber = 2; w2T.ConductingEquipment = powerTransformer; w2T.ConnectivityNode = w2T_cn; w2T.Phases = PhaseCode.s2N; w2T.Name = "Transformer end terminal 2"; terminalPairsContainer.Add(new TerminalPair() { terminalA = w1T, terminalB = w2T }); addComponentToGlobalDictionary(w1T, w1T.GetType()); addComponentToGlobalDictionary(w2T, w2T.GetType()); PowerTransformerEnd powerTransformerEnd1 = new PowerTransformerEnd(); powerTransformerEnd1.ID = power_transformer_mrid + ".W1"; powerTransformerEnd1.MRID = power_transformer_mrid + ".W1"; powerTransformerEnd1.Name = dvt.NameA; powerTransformerEnd1.Terminal = w1T; powerTransformerEnd1.Grounded = false; powerTransformerEnd1.EndNumber = 1; powerTransformerEnd1.PowerTransformer = powerTransformer; powerTransformerEnd1.ConnectionKind = WindingConnection.D; powerTransformerEnd1.PhaseAngleClock = 0; powerTransformerEnd1.RatedS = (float)dvt._kVA_A; powerTransformerEnd1.RatedU = (float)dvt._kV_LowA; PowerTransformerEnd powerTransformerEnd2 = new PowerTransformerEnd(); powerTransformerEnd2.ID = power_transformer_mrid + ".W2"; powerTransformerEnd2.MRID = power_transformer_mrid + ".W2"; powerTransformerEnd2.Name = dvt.NameB; powerTransformerEnd2.Terminal = w2T; powerTransformerEnd2.Grounded = false; powerTransformerEnd2.EndNumber = 1; powerTransformerEnd2.PowerTransformer = powerTransformer; powerTransformerEnd2.ConnectionKind = WindingConnection.D; powerTransformerEnd2.PhaseAngleClock = 0; powerTransformerEnd2.RatedS = (float)dvt._kVA_B; powerTransformerEnd2.RatedU = (float)dvt._kV_LowB; addComponentToGlobalDictionary(powerTransformer, powerTransformer.GetType()); addComponentToGlobalDictionary(powerTransformerEnd1, powerTransformerEnd1.GetType()); addComponentToGlobalDictionary(powerTransformerEnd2, powerTransformerEnd2.GetType()); } if (dataVertex.typeOfVertex == DataVertex.TypeOfVertex.REGULATOR_VERTEX) { string sync_machine = Guid.NewGuid().ToString(); PSRType psr_sync_machine = new PSRType() { MRID = "Generator", Name = "Generator" }; SynchronousMachine sm = new SynchronousMachine() { Name = dataVertex.Text, MRID = sync_machine, ID = sync_machine, EquipmentContainer = circuit }; addComponentToGlobalDictionary(sm, sm.GetType()); addComponentToGlobalDictionary(psr_sync_machine, psr_sync_machine.GetType()); } } foreach (List <DataEdge> dataEdgeCollection in globalEdges.Values) { foreach (DataEdge dataEdge in dataEdgeCollection) { string acLineSegment_mrid = Guid.NewGuid().ToString(); ConnectivityNode T1_cn = new ConnectivityNode(); string connectivity_node_mrid = Guid.NewGuid().ToString(); T1_cn.ID = connectivity_node_mrid; T1_cn.MRID = connectivity_node_mrid; T1_cn.ConnectivityNodeContainer = circuit; T1_cn.Name = (dataEdge.Source as DataVertex).Element_id; if (connectivityNodeContainer.ContainsKey((dataEdge.Source as DataVertex).Element_id) == false) { connectivityNodeContainer.Add(dataEdge.Source.Element_id, T1_cn); addComponentToGlobalDictionary(T1_cn, T1_cn.GetType()); } ConnectivityNode T2_cn = new ConnectivityNode(); connectivity_node_mrid = Guid.NewGuid().ToString(); T2_cn.ID = connectivity_node_mrid; T2_cn.MRID = connectivity_node_mrid; T2_cn.ConnectivityNodeContainer = circuit; T2_cn.Name = (dataEdge.Target as DataVertex).Element_id; if (connectivityNodeContainer.ContainsKey((dataEdge.Target as DataVertex).Element_id) == false) { connectivityNodeContainer.Add(dataEdge.Target.Element_id, T2_cn); addComponentToGlobalDictionary(T2_cn, T2_cn.GetType()); } Terminal T1 = new Terminal(); //string terminal_mrid = Guid.NewGuid().ToString(); T1.ID = acLineSegment_mrid + ".T1"; T1.MRID = acLineSegment_mrid + ".T1"; T1.Name = dataEdge.Source.Element_id; T1.Phases = PhaseCode.ABC; ACDCTerminal acdc_terminal = new ACDCTerminal() { SequenceNumber = 1 }; T1.SequenceNumber = acdc_terminal.SequenceNumber; T1.ConnectivityNode = T1_cn; Terminal T2 = new Terminal(); T2.ID = acLineSegment_mrid + ".T2"; T2.MRID = acLineSegment_mrid + ".T2"; T2.Name = dataEdge.Target.Element_id; T2.Phases = PhaseCode.ABC; ACDCTerminal acdc_terminal2 = new ACDCTerminal() { SequenceNumber = 2 }; T2.SequenceNumber = acdc_terminal2.SequenceNumber; T2.ConnectivityNode = T2_cn; string perLengthImpedance_mrid = Guid.NewGuid().ToString(); PerLengthImpedance pli = createPerLengthImpedanceObject(dataEdge.Configuration, perLengthImpedance_mrid); AssetInfo wi = createWireInfoObject(dataEdge.Configuration, perLengthImpedance_mrid); PSRType acPSRType = new PSRType() { MRID = "Section", Name = "Section" }; if (!globalComponentDictionary[acPSRType.GetType()].ContainsKey(acPSRType.Name)) { addComponentToGlobalDictionary(acPSRType, acPSRType.GetType()); } ACLineSegment acLineSegment = new ACLineSegment() { ID = acLineSegment_mrid, MRID = acLineSegment_mrid, Name = T1.Name.Split(' ').Last() + "-" + T2.Name.Split(' ').Last(), PSRType = acPSRType, EquipmentContainer = circuit, Length = (float)feetsToMeters(dataEdge.Length), PerLengthImpedance = pli, AssetDatasheet = wi }; addComponentToGlobalDictionary(acLineSegment, acLineSegment.GetType()); TerminalPair terminalPair = new TerminalPair() { terminalA = T1, terminalB = T2 }; terminalPairsContainer.Add(terminalPair); addComponentToGlobalDictionary(T1, T1.GetType()); addComponentToGlobalDictionary(T2, T2.GetType()); } } UsagePoint usagePoint = new UsagePoint(); foreach (DataVertex dv in globalVertices.Values) { if (dv.typeOfVertex == DataVertex.TypeOfVertex.SPOT_LOAD_VERTEX) { SpotLoad sl = (SpotLoad)dv; usagePoint = CreateSpotLoad(sl); addComponentToGlobalDictionary(usagePoint, usagePoint.GetType()); } } return(globalComponentDictionary); }
public void DeleteVertex(DataVertex dv) { //Area.RemoveVertex(globalVertices[dv.Text]); mainWindow.GlobalVertices.Remove(dv.Element_id); Console.WriteLine(mainWindow.GlobalVertices); bool is_empty = true; bool has_edge = false; is_empty = CheckIfZeroEdgesExist(); //if 0 edges exist we can remove it RemoveIfZeroEdgesExist(is_empty, dv.Element_id); //if more then 0 edges exist we look for them has_edge = RemoveIfMoreThenZeroEdgesExist(dv); //if its not empty and its has edges, its third case, we delete it if (!is_empty && !has_edge) { VertexControl vc = GetVertexControlWithDataVertex(dv.Element_id); if (vc == null) { return; } mainWindow.graphView.Area.RemoveVertex((vc.Vertex as DataVertex)); } if (dv.typeOfVertex == DataVertex.TypeOfVertex.REGULATOR_VERTEX) { dvr = null; if (dvrp != null) { DeleteVertex(dvrp); dvrp = null; } } if (dv.typeOfVertex == DataVertex.TypeOfVertex.TRANSFORMER_VERTEX) { dvt = null; if (dvtp != null) { DeleteVertex(dvtp); dvtp = null; } } //now we look for his edges and delete them foreach (string key in mainWindow.GlobalEdges.Keys) { foreach (DataEdge de in mainWindow.GlobalEdges[key]) { if (de.Target.Element_id == dv.Element_id) { mainWindow.GlobalEdges[key].Remove(de); if (mainWindow.graphView.Area.EdgesList.ContainsKey(de)) { mainWindow.graphView.Area.RemoveEdge(de); break; } } } } if (dv.typeOfVertex == DataVertex.TypeOfVertex.REGULATOR_PARTIAL_VERTEX || dv.typeOfVertex == DataVertex.TypeOfVertex.TRANSFORMER_PARTIAL_VERTEX) { foreach (DataVertex temp in mainWindow.graphView.Area.VertexList.Keys) { if (temp.Element_id == dv.Element_id) { mainWindow.graphView.Area.RemoveVertex(temp); break; } } } if (graphState == GraphState.NORMAL) { undoRedoCommander.addUndoCommand(new Command("DeleteVertex", dv)); } }
private void dynamicButton_Click(object sender, RoutedEventArgs e) { if (!allFilled()) { MessageBox.Show("You have to enter all data"); return; } if ((_mn.graphView.DataContext as GraphViewModel).dvtp == null) { if (globalVertices.ContainsKey(lineTo.Text) && second_component != lineTo.Text) { MessageBox.Show("Node with that ID already exists, change Line segment to input."); return; } } DataVertexTransformer dataVertexTransformer = setupDataVertexTransformerProperties(); DataVertexTransformerPartial dvtp; if ((_mn.graphView.DataContext as GraphViewModel).dvtp != null) { dvtp = (_mn.graphView.DataContext as GraphViewModel).dvtp; dvtp.Text = "Second transformer ending: " + lineTo.Text; dynamicButton.Content = "Update"; } else { DataVertexTransformerPartial dataVertexTransformerPartial = new DataVertexTransformerPartial() { Text = "Second transformer ending: " + lineTo.Text, typeOfVertex = DataVertex.TypeOfVertex.TRANSFORMER_PARTIAL_VERTEX, Element_id = dataVertexTransformer.Line_to, Name = dataVertexTransformer.NameB, _kVA = dataVertexTransformer._kVA_B, _kV_High = dataVertexTransformer._kV_HighB, _kV_Low = dataVertexTransformer._kV_LowB, RPercentage = dataVertexTransformer.RPercentageB, XPercentage = dataVertexTransformer.XPercentageB }; (_mn.graphView.DataContext as GraphViewModel).dvtp = dataVertexTransformerPartial; dvtp = dataVertexTransformerPartial; } dvtp.Element_id = lineTo.Text; if (dynamicButton.Content.ToString() == "Update") { (_mn.graphView.DataContext as GraphViewModel).graphState = GraphViewModel.GraphState.UPDATE; (_mn.graphView.DataContext as GraphViewModel).UpdateVertices(dataVertexTransformer, dvtp, last_value); (_mn.graphView.DataContext as GraphViewModel).graphState = GraphViewModel.GraphState.NORMAL; last_value = dataVertexTransformer.Line_to; } else { (_mn.graphView.DataContext as GraphViewModel).CreateComplexVertexWithPartialType(dataVertexTransformer, dvtp, dv); } _mn.CloseAllWindows(); }