diff options
33 files changed, 653 insertions, 327 deletions
diff --git a/.codelite/.tern-port b/.codelite/.tern-port index 9d85816..8bce046 100644 --- a/.codelite/.tern-port +++ b/.codelite/.tern-port @@ -1 +1 @@ -57332
\ No newline at end of file +54474
\ No newline at end of file diff --git a/.codelite/PSP.session b/.codelite/PSP.session index 74416ec..a8caf5e 100644 --- a/.codelite/PSP.session +++ b/.codelite/PSP.session @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> <Session Name="C:\Users\Thales\Documents\GitHub\PSP\PSP.workspace"> - <int Value="8" Name="m_selectedTab"/> + <int Value="0" Name="m_selectedTab"/> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\PSP.workspace" Name="m_workspaceName"/> <TabInfoArray Name="TabInfoArray"> <TabInfo> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\Workspace.cpp" Name="FileName"/> - <int Value="630" Name="FirstVisibleLine"/> - <int Value="609" Name="CurrentLine"/> + <int Value="958" Name="FirstVisibleLine"/> + <int Value="985" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> @@ -26,15 +26,22 @@ </TabInfo> <TabInfo> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\Element.h" Name="FileName"/> - <int Value="57" Name="FirstVisibleLine"/> - <int Value="77" Name="CurrentLine"/> + <int Value="157" Name="FirstVisibleLine"/> + <int Value="184" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> <TabInfo> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\LineForm.cpp" Name="FileName"/> + <int Value="81" Name="FirstVisibleLine"/> + <int Value="82" Name="CurrentLine"/> + <wxArrayString Name="Bookmarks"/> + <IntVector Name="CollapsedFolds"/> + </TabInfo> + <TabInfo> + <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\LineForm.h" Name="FileName"/> <int Value="0" Name="FirstVisibleLine"/> - <int Value="2" Name="CurrentLine"/> + <int Value="0" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> @@ -47,43 +54,43 @@ </TabInfo> <TabInfo> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\TransformerForm.cpp" Name="FileName"/> - <int Value="0" Name="FirstVisibleLine"/> - <int Value="15" Name="CurrentLine"/> + <int Value="70" Name="FirstVisibleLine"/> + <int Value="86" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> <TabInfo> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\TransformerForm.h" Name="FileName"/> <int Value="0" Name="FirstVisibleLine"/> - <int Value="13" Name="CurrentLine"/> + <int Value="21" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> <TabInfo> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\Transformer.h" Name="FileName"/> - <int Value="0" Name="FirstVisibleLine"/> - <int Value="21" Name="CurrentLine"/> + <int Value="48" Name="FirstVisibleLine"/> + <int Value="67" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> <TabInfo> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\Transformer.cpp" Name="FileName"/> - <int Value="190" Name="FirstVisibleLine"/> - <int Value="234" Name="CurrentLine"/> + <int Value="219" Name="FirstVisibleLine"/> + <int Value="240" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> <TabInfo> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\Line.h" Name="FileName"/> - <int Value="0" Name="FirstVisibleLine"/> - <int Value="8" Name="CurrentLine"/> + <int Value="33" Name="FirstVisibleLine"/> + <int Value="56" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> <TabInfo> <wxString Value="C:\Users\Thales\Documents\GitHub\PSP\Project\Line.cpp" Name="FileName"/> - <int Value="310" Name="FirstVisibleLine"/> - <int Value="330" Name="CurrentLine"/> + <int Value="304" Name="FirstVisibleLine"/> + <int Value="329" Name="CurrentLine"/> <wxArrayString Name="Bookmarks"/> <IntVector Name="CollapsedFolds"/> </TabInfo> diff --git a/.codelite/PSP.tags b/.codelite/PSP.tags Binary files differindex 5838256..d1aaa4b 100644 --- a/.codelite/PSP.tags +++ b/.codelite/PSP.tags diff --git a/.codelite/compilation.db b/.codelite/compilation.db Binary files differindex 60150c7..6ec24d1 100644 --- a/.codelite/compilation.db +++ b/.codelite/compilation.db diff --git a/.codelite/compile_commands.json b/.codelite/compile_commands.json index 23dbbdc..d5d94bb 100644 --- a/.codelite/compile_commands.json +++ b/.codelite/compile_commands.json @@ -1,7 +1,19 @@ [{ "directory": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project", - "command": "C:/TDM-GCC-64/bin/g++.exe -O2 -Wall -mthreads -DHAVE_W32API_H -D__WXMSW__ -DNDEBUG -D_UNICODE -IC:/wxWidgets-3.1.0/lib/gcc_dll/mswu -IC:/wxWidgets-3.1.0/include -DWXUSINGDLL -Wno-ctor-dtor-privacy -pipe -fmessage-length=0 -fno-keep-inline-dllexport -std=c++11 -DNDEBUG -DUNICODE -I. -I. -MG -MP -MT./Release/TransformerForm.cpp.o -MF./Release/TransformerForm.cpp.o.d -MM TransformerForm.cpp", - "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\TransformerForm.cpp" + "command": "C:/TDM-GCC-64/bin/g++.exe -O2 -Wall -mthreads -DHAVE_W32API_H -D__WXMSW__ -DNDEBUG -D_UNICODE -IC:/wxWidgets-3.1.0/lib/gcc_dll/mswu -IC:/wxWidgets-3.1.0/include -DWXUSINGDLL -Wno-ctor-dtor-privacy -pipe -fmessage-length=0 -fno-keep-inline-dllexport -std=c++11 -DNDEBUG -DUNICODE -I. -I. -MG -MP -MT./Release/Transformer.cpp.o -MF./Release/Transformer.cpp.o.d -MM Transformer.cpp", + "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Transformer.cpp" + }, { + "directory": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project", + "command": "C:/TDM-GCC-64/bin/g++.exe -c C:/Users/Thales/Documents/GitHub/PSP/Project/MainFrame.cpp -O2 -Wall -mthreads -DHAVE_W32API_H -D__WXMSW__ -DNDEBUG -D_UNICODE -IC:/wxWidgets-3.1.0/lib/gcc_dll/mswu -IC:/wxWidgets-3.1.0/include -DWXUSINGDLL -Wno-ctor-dtor-privacy -pipe -fmessage-length=0 -fno-keep-inline-dllexport -std=c++11 -DNDEBUG -DUNICODE -o ./Release/MainFrame.cpp.o -I. -I.", + "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\MainFrame.cpp" + }, { + "directory": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project", + "command": "C:/TDM-GCC-64/bin/g++.exe -c C:/Users/Thales/Documents/GitHub/PSP/Project/Workspace.cpp -O2 -Wall -mthreads -DHAVE_W32API_H -D__WXMSW__ -DNDEBUG -D_UNICODE -IC:/wxWidgets-3.1.0/lib/gcc_dll/mswu -IC:/wxWidgets-3.1.0/include -DWXUSINGDLL -Wno-ctor-dtor-privacy -pipe -fmessage-length=0 -fno-keep-inline-dllexport -std=c++11 -DNDEBUG -DUNICODE -o ./Release/Workspace.cpp.o -I. -I.", + "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Workspace.cpp" + }, { + "directory": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project", + "command": "C:/TDM-GCC-64/bin/g++.exe -c C:/Users/Thales/Documents/GitHub/PSP/Project/Transformer.cpp -O2 -Wall -mthreads -DHAVE_W32API_H -D__WXMSW__ -DNDEBUG -D_UNICODE -IC:/wxWidgets-3.1.0/lib/gcc_dll/mswu -IC:/wxWidgets-3.1.0/include -DWXUSINGDLL -Wno-ctor-dtor-privacy -pipe -fmessage-length=0 -fno-keep-inline-dllexport -std=c++11 -DNDEBUG -DUNICODE -o ./Release/Transformer.cpp.o -I. -I.", + "file": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project\\Transformer.cpp" }, { "directory": "C:\\Users\\Thales\\Documents\\GitHub\\PSP\\Project", "command": "C:/TDM-GCC-64/bin/g++.exe -c C:/Users/Thales/Documents/GitHub/PSP/Project/TransformerForm.cpp -O2 -Wall -mthreads -DHAVE_W32API_H -D__WXMSW__ -DNDEBUG -D_UNICODE -IC:/wxWidgets-3.1.0/lib/gcc_dll/mswu -IC:/wxWidgets-3.1.0/include -DWXUSINGDLL -Wno-ctor-dtor-privacy -pipe -fmessage-length=0 -fno-keep-inline-dllexport -std=c++11 -DNDEBUG -DUNICODE -o ./Release/TransformerForm.cpp.o -I. -I.", diff --git a/.codelite/refactoring.db b/.codelite/refactoring.db Binary files differindex 9bf17bb..7a37da8 100644 --- a/.codelite/refactoring.db +++ b/.codelite/refactoring.db diff --git a/Project/Element.h b/Project/Element.h index 0806947..17a8902 100644 --- a/Project/Element.h +++ b/Project/Element.h @@ -81,7 +81,7 @@ struct SwitchingData { std::vector<SwitchingType> swType; std::vector<double> swTime; -}; +}; class Element { @@ -182,7 +182,7 @@ class Element bool IntFromString(wxWindow* parent, wxString strValue, int& value, wxString errorMsg); //Electrical only methods - virtual void SetNominalVoltage(double nominalVoltage, ElectricalUnit nominalVoltageUnit) {} + virtual void SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit) {} virtual void SetSwitchingData(SwitchingData data) { m_swData = data; } virtual SwitchingData GetSwitchingData() { return m_swData; } diff --git a/Project/Line.cpp b/Project/Line.cpp index 92fce64..20edb2e 100644 --- a/Project/Line.cpp +++ b/Project/Line.cpp @@ -6,8 +6,8 @@ Line::~Line() {} bool Line::Contains(wxPoint2DDouble position) const { if(PointToLineDistance(position) < 5.0) { - return true; - } + return true; + } return false; } @@ -15,28 +15,28 @@ void Line::Draw(wxPoint2DDouble translation, double scale) const { std::vector<wxPoint2DDouble> pointList = m_pointList; if(!m_inserted && pointList.size() > 0) { - wxPoint2DDouble secondPoint = m_position; - if(pointList.size() > 2) { - secondPoint = pointList[2]; - } - pointList[1] = GetSwitchPoint(m_parentList[0], pointList[0], secondPoint); - pointList.push_back(m_position); - } + wxPoint2DDouble secondPoint = m_position; + if(pointList.size() > 2) { + secondPoint = pointList[2]; + } + pointList[1] = GetSwitchPoint(m_parentList[0], pointList[0], secondPoint); + pointList.push_back(m_position); + } // Line selected (Layer 1). if(m_selected) { - glLineWidth(1.5 + m_borderSize * 2.0); - glColor4d(0.0, 0.5, 1.0, 0.5); - DrawLine(pointList); - - // Draw nodes selection. - if(pointList.size() > 0) { - DrawCircle(pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON); - if(m_inserted) { - DrawCircle(pointList[pointList.size() - 1], 5.0 + m_borderSize / scale, 10, GL_POLYGON); - } - } - } + glLineWidth(1.5 + m_borderSize * 2.0); + glColor4d(0.0, 0.5, 1.0, 0.5); + DrawLine(pointList); + + // Draw nodes selection. + if(pointList.size() > 0) { + DrawCircle(pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON); + if(m_inserted) { + DrawCircle(pointList[pointList.size() - 1], 5.0 + m_borderSize / scale, 10, GL_POLYGON); + } + } + } // Draw line (Layer 2) glLineWidth(1.5); @@ -47,116 +47,113 @@ void Line::Draw(wxPoint2DDouble translation, double scale) const // Draw nodes. if(pointList.size() > 0) { - glColor4d(0.2, 0.2, 0.2, 1.0); - DrawCircle(pointList[0], 5.0, 10, GL_POLYGON); - if(m_inserted) { - DrawCircle(pointList[pointList.size() - 1], 5.0, 10, GL_POLYGON); - } - } + glColor4d(0.2, 0.2, 0.2, 1.0); + DrawCircle(pointList[0], 5.0, 10, GL_POLYGON); + if(m_inserted) { + DrawCircle(pointList[pointList.size() - 1], 5.0, 10, GL_POLYGON); + } + } // Draw pickboxes (Layer 3). if(m_showPickbox) { - glPushMatrix(); - glLoadIdentity(); + glPushMatrix(); + glLoadIdentity(); - for(int i = 2; i < (int)m_pointList.size() - 2; i++) { - DrawPickbox(WorldToScreen(m_pointList[i], translation, scale)); - } + for(int i = 2; i < (int)m_pointList.size() - 2; i++) { + DrawPickbox(WorldToScreen(m_pointList[i], translation, scale)); + } - glPopMatrix(); - } + glPopMatrix(); + } } void Line::Move(wxPoint2DDouble position) { if(!m_parentList[0]) { - m_pointList[0] = m_movePts[0] + position - m_moveStartPt; - UpdateSwitchesPosition(); - } + m_pointList[0] = m_movePts[0] + position - m_moveStartPt; + UpdateSwitchesPosition(); + } if(!m_parentList[1]) { - m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt; - UpdateSwitchesPosition(); - } + m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt; + UpdateSwitchesPosition(); + } if(!m_parentList[0] && !m_parentList[1]) { - for(int i = 2; i < (int)m_pointList.size() - 2; i++) { - m_pointList[i] = m_movePts[i] + position - m_moveStartPt; - } - } + for(int i = 2; i < (int)m_pointList.size() - 2; i++) { + m_pointList[i] = m_movePts[i] + position - m_moveStartPt; + } + } } bool Line::AddParent(Element* parent, wxPoint2DDouble position) { if(parent) { - // First bus. - if(m_parentList.size() == 0) { - m_position = position; - m_parentList.push_back(parent); - wxPoint2DDouble parentPt = parent->RotateAtPosition( - position, -parent->GetAngle()); // Rotate click to horizontal position. - parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus. - parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back. - m_pointList.push_back(parentPt); // First point - m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position)); - - wxRect2DDouble genRect(0, 0, 0, 0); - m_switchRect.push_back(genRect); - UpdateSwitches(); - - Bus* parentBus = (Bus*)parent; - m_electricaData.nominalVoltage = parentBus->GetEletricalData().nominalVoltage; - m_electricaData.nominalVoltageUnit = parentBus->GetEletricalData().nominalVoltageUnit; - - return false; - } - // Second bus. - else if(parent != m_parentList[0]) - { - Bus* parentBus = (Bus*)parent; - if(m_electricaData.nominalVoltage != parentBus->GetEletricalData().nominalVoltage || - m_electricaData.nominalVoltageUnit != parentBus->GetEletricalData().nominalVoltageUnit) - { - wxMessageDialog msgDialog(NULL, - _("Unable to connect two buses with different nominal voltages.\n" - "Use a transformer or edit the bus properties."), - _("Error"), wxOK | wxCENTRE | wxICON_ERROR); - msgDialog.ShowModal(); - return false; - } - - m_parentList.push_back(parent); - wxPoint2DDouble parentPt = parent->RotateAtPosition( - position, -parent->GetAngle()); // Rotate click to horizontal position. - parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus. - parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back. - - // Set first switch point. - wxPoint2DDouble secondPoint = parentPt; - if(m_pointList.size() > 2) { - secondPoint = m_pointList[2]; - } - m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], secondPoint); - - // Set the second switch point. - m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_pointList[m_pointList.size() - 1])); - - m_pointList.push_back(parentPt); // Last point. - - wxRect2DDouble genRect(0, 0, 0, 0); - m_switchRect.push_back(genRect); - UpdateSwitches(); - - m_inserted = true; - return true; - } - } + // First bus. + if(m_parentList.size() == 0) { + m_position = position; + m_parentList.push_back(parent); + wxPoint2DDouble parentPt = + parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position. + parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus. + parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back. + m_pointList.push_back(parentPt); // First point + m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position)); + + wxRect2DDouble genRect(0, 0, 0, 0); + m_switchRect.push_back(genRect); + UpdateSwitches(); + + Bus* parentBus = (Bus*)parent; + m_electricaData.nominalVoltage = parentBus->GetEletricalData().nominalVoltage; + m_electricaData.nominalVoltageUnit = parentBus->GetEletricalData().nominalVoltageUnit; + + return false; + } + // Second bus. + else if(parent != m_parentList[0]) { + Bus* parentBus = (Bus*)parent; + if(m_electricaData.nominalVoltage != parentBus->GetEletricalData().nominalVoltage || + m_electricaData.nominalVoltageUnit != parentBus->GetEletricalData().nominalVoltageUnit) { + wxMessageDialog msgDialog(NULL, _("Unable to connect two buses with different nominal voltages.\n" + "Use a transformer or edit the bus properties."), + _("Error"), wxOK | wxCENTRE | wxICON_ERROR); + msgDialog.ShowModal(); + return false; + } + + m_parentList.push_back(parent); + wxPoint2DDouble parentPt = + parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position. + parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus. + parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back. + + // Set first switch point. + wxPoint2DDouble secondPoint = parentPt; + if(m_pointList.size() > 2) { + secondPoint = m_pointList[2]; + } + m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], secondPoint); + + // Set the second switch point. + m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_pointList[m_pointList.size() - 1])); + + m_pointList.push_back(parentPt); // Last point. + + wxRect2DDouble genRect(0, 0, 0, 0); + m_switchRect.push_back(genRect); + UpdateSwitches(); + + m_inserted = true; + return true; + } + } return false; } bool Line::Intersects(wxRect2DDouble rect) const { for(auto it = m_pointList.begin(); it != m_pointList.end(); ++it) { - if(rect.Contains(*it)) return true; - } + if(rect.Contains(*it)) return true; + } return false; } void Line::MovePickbox(wxPoint2DDouble position) @@ -164,29 +161,29 @@ void Line::MovePickbox(wxPoint2DDouble position) if(m_activePickboxID == ID_PB_NONE) return; for(int i = 2; i < (int)m_pointList.size() - 2; i++) { - if(m_activePickboxID == i) { - m_pointList[i] = m_movePts[i] + position - m_moveStartPt; - UpdateSwitchesPosition(); - } - } + if(m_activePickboxID == i) { + m_pointList[i] = m_movePts[i] + position - m_moveStartPt; + UpdateSwitchesPosition(); + } + } } bool Line::PickboxContains(wxPoint2DDouble position) { for(int i = 2; i < (int)m_pointList.size() - 2; i++) { - wxRect2DDouble rect(m_pointList[i].m_x - 5.0, m_pointList[i].m_y - 5.0, 10.0, 10.0); - if(rect.Contains(position)) { - m_activePickboxID = i; - return true; - } - } + wxRect2DDouble rect(m_pointList[i].m_x - 5.0, m_pointList[i].m_y - 5.0, 10.0, 10.0); + if(rect.Contains(position)) { + m_activePickboxID = i; + return true; + } + } return false; } void Line::AddPoint(wxPoint2DDouble point) { if(m_parentList.size() != 0) { - m_pointList.push_back(point); - } + m_pointList.push_back(point); + } } void Line::StartMove(wxPoint2DDouble position) @@ -198,37 +195,32 @@ void Line::StartMove(wxPoint2DDouble position) void Line::MoveNode(Element* parent, wxPoint2DDouble position) { if(parent) { - // First bus. - if(parent == m_parentList[0]) { - m_pointList[0] = m_movePts[0] + position - m_moveStartPt; - } - // Second bus. - else if(parent == m_parentList[1]) - { - m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt; - } - - // If the line is selected, move all the points, except the switches and buses points. - if(m_selected) { - for(int i = 2; i < (int)m_pointList.size() - 2; i++) { - m_pointList[i] = m_movePts[i] + position - m_moveStartPt; - } - } - } - else - { - if(m_activeNodeID == 1) { - m_pointList[0] = m_movePts[0] + position - m_moveStartPt; - m_parentList[0] = NULL; - m_online = false; - } - else if(m_activeNodeID == 2) - { - m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt; - m_parentList[1] = NULL; - m_online = false; - } - } + // First bus. + if(parent == m_parentList[0]) { + m_pointList[0] = m_movePts[0] + position - m_moveStartPt; + } + // Second bus. + else if(parent == m_parentList[1]) { + m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt; + } + + // If the line is selected, move all the points, except the switches and buses points. + if(m_selected) { + for(int i = 2; i < (int)m_pointList.size() - 2; i++) { + m_pointList[i] = m_movePts[i] + position - m_moveStartPt; + } + } + } else { + if(m_activeNodeID == 1) { + m_pointList[0] = m_movePts[0] + position - m_moveStartPt; + m_parentList[0] = NULL; + m_online = false; + } else if(m_activeNodeID == 2) { + m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt; + m_parentList[1] = NULL; + m_online = false; + } + } // Recalculate switches positions UpdateSwitchesPosition(); @@ -241,35 +233,30 @@ double Line::PointToLineDistance(wxPoint2DDouble point, int* segmentNumber) cons wxPoint2DDouble p0 = point; for(int i = 1; i < (int)m_pointList.size() - 2; i++) { - double d = 0.0; - - wxPoint2DDouble p1 = m_pointList[i]; - wxPoint2DDouble p2 = m_pointList[i + 1]; - - wxPoint2DDouble v = p2 - p1; - wxPoint2DDouble w = p0 - p1; - - double c1 = w.m_x * v.m_x + w.m_y * v.m_y; - double c2 = v.m_x * v.m_x + v.m_y * v.m_y; - - if(c1 <= 0.0) { - d = std::sqrt(std::pow(p0.m_y - p1.m_y, 2) + std::pow(p0.m_x - p1.m_x, 2)); - } - else if(c2 <= c1) - { - d = std::sqrt(std::pow(p0.m_y - p2.m_y, 2) + std::pow(p0.m_x - p2.m_x, 2)); - } - else - { - d = std::abs((p2.m_y - p1.m_y) * p0.m_x - (p2.m_x - p1.m_x) * p0.m_y + p2.m_x * p1.m_y - - p2.m_y * p1.m_x) / - std::sqrt(std::pow(p2.m_y - p1.m_y, 2) + std::pow(p2.m_x - p1.m_x, 2)); - } - if(d < distance) { - distance = d; - if(segmentNumber) *segmentNumber = i; - } - } + double d = 0.0; + + wxPoint2DDouble p1 = m_pointList[i]; + wxPoint2DDouble p2 = m_pointList[i + 1]; + + wxPoint2DDouble v = p2 - p1; + wxPoint2DDouble w = p0 - p1; + + double c1 = w.m_x * v.m_x + w.m_y * v.m_y; + double c2 = v.m_x * v.m_x + v.m_y * v.m_y; + + if(c1 <= 0.0) { + d = std::sqrt(std::pow(p0.m_y - p1.m_y, 2) + std::pow(p0.m_x - p1.m_x, 2)); + } else if(c2 <= c1) { + d = std::sqrt(std::pow(p0.m_y - p2.m_y, 2) + std::pow(p0.m_x - p2.m_x, 2)); + } else { + d = std::abs((p2.m_y - p1.m_y) * p0.m_x - (p2.m_x - p1.m_x) * p0.m_y + p2.m_x * p1.m_y - p2.m_y * p1.m_x) / + std::sqrt(std::pow(p2.m_y - p1.m_y, 2) + std::pow(p2.m_x - p1.m_x, 2)); + } + if(d < distance) { + distance = d; + if(segmentNumber) *segmentNumber = i; + } + } return distance; } @@ -278,12 +265,10 @@ bool Line::GetContextMenu(wxMenu& menu) { menu.Append(ID_EDIT_LINE, _("Edit line")); if(m_activePickboxID == ID_PB_NONE) { - menu.Append(ID_LINE_ADD_NODE, _("Insert node")); - } - else - { - menu.Append(ID_LINE_REMOVE_NODE, _("Remove node")); - } + menu.Append(ID_LINE_ADD_NODE, _("Insert node")); + } else { + menu.Append(ID_LINE_REMOVE_NODE, _("Remove node")); + } menu.Append(ID_DELETE, _("Delete")); return true; } @@ -291,13 +276,13 @@ bool Line::GetContextMenu(wxMenu& menu) void Line::RemoveNode(wxPoint2DDouble point) { if(PickboxContains(point)) { - for(int i = 2; i < (int)m_pointList.size() - 2; i++) { - if(m_activePickboxID == i) { - m_pointList.erase(m_pointList.begin() + i); - break; - } - } - } + for(int i = 2; i < (int)m_pointList.size() - 2; i++) { + if(m_activePickboxID == i) { + m_pointList.erase(m_pointList.begin() + i); + break; + } + } + } UpdateSwitchesPosition(); } @@ -306,41 +291,43 @@ void Line::AddNode(wxPoint2DDouble point) int segmentNumber = 0; PointToLineDistance(point, &segmentNumber); if(segmentNumber > 0 && segmentNumber < (int)m_pointList.size() - 2) { - m_pointList.insert(m_pointList.begin() + segmentNumber + 1, point); - } + m_pointList.insert(m_pointList.begin() + segmentNumber + 1, point); + } UpdateSwitchesPosition(); } void Line::CalculateBoundaries(wxPoint2DDouble& leftUp, wxPoint2DDouble& rightBottom) const { if(m_pointList.size() > 0) { - // Check points list boundaries. - leftUp = m_pointList[0]; - rightBottom = m_pointList[0]; - for(int i = 1; i < (int)m_pointList.size(); i++) { - if(m_pointList[i].m_x < leftUp.m_x) leftUp.m_x = m_pointList[i].m_x; - if(m_pointList[i].m_y < leftUp.m_y) leftUp.m_y = m_pointList[i].m_y; - if(m_pointList[i].m_x > rightBottom.m_x) rightBottom.m_x = m_pointList[i].m_x; - if(m_pointList[i].m_y > rightBottom.m_y) rightBottom.m_y = m_pointList[i].m_y; - } - } + // Check points list boundaries. + leftUp = m_pointList[0]; + rightBottom = m_pointList[0]; + for(int i = 1; i < (int)m_pointList.size(); i++) { + if(m_pointList[i].m_x < leftUp.m_x) leftUp.m_x = m_pointList[i].m_x; + if(m_pointList[i].m_y < leftUp.m_y) leftUp.m_y = m_pointList[i].m_y; + if(m_pointList[i].m_x > rightBottom.m_x) rightBottom.m_x = m_pointList[i].m_x; + if(m_pointList[i].m_y > rightBottom.m_y) rightBottom.m_y = m_pointList[i].m_y; + } + } } bool Line::ShowForm(wxWindow* parent, Element* element) { LineForm* lineForm = new LineForm(parent, this); if(lineForm->ShowModal() == wxID_OK) { - lineForm->Destroy(); - return true; - } + lineForm->Destroy(); + return true; + } lineForm->Destroy(); return false; } -void Line::SetNominalVoltage(double nominalVoltage, ElectricalUnit nominalVoltageUnit) +void Line::SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit) { - m_electricaData.nominalVoltage = nominalVoltage; - m_electricaData.nominalVoltageUnit = nominalVoltageUnit; + if(nominalVoltage.size() > 0) { + m_electricaData.nominalVoltage = nominalVoltage[0]; + m_electricaData.nominalVoltageUnit = nominalVoltageUnit[0]; + } } bool Line::SetNodeParent(Element* parent) @@ -349,80 +336,74 @@ bool Line::SetNodeParent(Element* parent) if(m_activeNodeID == 2 && parent == m_parentList[1]) return false; if(parent && m_activeNodeID != 0) { - wxRect2DDouble nodeRect(0, 0, 0, 0); - if(m_activeNodeID == 1) { - nodeRect = - wxRect2DDouble(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize, - 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize); - } - if(m_activeNodeID == 2) { - nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize, - m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize, - 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize); - } - - if(parent->Intersects(nodeRect)) { - // If the line has no parents set the new nominal voltage, otherwise check if it's not connecting - // two different voltages buses - Bus* parentBus = (Bus*)parent; - if(!m_parentList[0] && !m_parentList[1]) { - m_electricaData.nominalVoltage = parentBus->GetEletricalData().nominalVoltage; - m_electricaData.nominalVoltageUnit = parentBus->GetEletricalData().nominalVoltageUnit; - } - else if(m_electricaData.nominalVoltage != parentBus->GetEletricalData().nominalVoltage || - m_electricaData.nominalVoltageUnit != parentBus->GetEletricalData().nominalVoltageUnit) - { - wxMessageDialog msgDialog(NULL, - _("Unable to connect two buses with different nominal voltages.\n" - "Use a transformer or edit the bus properties."), - _("Error"), wxOK | wxCENTRE | wxICON_ERROR); - msgDialog.ShowModal(); - m_activeNodeID = 0; - return false; - } - - if(m_activeNodeID == 1) { - // Check if the user is trying to connect the same bus. - if(m_parentList[1] == parent) { - m_activeNodeID = 0; - return false; - } - - m_parentList[0] = parent; - - // Centralize the node on bus. - wxPoint2DDouble parentPt = parent->RotateAtPosition( - m_pointList[0], -parent->GetAngle()); // Rotate click to horizontal position. - parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus. - parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); - m_pointList[0] = parentPt; - - UpdateSwitchesPosition(); - return true; - } - if(m_activeNodeID == 2) { - if(m_parentList[0] == parent) { - m_activeNodeID = 0; - return false; - } - - m_parentList[1] = parent; - - wxPoint2DDouble parentPt = - parent->RotateAtPosition(m_pointList[m_pointList.size() - 1], -parent->GetAngle()); - parentPt.m_y = parent->GetPosition().m_y; - parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); - m_pointList[m_pointList.size() - 1] = parentPt; - - UpdateSwitchesPosition(); - return true; - } - } - else - { - if(m_activeNodeID == 1) m_parentList[0] = NULL; - if(m_activeNodeID == 2) m_parentList[1] = NULL; - } - } + wxRect2DDouble nodeRect(0, 0, 0, 0); + if(m_activeNodeID == 1) { + nodeRect = wxRect2DDouble(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize, + 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize); + } + if(m_activeNodeID == 2) { + nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize, + m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize, + 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize); + } + + if(parent->Intersects(nodeRect)) { + // If the line has no parents set the new nominal voltage, otherwise check if it's not connecting + // two different voltages buses + Bus* parentBus = (Bus*)parent; + if(!m_parentList[0] && !m_parentList[1]) { + m_electricaData.nominalVoltage = parentBus->GetEletricalData().nominalVoltage; + m_electricaData.nominalVoltageUnit = parentBus->GetEletricalData().nominalVoltageUnit; + } else if(m_electricaData.nominalVoltage != parentBus->GetEletricalData().nominalVoltage || + m_electricaData.nominalVoltageUnit != parentBus->GetEletricalData().nominalVoltageUnit) { + wxMessageDialog msgDialog(NULL, _("Unable to connect two buses with different nominal voltages.\n" + "Use a transformer or edit the bus properties."), + _("Error"), wxOK | wxCENTRE | wxICON_ERROR); + msgDialog.ShowModal(); + m_activeNodeID = 0; + return false; + } + + if(m_activeNodeID == 1) { + // Check if the user is trying to connect the same bus. + if(m_parentList[1] == parent) { + m_activeNodeID = 0; + return false; + } + + m_parentList[0] = parent; + + // Centralize the node on bus. + wxPoint2DDouble parentPt = parent->RotateAtPosition( + m_pointList[0], -parent->GetAngle()); // Rotate click to horizontal position. + parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus. + parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); + m_pointList[0] = parentPt; + + UpdateSwitchesPosition(); + return true; + } + if(m_activeNodeID == 2) { + if(m_parentList[0] == parent) { + m_activeNodeID = 0; + return false; + } + + m_parentList[1] = parent; + + wxPoint2DDouble parentPt = + parent->RotateAtPosition(m_pointList[m_pointList.size() - 1], -parent->GetAngle()); + parentPt.m_y = parent->GetPosition().m_y; + parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); + m_pointList[m_pointList.size() - 1] = parentPt; + + UpdateSwitchesPosition(); + return true; + } + } else { + if(m_activeNodeID == 1) m_parentList[0] = NULL; + if(m_activeNodeID == 2) m_parentList[1] = NULL; + } + } return false; } diff --git a/Project/Line.h b/Project/Line.h index 72f947d..fbd0184 100644 --- a/Project/Line.h +++ b/Project/Line.h @@ -54,7 +54,7 @@ class Line : public Branch virtual bool ShowForm(wxWindow* parent, Element* element); virtual LineElectricalData GetElectricalData() const { return m_electricaData; } virtual void SetElectricalData(LineElectricalData electricalData) { m_electricaData = electricalData; } - virtual void SetNominalVoltage(double nominalVoltage, ElectricalUnit nominalVoltageUnit); + virtual void SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit); protected: double PointToLineDistance(wxPoint2DDouble point, int* segmentNumber = NULL) const; LineElectricalData m_electricaData; diff --git a/Project/Project.mk b/Project/Project.mk index aa03bea..6d2a336 100644 --- a/Project/Project.mk +++ b/Project/Project.mk @@ -13,7 +13,7 @@ CurrentFileName := CurrentFilePath := CurrentFileFullPath := User :=Thales -Date :=14/10/2016 +Date :=17/10/2016 CodeLitePath :="C:/Program Files/CodeLite" LinkerName :=C:/TDM-GCC-64/bin/g++.exe SharedObjectLinkerName :=C:/TDM-GCC-64/bin/g++.exe -shared -fPIC diff --git a/Project/Release/Branch.cpp.o b/Project/Release/Branch.cpp.o Binary files differindex 0684027..a790b76 100644 --- a/Project/Release/Branch.cpp.o +++ b/Project/Release/Branch.cpp.o diff --git a/Project/Release/Bus.cpp.o b/Project/Release/Bus.cpp.o Binary files differindex a9aa9c2..3313bf2 100644 --- a/Project/Release/Bus.cpp.o +++ b/Project/Release/Bus.cpp.o diff --git a/Project/Release/Capacitor.cpp.o b/Project/Release/Capacitor.cpp.o Binary files differindex 5b8b2af..9030f42 100644 --- a/Project/Release/Capacitor.cpp.o +++ b/Project/Release/Capacitor.cpp.o diff --git a/Project/Release/Element.cpp.o b/Project/Release/Element.cpp.o Binary files differindex 3b73bc0..9af96aa 100644 --- a/Project/Release/Element.cpp.o +++ b/Project/Release/Element.cpp.o diff --git a/Project/Release/IndMotor.cpp.o b/Project/Release/IndMotor.cpp.o Binary files differindex 835796c..36b7efe 100644 --- a/Project/Release/IndMotor.cpp.o +++ b/Project/Release/IndMotor.cpp.o diff --git a/Project/Release/Inductor.cpp.o b/Project/Release/Inductor.cpp.o Binary files differindex 0ebf9f3..f3750be 100644 --- a/Project/Release/Inductor.cpp.o +++ b/Project/Release/Inductor.cpp.o diff --git a/Project/Release/Line.cpp.o b/Project/Release/Line.cpp.o Binary files differindex 631ecd1..9cec445 100644 --- a/Project/Release/Line.cpp.o +++ b/Project/Release/Line.cpp.o diff --git a/Project/Release/Line.cpp.o.d b/Project/Release/Line.cpp.o.d index 62ce48e..a121b34 100644 --- a/Project/Release/Line.cpp.o.d +++ b/Project/Release/Line.cpp.o.d @@ -159,6 +159,47 @@ Release/Line.cpp.o: Line.cpp Line.h LineForm.h ElementForm.h \ C:/wxWidgets-3.1.0/include/wx/msw/statbox.h \ C:/wxWidgets-3.1.0/include/wx/statline.h \ C:/wxWidgets-3.1.0/include/wx/msw/statline.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/manager.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/propgrid.h \ + C:/wxWidgets-3.1.0/include/wx/dcclient.h \ + C:/wxWidgets-3.1.0/include/wx/dc.h C:/wxWidgets-3.1.0/include/wx/brush.h \ + C:/wxWidgets-3.1.0/include/wx/msw/brush.h \ + C:/wxWidgets-3.1.0/include/wx/pen.h \ + C:/wxWidgets-3.1.0/include/wx/msw/pen.h \ + C:/wxWidgets-3.1.0/include/wx/affinematrix2d.h \ + C:/wxWidgets-3.1.0/include/wx/affinematrix2dbase.h \ + C:/wxWidgets-3.1.0/include/wx/geometry.h \ + C:/wxWidgets-3.1.0/include/wx/scrolwin.h \ + C:/wxWidgets-3.1.0/include/wx/generic/scrolwin.h \ + C:/wxWidgets-3.1.0/include/wx/recguard.h \ + C:/wxWidgets-3.1.0/include/wx/tooltip.h \ + C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h \ + C:/wxWidgets-3.1.0/include/wx/time.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/property.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/propgriddefs.h \ + C:/wxWidgets-3.1.0/include/wx/hashset.h \ + C:/wxWidgets-3.1.0/include/wx/tokenzr.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/propgridiface.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/propgridpagestate.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/props.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/editors.h \ + C:/wxWidgets-3.1.0/include/wx/listbox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/listbox.h \ + C:/wxWidgets-3.1.0/include/wx/valtext.h \ + C:/wxWidgets-3.1.0/include/wx/toolbar.h \ + C:/wxWidgets-3.1.0/include/wx/tbarbase.h \ + C:/wxWidgets-3.1.0/include/wx/msw/toolbar.h \ + C:/wxWidgets-3.1.0/include/wx/headerctrl.h \ + C:/wxWidgets-3.1.0/include/wx/headercol.h \ + C:/wxWidgets-3.1.0/include/wx/msw/headerctrl.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/advprops.h \ + C:/wxWidgets-3.1.0/include/wx/spinbutt.h \ + C:/wxWidgets-3.1.0/include/wx/range.h \ + C:/wxWidgets-3.1.0/include/wx/msw/spinbutt.h \ + C:/wxWidgets-3.1.0/include/wx/listctrl.h \ + C:/wxWidgets-3.1.0/include/wx/listbase.h \ + C:/wxWidgets-3.1.0/include/wx/systhemectrl.h \ + C:/wxWidgets-3.1.0/include/wx/msw/listctrl.h \ C:/wxWidgets-3.1.0/include/wx/persist.h \ C:/wxWidgets-3.1.0/include/wx/confbase.h \ C:/wxWidgets-3.1.0/include/wx/base64.h \ @@ -172,13 +213,11 @@ Release/Line.cpp.o: Line.cpp Line.h LineForm.h ElementForm.h \ C:/wxWidgets-3.1.0/include/wx/treectrl.h \ C:/wxWidgets-3.1.0/include/wx/treebase.h \ C:/wxWidgets-3.1.0/include/wx/itemid.h \ - C:/wxWidgets-3.1.0/include/wx/systhemectrl.h \ C:/wxWidgets-3.1.0/include/wx/msw/treectrl.h Branch.h Element.h \ C:/wxWidgets-3.1.0/include/wx/msgdlg.h \ C:/wxWidgets-3.1.0/include/wx/stockitem.h \ C:/wxWidgets-3.1.0/include/wx/generic/msgdlgg.h \ C:/wxWidgets-3.1.0/include/wx/msw/msgdlg.h \ - C:/wxWidgets-3.1.0/include/wx/geometry.h \ C:/wxWidgets-3.1.0/include/wx/menu.h \ C:/wxWidgets-3.1.0/include/wx/menuitem.h \ C:/wxWidgets-3.1.0/include/wx/msw/menuitem.h \ @@ -514,6 +553,90 @@ C:/wxWidgets-3.1.0/include/wx/statline.h: C:/wxWidgets-3.1.0/include/wx/msw/statline.h: +C:/wxWidgets-3.1.0/include/wx/propgrid/manager.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/propgrid.h: + +C:/wxWidgets-3.1.0/include/wx/dcclient.h: + +C:/wxWidgets-3.1.0/include/wx/dc.h: + +C:/wxWidgets-3.1.0/include/wx/brush.h: + +C:/wxWidgets-3.1.0/include/wx/msw/brush.h: + +C:/wxWidgets-3.1.0/include/wx/pen.h: + +C:/wxWidgets-3.1.0/include/wx/msw/pen.h: + +C:/wxWidgets-3.1.0/include/wx/affinematrix2d.h: + +C:/wxWidgets-3.1.0/include/wx/affinematrix2dbase.h: + +C:/wxWidgets-3.1.0/include/wx/geometry.h: + +C:/wxWidgets-3.1.0/include/wx/scrolwin.h: + +C:/wxWidgets-3.1.0/include/wx/generic/scrolwin.h: + +C:/wxWidgets-3.1.0/include/wx/recguard.h: + +C:/wxWidgets-3.1.0/include/wx/tooltip.h: + +C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h: + +C:/wxWidgets-3.1.0/include/wx/time.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/property.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/propgriddefs.h: + +C:/wxWidgets-3.1.0/include/wx/hashset.h: + +C:/wxWidgets-3.1.0/include/wx/tokenzr.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/propgridiface.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/propgridpagestate.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/props.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/editors.h: + +C:/wxWidgets-3.1.0/include/wx/listbox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/listbox.h: + +C:/wxWidgets-3.1.0/include/wx/valtext.h: + +C:/wxWidgets-3.1.0/include/wx/toolbar.h: + +C:/wxWidgets-3.1.0/include/wx/tbarbase.h: + +C:/wxWidgets-3.1.0/include/wx/msw/toolbar.h: + +C:/wxWidgets-3.1.0/include/wx/headerctrl.h: + +C:/wxWidgets-3.1.0/include/wx/headercol.h: + +C:/wxWidgets-3.1.0/include/wx/msw/headerctrl.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/advprops.h: + +C:/wxWidgets-3.1.0/include/wx/spinbutt.h: + +C:/wxWidgets-3.1.0/include/wx/range.h: + +C:/wxWidgets-3.1.0/include/wx/msw/spinbutt.h: + +C:/wxWidgets-3.1.0/include/wx/listctrl.h: + +C:/wxWidgets-3.1.0/include/wx/listbase.h: + +C:/wxWidgets-3.1.0/include/wx/systhemectrl.h: + +C:/wxWidgets-3.1.0/include/wx/msw/listctrl.h: + C:/wxWidgets-3.1.0/include/wx/persist.h: C:/wxWidgets-3.1.0/include/wx/confbase.h: @@ -540,8 +663,6 @@ C:/wxWidgets-3.1.0/include/wx/treebase.h: C:/wxWidgets-3.1.0/include/wx/itemid.h: -C:/wxWidgets-3.1.0/include/wx/systhemectrl.h: - C:/wxWidgets-3.1.0/include/wx/msw/treectrl.h: Branch.h: @@ -556,8 +677,6 @@ C:/wxWidgets-3.1.0/include/wx/generic/msgdlgg.h: C:/wxWidgets-3.1.0/include/wx/msw/msgdlg.h: -C:/wxWidgets-3.1.0/include/wx/geometry.h: - C:/wxWidgets-3.1.0/include/wx/menu.h: C:/wxWidgets-3.1.0/include/wx/menuitem.h: diff --git a/Project/Release/Load.cpp.o b/Project/Release/Load.cpp.o Binary files differindex 8bd79ac..f6ee624 100644 --- a/Project/Release/Load.cpp.o +++ b/Project/Release/Load.cpp.o diff --git a/Project/Release/Machines.cpp.o b/Project/Release/Machines.cpp.o Binary files differindex 993d9b3..a7269bf 100644 --- a/Project/Release/Machines.cpp.o +++ b/Project/Release/Machines.cpp.o diff --git a/Project/Release/MainFrame.cpp.o b/Project/Release/MainFrame.cpp.o Binary files differindex c377bcf..a0e5599 100644 --- a/Project/Release/MainFrame.cpp.o +++ b/Project/Release/MainFrame.cpp.o diff --git a/Project/Release/PSP-UFU.exe b/Project/Release/PSP-UFU.exe Binary files differindex 7c77f85..fd2cacc 100644 --- a/Project/Release/PSP-UFU.exe +++ b/Project/Release/PSP-UFU.exe diff --git a/Project/Release/Shunt.cpp.o b/Project/Release/Shunt.cpp.o Binary files differindex 2e3a284..9f09e7e 100644 --- a/Project/Release/Shunt.cpp.o +++ b/Project/Release/Shunt.cpp.o diff --git a/Project/Release/SyncGenerator.cpp.o b/Project/Release/SyncGenerator.cpp.o Binary files differindex 5ecca5f..42a3f12 100644 --- a/Project/Release/SyncGenerator.cpp.o +++ b/Project/Release/SyncGenerator.cpp.o diff --git a/Project/Release/SyncMotor.cpp.o b/Project/Release/SyncMotor.cpp.o Binary files differindex 9dd1087..5dfbe05 100644 --- a/Project/Release/SyncMotor.cpp.o +++ b/Project/Release/SyncMotor.cpp.o diff --git a/Project/Release/Transformer.cpp.o b/Project/Release/Transformer.cpp.o Binary files differindex 9559db7..9c1cc7f 100644 --- a/Project/Release/Transformer.cpp.o +++ b/Project/Release/Transformer.cpp.o diff --git a/Project/Release/TransformerForm.cpp.o b/Project/Release/TransformerForm.cpp.o Binary files differindex 0b60bf1..8860e67 100644 --- a/Project/Release/TransformerForm.cpp.o +++ b/Project/Release/TransformerForm.cpp.o diff --git a/Project/Release/Workspace.cpp.o b/Project/Release/Workspace.cpp.o Binary files differindex 2bd8b14..1d9efa4 100644 --- a/Project/Release/Workspace.cpp.o +++ b/Project/Release/Workspace.cpp.o diff --git a/Project/Release/Workspace.cpp.o.d b/Project/Release/Workspace.cpp.o.d index bf7cf23..9a54b28 100644 --- a/Project/Release/Workspace.cpp.o.d +++ b/Project/Release/Workspace.cpp.o.d @@ -201,7 +201,37 @@ Release/Workspace.cpp.o: Workspace.cpp Workspace.h \ C:/wxWidgets-3.1.0/include/wx/statbox.h \ C:/wxWidgets-3.1.0/include/wx/msw/statbox.h \ C:/wxWidgets-3.1.0/include/wx/statline.h \ - C:/wxWidgets-3.1.0/include/wx/msw/statline.h Element.h \ + C:/wxWidgets-3.1.0/include/wx/msw/statline.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/manager.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/propgrid.h \ + C:/wxWidgets-3.1.0/include/wx/scrolwin.h \ + C:/wxWidgets-3.1.0/include/wx/generic/scrolwin.h \ + C:/wxWidgets-3.1.0/include/wx/recguard.h \ + C:/wxWidgets-3.1.0/include/wx/time.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/property.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/propgriddefs.h \ + C:/wxWidgets-3.1.0/include/wx/hashset.h \ + C:/wxWidgets-3.1.0/include/wx/tokenzr.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/propgridiface.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/propgridpagestate.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/props.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/editors.h \ + C:/wxWidgets-3.1.0/include/wx/listbox.h \ + C:/wxWidgets-3.1.0/include/wx/msw/listbox.h \ + C:/wxWidgets-3.1.0/include/wx/valtext.h \ + C:/wxWidgets-3.1.0/include/wx/toolbar.h \ + C:/wxWidgets-3.1.0/include/wx/tbarbase.h \ + C:/wxWidgets-3.1.0/include/wx/msw/toolbar.h \ + C:/wxWidgets-3.1.0/include/wx/headerctrl.h \ + C:/wxWidgets-3.1.0/include/wx/headercol.h \ + C:/wxWidgets-3.1.0/include/wx/msw/headerctrl.h \ + C:/wxWidgets-3.1.0/include/wx/propgrid/advprops.h \ + C:/wxWidgets-3.1.0/include/wx/spinbutt.h \ + C:/wxWidgets-3.1.0/include/wx/range.h \ + C:/wxWidgets-3.1.0/include/wx/msw/spinbutt.h \ + C:/wxWidgets-3.1.0/include/wx/listctrl.h \ + C:/wxWidgets-3.1.0/include/wx/listbase.h \ + C:/wxWidgets-3.1.0/include/wx/msw/listctrl.h Element.h \ C:/wxWidgets-3.1.0/include/wx/menu.h \ C:/wxWidgets-3.1.0/include/wx/menuitem.h \ C:/wxWidgets-3.1.0/include/wx/msw/menuitem.h \ @@ -629,6 +659,66 @@ C:/wxWidgets-3.1.0/include/wx/statline.h: C:/wxWidgets-3.1.0/include/wx/msw/statline.h: +C:/wxWidgets-3.1.0/include/wx/propgrid/manager.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/propgrid.h: + +C:/wxWidgets-3.1.0/include/wx/scrolwin.h: + +C:/wxWidgets-3.1.0/include/wx/generic/scrolwin.h: + +C:/wxWidgets-3.1.0/include/wx/recguard.h: + +C:/wxWidgets-3.1.0/include/wx/time.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/property.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/propgriddefs.h: + +C:/wxWidgets-3.1.0/include/wx/hashset.h: + +C:/wxWidgets-3.1.0/include/wx/tokenzr.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/propgridiface.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/propgridpagestate.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/props.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/editors.h: + +C:/wxWidgets-3.1.0/include/wx/listbox.h: + +C:/wxWidgets-3.1.0/include/wx/msw/listbox.h: + +C:/wxWidgets-3.1.0/include/wx/valtext.h: + +C:/wxWidgets-3.1.0/include/wx/toolbar.h: + +C:/wxWidgets-3.1.0/include/wx/tbarbase.h: + +C:/wxWidgets-3.1.0/include/wx/msw/toolbar.h: + +C:/wxWidgets-3.1.0/include/wx/headerctrl.h: + +C:/wxWidgets-3.1.0/include/wx/headercol.h: + +C:/wxWidgets-3.1.0/include/wx/msw/headerctrl.h: + +C:/wxWidgets-3.1.0/include/wx/propgrid/advprops.h: + +C:/wxWidgets-3.1.0/include/wx/spinbutt.h: + +C:/wxWidgets-3.1.0/include/wx/range.h: + +C:/wxWidgets-3.1.0/include/wx/msw/spinbutt.h: + +C:/wxWidgets-3.1.0/include/wx/listctrl.h: + +C:/wxWidgets-3.1.0/include/wx/listbase.h: + +C:/wxWidgets-3.1.0/include/wx/msw/listctrl.h: + Element.h: C:/wxWidgets-3.1.0/include/wx/menu.h: diff --git a/Project/Transformer.cpp b/Project/Transformer.cpp index 37237dd..31a987b 100644 --- a/Project/Transformer.cpp +++ b/Project/Transformer.cpp @@ -237,3 +237,17 @@ bool Transformer::ShowForm(wxWindow* parent, Element* element) transfForm->Destroy(); return false; } + +void Transformer::SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit) +{ + if(nominalVoltage.size() == 1) { + m_electricalData.primaryNominalVoltage = nominalVoltage[0]; + m_electricalData.primaryNominalVoltageUnit = nominalVoltageUnit[0]; + } + else if(nominalVoltage.size() == 2) { + m_electricalData.primaryNominalVoltage = nominalVoltage[0]; + m_electricalData.primaryNominalVoltageUnit = nominalVoltageUnit[0]; + m_electricalData.secondaryNominalVoltage = nominalVoltage[1]; + m_electricalData.secondaryNominalVoltageUnit = nominalVoltageUnit[1]; + } +} diff --git a/Project/Transformer.h b/Project/Transformer.h index 835fc03..fb23618 100644 --- a/Project/Transformer.h +++ b/Project/Transformer.h @@ -22,23 +22,29 @@ struct TransformerElectricalData { // General wxString name = ""; - double nominalVoltage = 138.0; - ElectricalUnit nominalVoltageUnit = UNIT_kV; + double primaryNominalVoltage = 138.0; + ElectricalUnit primaryNominalVoltageUnit = UNIT_kV; + double secondaryNominalVoltage = 138.0; + ElectricalUnit secondaryNominalVoltageUnit = UNIT_kV; + int baseVoltage = 0; double nominalPower = 100.0; ElectricalUnit nominalPowerUnit = UNIT_MVA; double resistance = 0.0; ElectricalUnit resistanceUnit = UNIT_PU; double indReactance = 1.0; ElectricalUnit indReactanceUnit = UNIT_PU; - double capSusceptance = 0.0; - ElectricalUnit capSusceptanceUnit = UNIT_PU; - double lineSize = 100.0; - bool useLinePower = false; + TransformerConnection connection = GWYE_GWYE; + double turnsRatio = 1.0; + double phaseShift = 0.0; + bool useTransformerPower = false; // Fault double zeroResistance = 0.0; double zeroIndReactance = 1.0; - double zeroCapSusceptance = 0.0; + double primaryGrndResistance = 0.0; + double primaryGrndReactance = 0.0; + double secondaryGrndResistance = 0.0; + double secondaryGrndReactance = 0.0; }; class Transformer : public Branch @@ -57,6 +63,12 @@ public: virtual void StartMove(wxPoint2DDouble position); virtual bool GetContextMenu(wxMenu& menu); virtual bool ShowForm(wxWindow* parent, Element* element); + virtual TransformerElectricalData GetElectricalData() { return m_electricalData; } + virtual void SetElectricaData(TransformerElectricalData electricalData) { m_electricalData = electricalData; } + virtual void SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit); + +protected: + TransformerElectricalData m_electricalData; }; #endif // TRANSFORMER_H diff --git a/Project/TransformerForm.cpp b/Project/TransformerForm.cpp index 3af782c..96c4faa 100644 --- a/Project/TransformerForm.cpp +++ b/Project/TransformerForm.cpp @@ -5,8 +5,95 @@ TransformerForm::TransformerForm(wxWindow* parent, Transformer* transformer) : TransformerFormBase(parent) { + m_choiceResistance->SetString(1, L'\u03A9'); + m_choiceReactance->SetString(1, L'\u03A9'); + + SetSize(GetBestSize()); + Layout(); + m_parent = parent; m_transformer = transformer; + + TransformerElectricalData data = transformer->GetElectricalData(); + + m_textCtrlName->SetValue(data.name); + + wxString nominalVoltageStr = wxString::FromDouble(data.primaryNominalVoltage); + switch(data.primaryNominalVoltageUnit) { + case UNIT_V: { + nominalVoltageStr += " V"; + } break; + case UNIT_kV: { + nominalVoltageStr += " kV"; + } break; + default: + break; + } + nominalVoltageStr += " / " + wxString::FromDouble(data.secondaryNominalVoltage); + switch(data.secondaryNominalVoltageUnit) { + case UNIT_V: { + nominalVoltageStr += " V"; + } break; + case UNIT_kV: { + nominalVoltageStr += " kV"; + } break; + default: + break; + } + m_staticTextNominalVoltageValue->SetLabel(nominalVoltageStr); + + m_choiceBaseVoltage->SetSelection(data.baseVoltage); + + m_textCtrlNominalPower->SetValue(wxString::FromDouble(data.nominalPower)); + switch(data.nominalPowerUnit) { + case UNIT_VA: { + m_choiceNominalPower->SetSelection(0); + } break; + case UNIT_kVA: { + m_choiceNominalPower->SetSelection(1); + } break; + case UNIT_MVA: { + m_choiceNominalPower->SetSelection(2); + } break; + default: + break; + } + + m_textCtrlResistance->SetValue(wxString::FromDouble(data.resistance)); + switch(data.resistanceUnit) { + case UNIT_PU: { + m_choiceResistance->SetSelection(0); + } break; + case UNIT_OHM: { + m_choiceResistance->SetSelection(1); + } break; + default: + break; + } + + m_textCtrlReactance->SetValue(wxString::FromDouble(data.indReactance)); + switch(data.indReactanceUnit) { + case UNIT_PU: { + m_choiceReactance->SetSelection(0); + } break; + case UNIT_OHM: { + m_choiceReactance->SetSelection(1); + } break; + default: + break; + } + + m_choiceConnection->SetSelection(data.connection); + + m_textCtrlTurnRatio->SetValue(wxString::FromDouble(data.turnsRatio)); + m_textCtrlPhaseShift->SetValue(wxString::FromDouble(data.phaseShift)); + + m_textCtrlZeroResistance->SetValue(wxString::FromDouble(data.zeroResistance)); + m_textCtrlZeroReactance->SetValue(wxString::FromDouble(data.zeroIndReactance)); + m_textCtrlPrimResistance->SetValue(wxString::FromDouble(data.primaryGrndResistance)); + m_textCtrlPrimReactance->SetValue(wxString::FromDouble(data.primaryGrndReactance)); + m_textCtrlSecResistance->SetValue(wxString::FromDouble(data.secondaryGrndResistance)); + m_textCtrlSecReactance->SetValue(wxString::FromDouble(data.secondaryGrndReactance)); } TransformerForm::~TransformerForm() diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp index bfcfb89..229e39e 100644 --- a/Project/Workspace.cpp +++ b/Project/Workspace.cpp @@ -977,12 +977,16 @@ void Workspace::ValidateElementsVoltages() { for(auto it = m_elementList.begin(); it != m_elementList.end(); it++) { Element* child = *it; + + std::vector<double> nominalVoltage; + std::vector<ElectricalUnit> nominalVoltageUnit; for(int i = 0; i < (int)child->GetParentList().size(); i++) { Bus* parent = (Bus*)child->GetParentList()[i]; if(parent) { - child->SetNominalVoltage(parent->GetEletricalData().nominalVoltage, - parent->GetEletricalData().nominalVoltageUnit); + nominalVoltage.push_back(parent->GetEletricalData().nominalVoltage); + nominalVoltageUnit.push_back(parent->GetEletricalData().nominalVoltageUnit); } } + child->SetNominalVoltage(nominalVoltage, nominalVoltageUnit); } } |