summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.codelite/.tern-port2
-rw-r--r--.codelite/PSP.session41
-rw-r--r--.codelite/PSP.tagsbin82852864 -> 82866176 bytes
-rw-r--r--.codelite/compilation.dbbin51200 -> 51200 bytes
-rw-r--r--.codelite/compile_commands.json16
-rw-r--r--.codelite/refactoring.dbbin1424384 -> 1541120 bytes
-rw-r--r--Project/Element.h4
-rw-r--r--Project/Line.cpp555
-rw-r--r--Project/Line.h2
-rw-r--r--Project/Project.mk2
-rw-r--r--Project/Release/Branch.cpp.obin31424 -> 31620 bytes
-rw-r--r--Project/Release/Bus.cpp.obin39027 -> 39223 bytes
-rw-r--r--Project/Release/Capacitor.cpp.obin36289 -> 36485 bytes
-rw-r--r--Project/Release/Element.cpp.obin145034 -> 145230 bytes
-rw-r--r--Project/Release/IndMotor.cpp.obin30590 -> 30786 bytes
-rw-r--r--Project/Release/Inductor.cpp.obin36205 -> 36401 bytes
-rw-r--r--Project/Release/Line.cpp.obin157360 -> 157420 bytes
-rw-r--r--Project/Release/Line.cpp.o.d131
-rw-r--r--Project/Release/Load.cpp.obin37034 -> 37230 bytes
-rw-r--r--Project/Release/Machines.cpp.obin36580 -> 36776 bytes
-rw-r--r--Project/Release/MainFrame.cpp.obin138191 -> 138191 bytes
-rw-r--r--Project/Release/PSP-UFU.exebin3851892 -> 3859611 bytes
-rw-r--r--Project/Release/Shunt.cpp.obin31388 -> 31584 bytes
-rw-r--r--Project/Release/SyncGenerator.cpp.obin38117 -> 38313 bytes
-rw-r--r--Project/Release/SyncMotor.cpp.obin27419 -> 27615 bytes
-rw-r--r--Project/Release/Transformer.cpp.obin40159 -> 43805 bytes
-rw-r--r--Project/Release/TransformerForm.cpp.obin80442 -> 89653 bytes
-rw-r--r--Project/Release/Workspace.cpp.obin153284 -> 153710 bytes
-rw-r--r--Project/Release/Workspace.cpp.o.d92
-rw-r--r--Project/Transformer.cpp14
-rw-r--r--Project/Transformer.h26
-rw-r--r--Project/TransformerForm.cpp87
-rw-r--r--Project/Workspace.cpp8
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
index 5838256..d1aaa4b 100644
--- a/.codelite/PSP.tags
+++ b/.codelite/PSP.tags
Binary files differ
diff --git a/.codelite/compilation.db b/.codelite/compilation.db
index 60150c7..6ec24d1 100644
--- a/.codelite/compilation.db
+++ b/.codelite/compilation.db
Binary files differ
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
index 9bf17bb..7a37da8 100644
--- a/.codelite/refactoring.db
+++ b/.codelite/refactoring.db
Binary files differ
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
index 0684027..a790b76 100644
--- a/Project/Release/Branch.cpp.o
+++ b/Project/Release/Branch.cpp.o
Binary files differ
diff --git a/Project/Release/Bus.cpp.o b/Project/Release/Bus.cpp.o
index a9aa9c2..3313bf2 100644
--- a/Project/Release/Bus.cpp.o
+++ b/Project/Release/Bus.cpp.o
Binary files differ
diff --git a/Project/Release/Capacitor.cpp.o b/Project/Release/Capacitor.cpp.o
index 5b8b2af..9030f42 100644
--- a/Project/Release/Capacitor.cpp.o
+++ b/Project/Release/Capacitor.cpp.o
Binary files differ
diff --git a/Project/Release/Element.cpp.o b/Project/Release/Element.cpp.o
index 3b73bc0..9af96aa 100644
--- a/Project/Release/Element.cpp.o
+++ b/Project/Release/Element.cpp.o
Binary files differ
diff --git a/Project/Release/IndMotor.cpp.o b/Project/Release/IndMotor.cpp.o
index 835796c..36b7efe 100644
--- a/Project/Release/IndMotor.cpp.o
+++ b/Project/Release/IndMotor.cpp.o
Binary files differ
diff --git a/Project/Release/Inductor.cpp.o b/Project/Release/Inductor.cpp.o
index 0ebf9f3..f3750be 100644
--- a/Project/Release/Inductor.cpp.o
+++ b/Project/Release/Inductor.cpp.o
Binary files differ
diff --git a/Project/Release/Line.cpp.o b/Project/Release/Line.cpp.o
index 631ecd1..9cec445 100644
--- a/Project/Release/Line.cpp.o
+++ b/Project/Release/Line.cpp.o
Binary files differ
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
index 8bd79ac..f6ee624 100644
--- a/Project/Release/Load.cpp.o
+++ b/Project/Release/Load.cpp.o
Binary files differ
diff --git a/Project/Release/Machines.cpp.o b/Project/Release/Machines.cpp.o
index 993d9b3..a7269bf 100644
--- a/Project/Release/Machines.cpp.o
+++ b/Project/Release/Machines.cpp.o
Binary files differ
diff --git a/Project/Release/MainFrame.cpp.o b/Project/Release/MainFrame.cpp.o
index c377bcf..a0e5599 100644
--- a/Project/Release/MainFrame.cpp.o
+++ b/Project/Release/MainFrame.cpp.o
Binary files differ
diff --git a/Project/Release/PSP-UFU.exe b/Project/Release/PSP-UFU.exe
index 7c77f85..fd2cacc 100644
--- a/Project/Release/PSP-UFU.exe
+++ b/Project/Release/PSP-UFU.exe
Binary files differ
diff --git a/Project/Release/Shunt.cpp.o b/Project/Release/Shunt.cpp.o
index 2e3a284..9f09e7e 100644
--- a/Project/Release/Shunt.cpp.o
+++ b/Project/Release/Shunt.cpp.o
Binary files differ
diff --git a/Project/Release/SyncGenerator.cpp.o b/Project/Release/SyncGenerator.cpp.o
index 5ecca5f..42a3f12 100644
--- a/Project/Release/SyncGenerator.cpp.o
+++ b/Project/Release/SyncGenerator.cpp.o
Binary files differ
diff --git a/Project/Release/SyncMotor.cpp.o b/Project/Release/SyncMotor.cpp.o
index 9dd1087..5dfbe05 100644
--- a/Project/Release/SyncMotor.cpp.o
+++ b/Project/Release/SyncMotor.cpp.o
Binary files differ
diff --git a/Project/Release/Transformer.cpp.o b/Project/Release/Transformer.cpp.o
index 9559db7..9c1cc7f 100644
--- a/Project/Release/Transformer.cpp.o
+++ b/Project/Release/Transformer.cpp.o
Binary files differ
diff --git a/Project/Release/TransformerForm.cpp.o b/Project/Release/TransformerForm.cpp.o
index 0b60bf1..8860e67 100644
--- a/Project/Release/TransformerForm.cpp.o
+++ b/Project/Release/TransformerForm.cpp.o
Binary files differ
diff --git a/Project/Release/Workspace.cpp.o b/Project/Release/Workspace.cpp.o
index 2bd8b14..1d9efa4 100644
--- a/Project/Release/Workspace.cpp.o
+++ b/Project/Release/Workspace.cpp.o
Binary files differ
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);
}
}