summaryrefslogtreecommitdiffstats
path: root/Project
diff options
context:
space:
mode:
authorThales1330 <thaleslima.ufu@gmail.com>2016-09-30 16:58:37 -0300
committerThales1330 <thaleslima.ufu@gmail.com>2016-09-30 16:58:37 -0300
commitf6718ac24553ac99bf90f99a33543d6d6b96999b (patch)
tree3e012cfc029726a0eb5fc5576797baeafde6bc84 /Project
parentee27459748acee31a307604f6395ea31b4bf53ce (diff)
downloadPSP.git-f6718ac24553ac99bf90f99a33543d6d6b96999b.tar.gz
PSP.git-f6718ac24553ac99bf90f99a33543d6d6b96999b.tar.xz
PSP.git-f6718ac24553ac99bf90f99a33543d6d6b96999b.zip
Line form implemented, voltages corrections under implementation
Diffstat (limited to 'Project')
-rw-r--r--Project/Branch.h1
-rw-r--r--Project/Element.h2
-rw-r--r--Project/ElementForm.cpp2
-rw-r--r--Project/ElementForm.wxcp2
-rw-r--r--Project/Line.cpp77
-rw-r--r--Project/Line.h1
-rw-r--r--Project/LineForm.cpp248
-rw-r--r--Project/MainFrame.cpp4
-rw-r--r--Project/Project.mk2
-rw-r--r--Project/Release/Branch.cpp.obin26180 -> 26901 bytes
-rw-r--r--Project/Release/Branch.cpp.o.d170
-rw-r--r--Project/Release/ElementForm.cpp.obin392418 -> 392418 bytes
-rw-r--r--Project/Release/Line.cpp.obin44206 -> 146683 bytes
-rw-r--r--Project/Release/Line.cpp.o.d6
-rw-r--r--Project/Release/LineForm.cpp.obin88484 -> 98677 bytes
-rw-r--r--Project/Release/MainFrame.cpp.obin136615 -> 138191 bytes
-rw-r--r--Project/Release/MainFrame.cpp.o.d8
-rw-r--r--Project/Release/PSP-UFU.exebin3723167 -> 3750954 bytes
-rw-r--r--Project/Release/Transformer.cpp.obin34967 -> 35788 bytes
-rw-r--r--Project/Release/Workspace.cpp.obin132823 -> 148672 bytes
-rw-r--r--Project/Release/Workspace.cpp.o.d8
-rw-r--r--Project/Workspace.cpp74
-rw-r--r--Project/Workspace.h4
23 files changed, 508 insertions, 101 deletions
diff --git a/Project/Branch.h b/Project/Branch.h
index a39cef6..ba7108a 100644
--- a/Project/Branch.h
+++ b/Project/Branch.h
@@ -2,6 +2,7 @@
#define BRANCH_H
#include "Element.h"
+#include "Bus.h"
class Branch : public Element
{
diff --git a/Project/Element.h b/Project/Element.h
index dff68f7..b1a7163 100644
--- a/Project/Element.h
+++ b/Project/Element.h
@@ -169,6 +169,8 @@ class Element
bool DoubleFromString(wxWindow* parent, wxString strValue, double& value, wxString errorMsg);
bool IntFromString(wxWindow* parent, wxString strValue, int& value, wxString errorMsg);
+ virtual void
+
protected:
std::vector<Element*> m_parentList;
diff --git a/Project/ElementForm.cpp b/Project/ElementForm.cpp
index b5517e4..893918c 100644
--- a/Project/ElementForm.cpp
+++ b/Project/ElementForm.cpp
@@ -1481,7 +1481,7 @@ LineFormBase::LineFormBase(wxWindow* parent, wxWindowID id, const wxString& titl
wxBoxSizer* boxSizerLvl2_2 = new wxBoxSizer(wxVERTICAL);
m_panelFault->SetSizer(boxSizerLvl2_2);
- wxStaticBoxSizer* staticBoxSizerZeroImpSeq = new wxStaticBoxSizer( new wxStaticBox(m_panelFault, wxID_ANY, _("Zero-sequance impedances (p.u.)")), wxVERTICAL);
+ wxStaticBoxSizer* staticBoxSizerZeroImpSeq = new wxStaticBoxSizer( new wxStaticBox(m_panelFault, wxID_ANY, _("Zero-sequence impedances (p.u.)")), wxVERTICAL);
boxSizerLvl2_2->Add(staticBoxSizerZeroImpSeq, 0, wxALL|wxEXPAND, WXC_FROM_DIP(5));
diff --git a/Project/ElementForm.wxcp b/Project/ElementForm.wxcp
index 23f714a..0ff4383 100644
--- a/Project/ElementForm.wxcp
+++ b/Project/ElementForm.wxcp
@@ -16518,7 +16518,7 @@
}, {
"type": "string",
"m_label": "Label:",
- "m_value": "Zero-sequance impedances (p.u.)"
+ "m_value": "Zero-sequence impedances (p.u.)"
}],
"m_events": [],
"m_children": [{
diff --git a/Project/Line.cpp b/Project/Line.cpp
index fb84b1e..25e0e4b 100644
--- a/Project/Line.cpp
+++ b/Project/Line.cpp
@@ -1,6 +1,7 @@
#include "Line.h"
Line::Line() : Branch() {}
+Line::Line(wxString name) : Branch() { m_electricaData.name = name; }
Line::~Line() {}
bool Line::Contains(wxPoint2DDouble position) const
{
@@ -41,8 +42,8 @@ void Line::Draw(wxPoint2DDouble translation, double scale) const
glLineWidth(1.5);
glColor4d(0.2, 0.2, 0.2, 1.0);
DrawLine(pointList);
-
- DrawSwitches();
+
+ if(m_inserted) DrawSwitches();
// Draw nodes.
if(pointList.size() > 0) {
@@ -97,16 +98,32 @@ bool Line::AddParent(Element* parent, wxPoint2DDouble position)
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();
-
+
+ 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 with a line 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.
@@ -124,11 +141,11 @@ bool Line::AddParent(Element* parent, wxPoint2DDouble position)
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();
-
+
+ wxRect2DDouble genRect(0, 0, 0, 0);
+ m_switchRect.push_back(genRect);
+ UpdateSwitches();
+
m_inserted = true;
return true;
}
@@ -203,13 +220,13 @@ void Line::MoveNode(Element* parent, wxPoint2DDouble position)
if(m_activeNodeID == 1) {
m_pointList[0] = m_movePts[0] + position - m_moveStartPt;
m_parentList[0] = NULL;
- m_online = false;
+ 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;
+ m_online = false;
}
}
@@ -267,7 +284,7 @@ bool Line::GetContextMenu(wxMenu& menu)
{
menu.Append(ID_LINE_REMOVE_NODE, _("Remove node"));
}
- menu.Append(ID_DELETE, _("Delete"));
+ menu.Append(ID_DELETE, _("Delete"));
return true;
}
@@ -296,26 +313,26 @@ void Line::AddNode(wxPoint2DDouble point)
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;
+ 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;
}
}
}
bool Line::ShowForm(wxWindow* parent, Element* element)
{
- LineForm* lineForm = new LineForm(parent, this);
- if(lineForm->ShowModal() == wxID_OK) {
- lineForm->Destroy();
- return true;
+ LineForm* lineForm = new LineForm(parent, this);
+ if(lineForm->ShowModal() == wxID_OK) {
+ lineForm->Destroy();
+ return true;
}
- lineForm->Destroy();
- return false;
+ lineForm->Destroy();
+ return false;
}
diff --git a/Project/Line.h b/Project/Line.h
index 8aa0c83..7dfe104 100644
--- a/Project/Line.h
+++ b/Project/Line.h
@@ -33,6 +33,7 @@ class Line : public Branch
{
public:
Line();
+ Line(wxString name);
~Line();
virtual bool Contains(wxPoint2DDouble position) const;
virtual void Draw(wxPoint2DDouble translation, double scale) const;
diff --git a/Project/LineForm.cpp b/Project/LineForm.cpp
index 7cc9aca..e5efd3e 100644
--- a/Project/LineForm.cpp
+++ b/Project/LineForm.cpp
@@ -5,13 +5,13 @@ LineForm::LineForm(wxWindow* parent, Line* line) : LineFormBase(parent)
{
m_choiceResistance->SetString(1, L'\u03A9');
m_choiceResistance->SetString(2, (wxString)L'\u03A9' + "/km");
- m_choiceResistance->SetInitialSize();
- m_textCtrlResistance->SetInitialSize();
+ m_choiceResistance->SetInitialSize();
+ m_textCtrlResistance->SetInitialSize();
m_choiceReactance->SetString(1, L'\u03A9');
m_choiceReactance->SetString(2, (wxString)L'\u03A9' + "/km");
- m_choiceReactance->SetInitialSize();
- m_textCtrlReactance->SetInitialSize();
+ m_choiceReactance->SetInitialSize();
+ m_textCtrlReactance->SetInitialSize();
ReplaceStaticTextLabelChar(m_staticTextZeroResistance, L'\u2080');
ReplaceStaticTextLabelChar(m_staticTextZeroReactance, L'\u2080');
@@ -42,83 +42,110 @@ LineForm::LineForm(wxWindow* parent, Line* line) : LineFormBase(parent)
default:
break;
}
- m_staticTextNominalVoltageValue->SetLabel(nominalVoltageStr);
-
- m_textCtrlNominalPower->SetValue(wxString::FromDouble(data.nominalPower));
- switch(data.nominalPowerUnit)
+ m_staticTextNominalVoltageValue->SetLabel(nominalVoltageStr);
+
+ m_textCtrlNominalPower->SetValue(wxString::FromDouble(data.nominalPower));
+ switch(data.nominalPowerUnit)
{
- case UNIT_VA:
- m_choiceResistance->SetSelection(0);
+ case UNIT_VA:
+ {
+ m_choiceNominalPower->SetSelection(0);
+ }
break;
- case UNIT_kVA:
- m_choiceResistance->SetSelection(1);
+ case UNIT_kVA:
+ {
+ m_choiceNominalPower->SetSelection(1);
+ }
break;
- case UNIT_MVA:
- m_choiceResistance->SetSelection(2);
+ case UNIT_MVA:
+ {
+ m_choiceNominalPower->SetSelection(2);
+ }
break;
- default:
+ default:
break;
}
-
- m_textCtrlResistance->SetValue(wxString::FromDouble(data.resistance));
- switch(data.resistanceUnit)
+
+ m_textCtrlResistance->SetValue(wxString::FromDouble(data.resistance));
+ switch(data.resistanceUnit)
{
- case UNIT_PU:
- m_choiceResistance->SetSelection(0);
+ case UNIT_PU:
+ {
+ m_choiceResistance->SetSelection(0);
+ }
break;
- case UNIT_OHM:
- m_choiceResistance->SetSelection(1);
+ case UNIT_OHM:
+ {
+ m_choiceResistance->SetSelection(1);
+ }
break;
- case UNIT_OHM_km:
- m_choiceResistance->SetSelection(2);
+ case UNIT_OHM_km:
+ {
+ m_choiceResistance->SetSelection(2);
+ }
break;
- default:
+ default:
break;
}
-
- m_textCtrlReactance->SetValue(wxString::FromDouble(data.indReactance));
- switch(data.indReactanceUnit)
+
+ m_textCtrlReactance->SetValue(wxString::FromDouble(data.indReactance));
+ switch(data.indReactanceUnit)
{
- case UNIT_PU:
- m_choiceResistance->SetSelection(0);
+ case UNIT_PU:
+ {
+ m_choiceReactance->SetSelection(0);
+ }
break;
- case UNIT_OHM:
- m_choiceResistance->SetSelection(1);
+ case UNIT_OHM:
+ {
+ m_choiceReactance->SetSelection(1);
+ }
break;
- case UNIT_OHM_km:
- m_choiceResistance->SetSelection(2);
+ case UNIT_OHM_km:
+ {
+ m_choiceReactance->SetSelection(2);
+ }
break;
- default:
+ default:
break;
}
-
- m_textCtrlSusceptance->SetValue(wxString::FromDouble(data.capSusceptance));
- switch(data.capSusceptanceUnit)
+
+ m_textCtrlSusceptance->SetValue(wxString::FromDouble(data.capSusceptance));
+ switch(data.capSusceptanceUnit)
{
- case UNIT_PU:
- m_choiceResistance->SetSelection(0);
+ case UNIT_PU:
+ {
+ m_choiceSusceptance->SetSelection(0);
+ }
break;
- case UNIT_S:
- m_choiceResistance->SetSelection(1);
+ case UNIT_S:
+ {
+ m_choiceSusceptance->SetSelection(1);
+ }
break;
- case UNIT_S_km:
- m_choiceResistance->SetSelection(2);
+ case UNIT_S_km:
+ {
+ m_choiceSusceptance->SetSelection(2);
+ }
break;
- default:
+ default:
break;
}
-
- m_textCtrlLineSize->SetValue(wxString::FromDouble(data.lineSize));
- m_checkUseLinePower->SetValue(data.useLinePower);
-
- m_textCtrlZeroResistance->SetValue(wxString::FromDouble(data.zeroResistance));
- m_textCtrlZeroReactance->SetValue(wxString::FromDouble(data.zeroIndReactance));
- m_textCtrlZeroSusceptance->SetValue(wxString::FromDouble(data.zeroCapSusceptance));
+
+ m_textCtrlLineSize->SetValue(wxString::FromDouble(data.lineSize));
+ m_checkUseLinePower->SetValue(data.useLinePower);
+
+ m_textCtrlZeroResistance->SetValue(wxString::FromDouble(data.zeroResistance));
+ m_textCtrlZeroReactance->SetValue(wxString::FromDouble(data.zeroIndReactance));
+ m_textCtrlZeroSusceptance->SetValue(wxString::FromDouble(data.zeroCapSusceptance));
}
LineForm::~LineForm() {}
void LineForm::OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }
-void LineForm::OnOKButtonClick(wxCommandEvent& event) { EndModal(wxID_OK); }
+void LineForm::OnOKButtonClick(wxCommandEvent& event)
+{
+ if(ValidateData()) EndModal(wxID_OK);
+}
void LineForm::OnStabilityButtonClick(wxCommandEvent& event) {}
void LineForm::ReplaceStaticTextLabelChar(wxStaticText* staticText, wchar_t newChar)
{
@@ -129,8 +156,115 @@ void LineForm::ReplaceStaticTextLabelChar(wxStaticText* staticText, wchar_t newC
bool LineForm::ValidateData()
{
- LineElectricalData data = m_line->GetElectricalData();
-
- //if(!m_line->DoubleFromString(m_parent, m_textCtrlInertia->GetValue(), data.inertia,
- // _("Value entered incorrectly in the field \"Inertia\".")))
+ LineElectricalData data = m_line->GetElectricalData();
+
+ data.name = m_textCtrlName->GetValue();
+
+ if(!m_line->DoubleFromString(m_parent, m_textCtrlNominalPower->GetValue(), data.nominalPower,
+ _("Value entered incorrectly in the field \"Nominal power\".")))
+ return false;
+ switch(m_choiceNominalPower->GetSelection())
+ {
+ case 0:
+ {
+ data.nominalPowerUnit = UNIT_VA;
+ }
+ break;
+ case 1:
+ {
+ data.nominalPowerUnit = UNIT_kVA;
+ }
+ break;
+ case 2:
+ {
+ data.nominalPowerUnit = UNIT_MVA;
+ }
+ break;
+ }
+
+ if(!m_line->DoubleFromString(m_parent, m_textCtrlResistance->GetValue(), data.resistance,
+ _("Value entered incorrectly in the field \"Resistance\".")))
+ return false;
+ switch(m_choiceResistance->GetSelection())
+ {
+ case 0:
+ {
+ data.resistanceUnit = UNIT_PU;
+ }
+ break;
+ case 1:
+ {
+ data.resistanceUnit = UNIT_OHM;
+ }
+ break;
+ case 2:
+ {
+ data.resistanceUnit = UNIT_OHM_km;
+ }
+ break;
+ }
+
+ if(!m_line->DoubleFromString(m_parent, m_textCtrlReactance->GetValue(), data.indReactance,
+ _("Value entered incorrectly in the field \"Indutive Reactance\".")))
+ return false;
+ switch(m_choiceReactance->GetSelection())
+ {
+ case 0:
+ {
+ data.indReactanceUnit = UNIT_PU;
+ }
+ break;
+ case 1:
+ {
+ data.indReactanceUnit = UNIT_OHM;
+ }
+ break;
+ case 2:
+ {
+ data.indReactanceUnit = UNIT_OHM_km;
+ }
+ break;
+ }
+
+ if(!m_line->DoubleFromString(m_parent, m_textCtrlSusceptance->GetValue(), data.capSusceptance,
+ _("Value entered incorrectly in the field \"Capacitive Susceptance\".")))
+ return false;
+ switch(m_choiceSusceptance->GetSelection())
+ {
+ case 0:
+ {
+ data.capSusceptanceUnit = UNIT_PU;
+ }
+ break;
+ case 1:
+ {
+ data.capSusceptanceUnit = UNIT_S;
+ }
+ break;
+ case 2:
+ {
+ data.capSusceptanceUnit = UNIT_S_km;
+ }
+ break;
+ }
+
+ if(!m_line->DoubleFromString(m_parent, m_textCtrlLineSize->GetValue(), data.lineSize,
+ _("Value entered incorrectly in the field \"Line size\".")))
+ return false;
+
+ data.useLinePower = m_checkUseLinePower->GetValue();
+
+ if(!m_line->DoubleFromString(m_parent, m_textCtrlZeroResistance->GetValue(), data.zeroResistance,
+ _("Value entered incorrectly in the field \"Zero-sequence resistance\".")))
+ return false;
+ if(!m_line->DoubleFromString(m_parent, m_textCtrlZeroReactance->GetValue(), data.zeroIndReactance,
+ _("Value entered incorrectly in the field \"Zero-sequence indutive reactance\".")))
+ return false;
+ if(!m_line->DoubleFromString(m_parent, m_textCtrlZeroSusceptance->GetValue(), data.zeroCapSusceptance,
+ _("Value entered incorrectly in the field \"Zero-sequence capacitive susceptance\".")))
+ return false;
+
+ m_line->SetElectricalData(data);
+
+ return true;
}
diff --git a/Project/MainFrame.cpp b/Project/MainFrame.cpp
index 3b7e230..aedf7a8 100644
--- a/Project/MainFrame.cpp
+++ b/Project/MainFrame.cpp
@@ -229,8 +229,10 @@ void MainFrame::OnAddElementsClick(wxCommandEvent& event)
break;
case ID_ADDMENU_LINE:
{
- Line* newLine = new Line();
+ Line* newLine =
+ new Line(wxString::Format(_("Line %d"), workspace->GetElementNumber(ID_LINE)));
elementList.push_back(newLine);
+ workspace->IncrementElementNumber(ID_LINE);
statusBarText = _("Insert Line: Click on two buses, ESC to cancel.");
newElement = true;
}
diff --git a/Project/Project.mk b/Project/Project.mk
index b8e0ec5..12e584f 100644
--- a/Project/Project.mk
+++ b/Project/Project.mk
@@ -13,7 +13,7 @@ CurrentFileName :=
CurrentFilePath :=
CurrentFileFullPath :=
User :=Thales
-Date :=29/09/2016
+Date :=30/09/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 212064f..902af22 100644
--- a/Project/Release/Branch.cpp.o
+++ b/Project/Release/Branch.cpp.o
Binary files differ
diff --git a/Project/Release/Branch.cpp.o.d b/Project/Release/Branch.cpp.o.d
index bdd1cbb..ad389b7 100644
--- a/Project/Release/Branch.cpp.o.d
+++ b/Project/Release/Branch.cpp.o.d
@@ -130,7 +130,61 @@ Release/Branch.cpp.o: Branch.cpp Branch.h Element.h \
C:/wxWidgets-3.1.0/include/wx/msw/bitmap.h \
C:/wxWidgets-3.1.0/include/wx/ownerdrw.h \
C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h \
- C:/wxWidgets-3.1.0/include/wx/msw/menu.h
+ C:/wxWidgets-3.1.0/include/wx/msw/menu.h Bus.h BusForm.h ElementForm.h \
+ C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h \
+ C:/wxWidgets-3.1.0/include/wx/filesys.h \
+ C:/wxWidgets-3.1.0/include/wx/filename.h \
+ C:/wxWidgets-3.1.0/include/wx/file.h \
+ C:/wxWidgets-3.1.0/include/wx/convauto.h \
+ C:/wxWidgets-3.1.0/include/wx/artprov.h \
+ C:/wxWidgets-3.1.0/include/wx/xrc/xmlreshandler.h \
+ C:/wxWidgets-3.1.0/include/wx/imaglist.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/imaglist.h \
+ C:/wxWidgets-3.1.0/include/wx/xrc/xh_bmp.h \
+ C:/wxWidgets-3.1.0/include/wx/sizer.h \
+ C:/wxWidgets-3.1.0/include/wx/notebook.h \
+ C:/wxWidgets-3.1.0/include/wx/bookctrl.h \
+ C:/wxWidgets-3.1.0/include/wx/control.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/control.h \
+ C:/wxWidgets-3.1.0/include/wx/withimages.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/notebook.h \
+ C:/wxWidgets-3.1.0/include/wx/stattext.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/stattext.h \
+ C:/wxWidgets-3.1.0/include/wx/textctrl.h \
+ C:/wxWidgets-3.1.0/include/wx/textentry.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/textentry.h \
+ C:/wxWidgets-3.1.0/include/wx/ioswrap.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/textctrl.h \
+ C:/wxWidgets-3.1.0/include/wx/choice.h \
+ C:/wxWidgets-3.1.0/include/wx/ctrlsub.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ctrlsub.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/choice.h \
+ C:/wxWidgets-3.1.0/include/wx/checkbox.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/checkbox.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ownerdrawnbutton.h \
+ C:/wxWidgets-3.1.0/include/wx/button.h \
+ C:/wxWidgets-3.1.0/include/wx/anybutton.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/anybutton.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/button.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 \
+ 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 \
+ C:/wxWidgets-3.1.0/include/wx/persist/toplevel.h \
+ C:/wxWidgets-3.1.0/include/wx/persist/window.h \
+ C:/wxWidgets-3.1.0/include/wx/display.h \
+ C:/wxWidgets-3.1.0/include/wx/vidmode.h \
+ C:/wxWidgets-3.1.0/include/wx/persist/bookctrl.h \
+ C:/wxWidgets-3.1.0/include/wx/persist/treebook.h \
+ C:/wxWidgets-3.1.0/include/wx/treebook.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:
@@ -401,3 +455,117 @@ C:/wxWidgets-3.1.0/include/wx/ownerdrw.h:
C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h:
C:/wxWidgets-3.1.0/include/wx/msw/menu.h:
+
+Bus.h:
+
+BusForm.h:
+
+ElementForm.h:
+
+C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h:
+
+C:/wxWidgets-3.1.0/include/wx/filesys.h:
+
+C:/wxWidgets-3.1.0/include/wx/filename.h:
+
+C:/wxWidgets-3.1.0/include/wx/file.h:
+
+C:/wxWidgets-3.1.0/include/wx/convauto.h:
+
+C:/wxWidgets-3.1.0/include/wx/artprov.h:
+
+C:/wxWidgets-3.1.0/include/wx/xrc/xmlreshandler.h:
+
+C:/wxWidgets-3.1.0/include/wx/imaglist.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/imaglist.h:
+
+C:/wxWidgets-3.1.0/include/wx/xrc/xh_bmp.h:
+
+C:/wxWidgets-3.1.0/include/wx/sizer.h:
+
+C:/wxWidgets-3.1.0/include/wx/notebook.h:
+
+C:/wxWidgets-3.1.0/include/wx/bookctrl.h:
+
+C:/wxWidgets-3.1.0/include/wx/control.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/control.h:
+
+C:/wxWidgets-3.1.0/include/wx/withimages.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/notebook.h:
+
+C:/wxWidgets-3.1.0/include/wx/stattext.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/stattext.h:
+
+C:/wxWidgets-3.1.0/include/wx/textctrl.h:
+
+C:/wxWidgets-3.1.0/include/wx/textentry.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/textentry.h:
+
+C:/wxWidgets-3.1.0/include/wx/ioswrap.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/textctrl.h:
+
+C:/wxWidgets-3.1.0/include/wx/choice.h:
+
+C:/wxWidgets-3.1.0/include/wx/ctrlsub.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ctrlsub.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/choice.h:
+
+C:/wxWidgets-3.1.0/include/wx/checkbox.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/checkbox.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ownerdrawnbutton.h:
+
+C:/wxWidgets-3.1.0/include/wx/button.h:
+
+C:/wxWidgets-3.1.0/include/wx/anybutton.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/anybutton.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/button.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:
+
+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:
+
+C:/wxWidgets-3.1.0/include/wx/persist/toplevel.h:
+
+C:/wxWidgets-3.1.0/include/wx/persist/window.h:
+
+C:/wxWidgets-3.1.0/include/wx/display.h:
+
+C:/wxWidgets-3.1.0/include/wx/vidmode.h:
+
+C:/wxWidgets-3.1.0/include/wx/persist/bookctrl.h:
+
+C:/wxWidgets-3.1.0/include/wx/persist/treebook.h:
+
+C:/wxWidgets-3.1.0/include/wx/treebook.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:
diff --git a/Project/Release/ElementForm.cpp.o b/Project/Release/ElementForm.cpp.o
index b482f79..cd8d195 100644
--- a/Project/Release/ElementForm.cpp.o
+++ b/Project/Release/ElementForm.cpp.o
Binary files differ
diff --git a/Project/Release/Line.cpp.o b/Project/Release/Line.cpp.o
index 5111c67..6a6185e 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 b1190dc..62ce48e 100644
--- a/Project/Release/Line.cpp.o.d
+++ b/Project/Release/Line.cpp.o.d
@@ -184,7 +184,7 @@ Release/Line.cpp.o: Line.cpp Line.h LineForm.h ElementForm.h \
C:/wxWidgets-3.1.0/include/wx/msw/menuitem.h \
C:/wxWidgets-3.1.0/include/wx/ownerdrw.h \
C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h \
- C:/wxWidgets-3.1.0/include/wx/msw/menu.h
+ C:/wxWidgets-3.1.0/include/wx/msw/menu.h Bus.h BusForm.h
Line.h:
@@ -569,3 +569,7 @@ C:/wxWidgets-3.1.0/include/wx/ownerdrw.h:
C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h:
C:/wxWidgets-3.1.0/include/wx/msw/menu.h:
+
+Bus.h:
+
+BusForm.h:
diff --git a/Project/Release/LineForm.cpp.o b/Project/Release/LineForm.cpp.o
index 04c2b17..484099c 100644
--- a/Project/Release/LineForm.cpp.o
+++ b/Project/Release/LineForm.cpp.o
Binary files differ
diff --git a/Project/Release/MainFrame.cpp.o b/Project/Release/MainFrame.cpp.o
index 5a3b6cb..fd06139 100644
--- a/Project/Release/MainFrame.cpp.o
+++ b/Project/Release/MainFrame.cpp.o
Binary files differ
diff --git a/Project/Release/MainFrame.cpp.o.d b/Project/Release/MainFrame.cpp.o.d
index 8cb7a84..f9579f0 100644
--- a/Project/Release/MainFrame.cpp.o.d
+++ b/Project/Release/MainFrame.cpp.o.d
@@ -222,9 +222,9 @@ Release/MainFrame.cpp.o: MainFrame.cpp MainFrame.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 Line.h Branch.h \
- Transformer.h SyncGenerator.h GeneratorForm.h Machines.h IndMotor.h \
- SyncMotor.h Load.h Shunt.h Inductor.h Capacitor.h
+ C:/wxWidgets-3.1.0/include/wx/msw/statline.h Element.h Line.h LineForm.h \
+ Branch.h Transformer.h SyncGenerator.h GeneratorForm.h Machines.h \
+ IndMotor.h SyncMotor.h Load.h Shunt.h Inductor.h Capacitor.h
MainFrame.h:
@@ -696,6 +696,8 @@ Element.h:
Line.h:
+LineForm.h:
+
Branch.h:
Transformer.h:
diff --git a/Project/Release/PSP-UFU.exe b/Project/Release/PSP-UFU.exe
index fd66311..f0389d9 100644
--- a/Project/Release/PSP-UFU.exe
+++ b/Project/Release/PSP-UFU.exe
Binary files differ
diff --git a/Project/Release/Transformer.cpp.o b/Project/Release/Transformer.cpp.o
index 81f065f..1229ebf 100644
--- a/Project/Release/Transformer.cpp.o
+++ b/Project/Release/Transformer.cpp.o
Binary files differ
diff --git a/Project/Release/Workspace.cpp.o b/Project/Release/Workspace.cpp.o
index 7a829ff..7458807 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 d91267c..bf7cf23 100644
--- a/Project/Release/Workspace.cpp.o.d
+++ b/Project/Release/Workspace.cpp.o.d
@@ -207,9 +207,9 @@ Release/Workspace.cpp.o: Workspace.cpp Workspace.h \
C:/wxWidgets-3.1.0/include/wx/msw/menuitem.h \
C:/wxWidgets-3.1.0/include/wx/ownerdrw.h \
C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h \
- C:/wxWidgets-3.1.0/include/wx/msw/menu.h Line.h Branch.h Transformer.h \
- SyncGenerator.h GeneratorForm.h Machines.h IndMotor.h SyncMotor.h Load.h \
- Shunt.h Inductor.h Capacitor.h
+ C:/wxWidgets-3.1.0/include/wx/msw/menu.h Line.h LineForm.h Branch.h \
+ Transformer.h SyncGenerator.h GeneratorForm.h Machines.h IndMotor.h \
+ SyncMotor.h Load.h Shunt.h Inductor.h Capacitor.h
Workspace.h:
@@ -645,6 +645,8 @@ C:/wxWidgets-3.1.0/include/wx/msw/menu.h:
Line.h:
+LineForm.h:
+
Branch.h:
Transformer.h:
diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp
index c0d380a..698ae81 100644
--- a/Project/Workspace.cpp
+++ b/Project/Workspace.cpp
@@ -235,7 +235,43 @@ void Workspace::OnLeftDoubleClick(wxMouseEvent& event)
// Click in an element.
if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) {
+ bool elementIsBus = false;
+ Bus oldBus;
+ if(typeid(*element) == typeid(Bus)) {
+ elementIsBus = true;
+ oldBus = *(Bus*)element;
+ }
element->ShowForm(this, element);
+
+ // If the edited element is a bus and was changed the nominal voltage, this voltage must be
+ // propagated through the lines
+ if(elementIsBus) {
+ // The voltage was changed
+ if(oldBus.GetEletricalData().nominalVoltage !=
+ ((Bus*)element)->GetEletricalData().nominalVoltage ||
+ oldBus.GetEletricalData().nominalVoltageUnit !=
+ ((Bus*)element)->GetEletricalData().nominalVoltageUnit)
+ {
+ // Check if the lines has this bus as parent
+ for(auto it = m_elementList.begin(); it != m_elementList.end(); it++) {
+ Element* child = *it;
+
+ bool elementIsParent = false;
+ if(typeid(*child) == typeid(Line)) {
+ for(int i = 0; i < (int)child->GetParentList().size(); i++) {
+ Element* parent = child->GetParentList()[i];
+ if(parent == element) {
+ // TODO: Ask the user if he wants to change all
+ // voltages
+ ValidateBusesVoltages(element);
+ elementIsParent = true;
+ }
+ }
+ }
+ if(elementIsParent) break;
+ }
+ }
+ }
}
// Click in a switch.
@@ -601,7 +637,9 @@ void Workspace::OnKeyDown(wxKeyEvent& event)
}
else // Insert a power line.
{
- Line* newLine = new Line();
+ Line* newLine =
+ new Line(wxString::Format(_("Line %d"), GetElementNumber(ID_LINE)));
+ IncrementElementNumber(ID_LINE);
m_elementList.push_back(newLine);
m_mode = MODE_INSERT;
m_statusBar->SetStatusText(
@@ -901,3 +939,37 @@ void Workspace::Fit()
Redraw();
}
}
+
+void Workspace::ValidateBusesVoltages(Element* initialBus)
+{
+ double nominalVoltage = ((Bus*)initialBus)->GetEletricalData().nominalVoltage;
+ ElectricalUnit nominalVoltageUnit = ((Bus*)initialBus)->GetEletricalData().nominalVoltageUnit;
+
+ for(auto it = m_elementList.begin(); it != m_elementList.end(); it++) {
+ Element* child = *it;
+
+ if(typeid(*child) == typeid(Line)) {
+ BusElectricalData data1 = ((Bus*)child->GetParentList()[0])->GetEletricalData();
+ BusElectricalData data2 = ((Bus*)child->GetParentList()[1])->GetEletricalData();
+
+ if(data1.nominalVoltage != data2.nominalVoltage ||
+ data1.nominalVoltageUnit != data2.nominalVoltageUnit)
+ {
+ data1.nominalVoltage = nominalVoltage;
+ data2.nominalVoltage = nominalVoltage;
+ data1.nominalVoltageUnit = nominalVoltageUnit;
+ data2.nominalVoltageUnit = nominalVoltageUnit;
+
+ ((Bus*)child->GetParentList()[0])->SetElectricalData(data1);
+ ((Bus*)child->GetParentList()[1])->SetElectricalData(data2);
+
+ it = m_elementList.begin();// Restart search.
+ }
+ }
+ }
+}
+
+void Workspace::ValidateElementsVoltages()
+{
+ //continua...
+}
diff --git a/Project/Workspace.h b/Project/Workspace.h
index c5c0547..a4c84d8 100644
--- a/Project/Workspace.h
+++ b/Project/Workspace.h
@@ -72,6 +72,9 @@ class Workspace : public WorkspaceBase
void DeleteSelectedElements();
void Fit();
+ void ValidateBusesVoltages(Element* initialBus);
+ void ValidateElementsVoltages();
+
int GetElementNumber(ElementID elementID) { return m_elementNumber[elementID]; }
void IncrementElementNumber(ElementID elementID) { m_elementNumber[elementID]++; }
@@ -98,7 +101,6 @@ class Workspace : public WorkspaceBase
WorkspaceMode m_mode = MODE_EDIT;
std::vector<Element*> m_elementList;
- //int m_numElements = NUM_ELEMENTS;
int m_elementNumber[NUM_ELEMENTS];
void UpdateStatusBar();