From 41b81949a92aad043caa28b0e1144348d06921f8 Mon Sep 17 00:00:00 2001 From: Thales Lima Oliveira Date: Wed, 6 Sep 2017 20:11:37 -0300 Subject: Data report implementation start --- Project/Workspace.cpp | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) (limited to 'Project/Workspace.cpp') diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp index 4ef610d..12a4ace 100644 --- a/Project/Workspace.cpp +++ b/Project/Workspace.cpp @@ -135,6 +135,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) bool foundElement = false; Element* newElement = NULL; bool showNewElementForm = false; + bool clickOnSwitch = false; if(m_mode == MODE_INSERT_TEXT || m_mode == MODE_PASTE || m_mode == MODE_DRAG_PASTE) { m_mode = MODE_EDIT; } else if(m_mode == MODE_INSERT || m_mode == MODE_DRAG_INSERT || m_mode == MODE_DRAG_INSERT_TEXT) { @@ -204,6 +205,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) // Click in a switch. else if(element->SwitchesContains(m_camera->ScreenToWorld(clickPoint))) { element->SetOnline(element->IsOnline() ? false : true); + clickOnSwitch = true; } } @@ -232,8 +234,12 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) UpdateStatusBar(); if(showNewElementForm) { - if(newElement) newElement->ShowForm(this, newElement); + if(newElement) { + newElement->ShowForm(this, newElement); + if(m_continuousCalc) RunStaticStudies(); + } } + if(clickOnSwitch && m_continuousCalc) RunStaticStudies(); event.Skip(); } @@ -241,6 +247,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) void Workspace::OnLeftDoubleClick(wxMouseEvent& event) { bool elementEdited = false; + bool clickOnSwitch = false; bool redraw = false; for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { @@ -293,6 +300,7 @@ void Workspace::OnLeftDoubleClick(wxMouseEvent& event) // Click in a switch. else if(element->SwitchesContains(m_camera->ScreenToWorld(event.GetPosition()))) { element->SetOnline(element->IsOnline() ? false : true); + clickOnSwitch = true; } } @@ -304,7 +312,12 @@ void Workspace::OnLeftDoubleClick(wxMouseEvent& event) redraw = true; } } - if(elementEdited) UpdateTextElements(); + if(elementEdited) { + UpdateTextElements(); + if(m_continuousCalc) RunStaticStudies(); + } + if(clickOnSwitch && m_continuousCalc) RunStaticStudies(); + if(redraw) Redraw(); m_timer->Start(); } @@ -1444,3 +1457,27 @@ void Workspace::OnMiddleDoubleClick(wxMouseEvent& event) Fit(); event.Skip(); } + +bool Workspace::RunStaticStudies() +{ + bool pfStatus, faultStatus, scStatus; + pfStatus = faultStatus = scStatus = false; + + pfStatus = RunPowerFlow(); + + if(m_properties->GetSimulationPropertiesData().faultAfterPowerFlow) { + if(pfStatus) faultStatus = RunFault(); + } else { + faultStatus = true; + } + + if(m_properties->GetSimulationPropertiesData().scPowerAfterPowerFlow) { + if(pfStatus) scStatus = RunSCPower(); + } else { + scStatus = true; + } + + if(pfStatus && faultStatus && scStatus) return true; + + return false; +} -- cgit From 91b9c3f9909955443e74dedb248fc48fa984709b Mon Sep 17 00:00:00 2001 From: Thales Lima Oliveira Date: Sat, 9 Sep 2017 19:11:41 -0300 Subject: Data report fully implemented --- Project/Workspace.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'Project/Workspace.cpp') diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp index 12a4ace..ddbf470 100644 --- a/Project/Workspace.cpp +++ b/Project/Workspace.cpp @@ -180,6 +180,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) // Click in selected element node. if(element->NodeContains(m_camera->ScreenToWorld(clickPoint)) != 0 && element->IsSelected()) { m_mode = MODE_MOVE_NODE; + m_disconnectedElement = true; foundElement = true; } @@ -377,6 +378,7 @@ void Workspace::OnLeftClickUp(wxMouseEvent& event) // The child have a parent that is the element. if(parent == element) { child->UpdateNodes(); + m_disconnectedElement = true; } } } @@ -454,6 +456,12 @@ void Workspace::OnLeftClickUp(wxMouseEvent& event) if(updateVoltages) { ValidateElementsVoltages(); } + + if(m_continuousCalc && m_disconnectedElement) { + m_disconnectedElement = false; + RunStaticStudies(); + } + m_selectionRect = wxRect2DDouble(0, 0, 0, 0); Redraw(); UpdateStatusBar(); @@ -717,9 +725,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event) } // Tests - Ctrl + Shift + L if(event.ControlDown() && event.ShiftDown()) { - ControlEditor* ce = - new ControlEditor(this, IOControl::IN_TERMINAL_VOLTAGE | IOControl::OUT_FIELD_VOLTAGE); - ce->Show(); + UpdateTextElements(); } } break; case 'T': // Insert a transformer. @@ -1043,6 +1049,8 @@ void Workspace::Fit() } if(!GetElementsCorners(leftUpCorner, rightDownCorner, elementList)) return; + wxPoint2DDouble middleCoords = (leftUpCorner + rightDownCorner) / 2.0; + int width = 0.0; int height = 0.0; GetSize(&width, &height); @@ -1056,8 +1064,8 @@ void Workspace::Fit() m_camera->SetScale(scale); - m_camera->StartTranslation(leftUpCorner); - m_camera->SetTranslation(wxPoint2DDouble(0, 0)); + m_camera->StartTranslation(middleCoords); + m_camera->SetTranslation(wxPoint2DDouble(width / 2, height / 2)); Redraw(); } @@ -1130,7 +1138,7 @@ void Workspace::UpdateTextElements() { for(auto it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) { Text* text = *it; - text->UpdateText(100e6); + text->UpdateText(m_properties->GetSimulationPropertiesData().basePower); } } -- cgit