diff options
Diffstat (limited to 'Project')
50 files changed, 1837 insertions, 362 deletions
diff --git a/Project/Bus.h b/Project/Bus.h index 836d2f7..470d4cb 100644 --- a/Project/Bus.h +++ b/Project/Bus.h @@ -11,7 +11,7 @@ struct BusElectricalData { ElectricalUnit nominalVoltageUnit = UNIT_kV; bool isVoltageControlled = false; double controlledVoltage = 1.0; - int controlledVoltageUnitChoice = 0; // 0 = p.u., 1 = same as nominalVoltageUnit (UNIT_V or UNIT_kV). + int controlledVoltageUnitChoice = 0; // 0 = p.u., 1 = same as nominalVoltageUnit (UNIT_V or UNIT_kV). bool slackBus = false; // Power flow (p.u.) @@ -21,8 +21,14 @@ struct BusElectricalData { bool hasFault = false; FaultData faultType = FAULT_THREEPHASE; FaultData faultLocation = FAULT_LINE_A; + // p.u. fault data double faultResistance = 0.0; double faultReactance = 0.0; + std::complex<double> faultCurrent[3] = { std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0), + std::complex<double>(0.0, 0.0) }; + std::complex<double> faultVoltage[3] = { std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0), + std::complex<double>(0.0, 0.0) }; + double scPower = 0.0; // Stability bool plotBus = false; @@ -35,7 +41,7 @@ struct BusElectricalData { class Bus : public Element { - public: +public: Bus(); Bus(wxPoint2DDouble position); Bus(wxPoint2DDouble position, wxString name); @@ -53,8 +59,8 @@ class Bus : public Element virtual void SetElectricalData(BusElectricalData electricalData) { m_electricalData = electricalData; } virtual bool ShowForm(wxWindow* parent, Element* element); - protected: +protected: BusElectricalData m_electricalData; }; -#endif // BUS_H +#endif // BUS_H diff --git a/Project/Element.h b/Project/Element.h index 0502e62..f5a2edb 100644 --- a/Project/Element.h +++ b/Project/Element.h @@ -11,8 +11,7 @@ #include <wx/log.h> -enum PickboxID -{ +enum PickboxID { ID_PB_NONE = 0, ID_PB_RIGHT, ID_PB_LEFT, @@ -22,8 +21,7 @@ enum PickboxID ID_PB_LEFT_TOP }; -enum ContextMenuID -{ +enum ContextMenuID { ID_EDIT_BUS = 0, ID_EDIT_LINE, ID_EDIT_TRANSFORMER, @@ -38,81 +36,67 @@ enum ContextMenuID ID_LINE_REMOVE_NODE, ID_ROTATE_CLOCK, - ID_ROTATE_COUNTERCLOCK, + ID_ROTATE_COUNTERCLOCK, ID_DELETE }; -enum ElectricalUnit -{ - UNIT_PU = 0, - UNIT_V, - UNIT_kV, - UNIT_A, - UNIT_kA, - UNIT_W, - UNIT_kW, - UNIT_MW, - UNIT_VA, - UNIT_kVA, - UNIT_MVA, - UNIT_VAr, - UNIT_kVAr, - UNIT_MVAr, - UNIT_OHM, - UNIT_OHM_km, - UNIT_S, - UNIT_S_km, +enum ElectricalUnit { + UNIT_PU = 0, + UNIT_V, + UNIT_kV, + UNIT_A, + UNIT_kA, + UNIT_W, + UNIT_kW, + UNIT_MW, + UNIT_VA, + UNIT_kVA, + UNIT_MVA, + UNIT_VAr, + UNIT_kVAr, + UNIT_MVAr, + UNIT_OHM, + UNIT_OHM_km, + UNIT_S, + UNIT_S_km, UNIT_DEGREE, UNIT_RADIAN }; -enum FaultData -{ - FAULT_THREEPHASE = 0, - FAULT_2LINE, - FAULT_2LINE_GROUND, - FAULT_LINE_GROUND, - FAULT_LINE_A, - FAULT_LINE_B, - FAULT_LINE_C +enum FaultData { + FAULT_THREEPHASE = 0, + FAULT_2LINE, + FAULT_2LINE_GROUND, + FAULT_LINE_GROUND, + FAULT_LINE_A, + FAULT_LINE_B, + FAULT_LINE_C }; -enum SwitchingType -{ - SW_INSERT = 0, - SW_REMOVE -}; +enum SwitchingType { SW_INSERT = 0, SW_REMOVE }; -enum PowerFlowDirection -{ - PF_NONE = 0, - PF_TO_BUS, - PF_TO_ELEMENT, - PF_BUS1_TO_BUS2, - PF_BUS2_TO_BUS1 -}; +enum PowerFlowDirection { PF_NONE = 0, PF_TO_BUS, PF_TO_ELEMENT, PF_BUS1_TO_BUS2, PF_BUS2_TO_BUS1 }; -struct SwitchingData -{ +struct SwitchingData { std::vector<SwitchingType> swType; std::vector<double> swTime; -}; +}; class Element { - public: +public: Element(); virtual ~Element(); // Setters - void SetDragging(bool dragging = true) { this->m_dragging = dragging; } - void SetHeight(double height) { this->m_height = height; } + void SetDragging(bool dragging = true) { m_dragging = dragging; } + void SetHeight(double height) { m_height = height; } void SetPosition(const wxPoint2DDouble position); - void SetSelected(bool selected = true) { this->m_selected = selected; } - void SetWidth(double width) { this->m_width = width; } - void SetAngle(double angle) { this->m_angle = angle; } - void ShowPickbox(bool showPickbox = true) { this->m_showPickbox = showPickbox; } - void SetBorderSize(double borderSize) { this->m_borderSize = borderSize; } + void SetSelected(bool selected = true) { m_selected = selected; } + void SetWidth(double width) { m_width = width; } + void SetAngle(double angle) { m_angle = angle; } + void ShowPickbox(bool showPickbox = true) { m_showPickbox = showPickbox; } + void SetBorderSize(double borderSize) { m_borderSize = borderSize; } void SetOnline(bool online = true); // Getters wxRect2DDouble GetRect() const { return m_rect; } @@ -142,13 +126,12 @@ class Element virtual bool SetNodeParent(Element* parent) { return false; } virtual void RemoveParent(Element* parent) {} virtual void RotateNode(Element* parent, bool clockwise = true) {} - virtual wxPoint2DDouble GetSwitchPoint(Element* parent, - wxPoint2DDouble parentPoint, - wxPoint2DDouble secondPoint) const; + virtual wxPoint2DDouble + GetSwitchPoint(Element* parent, wxPoint2DDouble parentPoint, wxPoint2DDouble secondPoint) const; virtual bool SwitchesContains(wxPoint2DDouble position) const; virtual void UpdateSwitches(); virtual void DrawSwitches() const; - + virtual void CalculatePowerFlowPts(std::vector<wxPoint2DDouble> edges); virtual void DrawPowerFlowPts() const; @@ -157,27 +140,23 @@ class Element virtual wxCursor GetBestPickboxCursor() const { return wxCURSOR_ARROW; } virtual void ResetPickboxes() { m_activePickboxID = ID_PB_NONE; } virtual void ResetNodes() { m_activeNodeID = 0; } - virtual wxPoint2DDouble WorldToScreen(wxPoint2DDouble translation, - double scale, - double offsetX = 0.0, - double offsetY = 0.0) const; + virtual wxPoint2DDouble + WorldToScreen(wxPoint2DDouble translation, double scale, double offsetX = 0.0, double offsetY = 0.0) const; virtual wxPoint2DDouble WorldToScreen(wxPoint2DDouble position, - wxPoint2DDouble translation, - double scale, - double offsetX = 0.0, - double offsetY = 0.0) const; - virtual bool RotatedRectanglesIntersects(wxRect2DDouble rect1, - wxRect2DDouble rect2, - double angle1, - double angle2) const; + wxPoint2DDouble translation, + double scale, + double offsetX = 0.0, + double offsetY = 0.0) const; + virtual bool + RotatedRectanglesIntersects(wxRect2DDouble rect1, wxRect2DDouble rect2, double angle1, double angle2) const; virtual void DrawCircle(wxPoint2DDouble position, double radius, int numSegments, GLenum mode = GL_LINE_LOOP) const; virtual void DrawArc(wxPoint2DDouble position, - double radius, - double initAngle, - double finalAngle, - int numSegments, - GLenum mode = GL_LINE_LOOP) const; + double radius, + double initAngle, + double finalAngle, + int numSegments, + GLenum mode = GL_LINE_LOOP) const; virtual void DrawRectangle(wxPoint2DDouble position, double width, double height, GLenum mode = GL_QUADS) const; virtual void DrawRectangle(wxPoint2DDouble* points, GLenum mode = GL_QUADS) const; virtual void DrawTriangle(std::vector<wxPoint2DDouble> points, GLenum mode = GL_TRIANGLES) const; @@ -189,27 +168,29 @@ class Element virtual std::vector<Element*> GetParentList() const { return m_parentList; } virtual wxPoint2DDouble GetMoveStartPosition() const { return m_moveStartPt; } virtual wxPoint2DDouble GetMovePosition() const { return m_movePos; } - - virtual void CalculateBoundaries(wxPoint2DDouble& leftUp, wxPoint2DDouble& rightBottom) const; - - virtual void GeneralMenuItens(wxMenu& menu); - - virtual bool ShowForm(wxWindow* parent, Element* element) { return false; } - - bool DoubleFromString(wxWindow* parent, wxString strValue, double& value, wxString errorMsg); - bool IntFromString(wxWindow* parent, wxString strValue, int& value, wxString errorMsg); - - //Electrical only methods - virtual void SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit) {} + + virtual void CalculateBoundaries(wxPoint2DDouble& leftUp, wxPoint2DDouble& rightBottom) const; + + virtual void GeneralMenuItens(wxMenu& menu); + + virtual bool ShowForm(wxWindow* parent, Element* element) { return false; } + + bool DoubleFromString(wxWindow* parent, wxString strValue, double& value, wxString errorMsg); + bool IntFromString(wxWindow* parent, wxString strValue, int& value, wxString errorMsg); + + // Electrical only methods + 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; } virtual void SetPowerFlowDirection(PowerFlowDirection pfDirection) { m_pfDirection = pfDirection; } virtual PowerFlowDirection GetPowerFlowDirection() const { return m_pfDirection; } - - //Static methods + + // Static methods static wxString StringFromDouble(double value, int minDecimal = 1); - - protected: + +protected: std::vector<Element*> m_parentList; wxRect2DDouble m_rect; @@ -222,8 +203,8 @@ class Element double m_switchSize = 10.0; std::vector<wxRect2DDouble> m_switchRect; - - std::vector< std::vector<wxPoint2DDouble> > m_powerFlowArrow; + + std::vector<std::vector<wxPoint2DDouble> > m_powerFlowArrow; PowerFlowDirection m_pfDirection = PF_NONE; bool m_selected = false; @@ -240,8 +221,8 @@ class Element wxPoint2DDouble m_movePos; bool m_online = true; - + SwitchingData m_swData; }; -#endif // ELEMENT_H +#endif // ELEMENT_H diff --git a/Project/ElementForm.cpp b/Project/ElementForm.cpp index 89ef491..a8960d9 100644 --- a/Project/ElementForm.cpp +++ b/Project/ElementForm.cpp @@ -2623,7 +2623,6 @@ TextFormBase::TextFormBase(wxWindow* parent, wxWindowID id, const wxString& titl m_choiceElementArr.Add(wxT("Synchronous compensator")); m_choiceElementArr.Add(wxT("Induction motor")); m_choiceElement = new wxChoice(m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), m_choiceElementArr, 0); - m_choiceElement->SetSelection(0); boxSizerLvl4_1->Add(m_choiceElement, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND, WXC_FROM_DIP(5)); @@ -2766,6 +2765,7 @@ TextFormBase::TextFormBase(wxWindow* parent, wxWindowID id, const wxString& titl m_choiceTextType->Connect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnTypeChoiceSelected), NULL, this); m_choiceTextFromBus->Connect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnFromBusChoiceSelected), NULL, this); m_choiceTextToBus->Connect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnToBusChoiceSelected), NULL, this); + m_choiceTextUnit->Connect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnUnitChoiceSelected), NULL, this); m_textCtrlDecimal->Connect(wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(TextFormBase::OnTextEnter), NULL, this); m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(TextFormBase::OnOKButtonClick), NULL, this); m_ButtonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(TextFormBase::OnCancelButtonClick), NULL, this); @@ -2779,6 +2779,7 @@ TextFormBase::~TextFormBase() m_choiceTextType->Disconnect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnTypeChoiceSelected), NULL, this); m_choiceTextFromBus->Disconnect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnFromBusChoiceSelected), NULL, this); m_choiceTextToBus->Disconnect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnToBusChoiceSelected), NULL, this); + m_choiceTextUnit->Disconnect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnUnitChoiceSelected), NULL, this); m_textCtrlDecimal->Disconnect(wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(TextFormBase::OnTextEnter), NULL, this); m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(TextFormBase::OnOKButtonClick), NULL, this); m_ButtonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(TextFormBase::OnCancelButtonClick), NULL, this); diff --git a/Project/ElementForm.h b/Project/ElementForm.h index 6645b96..9756bc8 100644 --- a/Project/ElementForm.h +++ b/Project/ElementForm.h @@ -741,6 +741,7 @@ protected: virtual void OnTypeChoiceSelected(wxCommandEvent& event) { event.Skip(); } virtual void OnFromBusChoiceSelected(wxCommandEvent& event) { event.Skip(); } virtual void OnToBusChoiceSelected(wxCommandEvent& event) { event.Skip(); } + virtual void OnUnitChoiceSelected(wxCommandEvent& event) { event.Skip(); } virtual void OnTextEnter(wxCommandEvent& event) { event.Skip(); } virtual void OnOKButtonClick(wxCommandEvent& event) { event.Skip(); } virtual void OnCancelButtonClick(wxCommandEvent& event) { event.Skip(); } diff --git a/Project/ElementForm.wxcp b/Project/ElementForm.wxcp index b61d5a0..5fd02f1 100644 --- a/Project/ElementForm.wxcp +++ b/Project/ElementForm.wxcp @@ -27776,7 +27776,7 @@ }, { "type": "string", "m_label": "Selection:", - "m_value": "0" + "m_value": "-1" }], "m_events": [{ "m_eventName": "wxEVT_COMMAND_CHOICE_SELECTED", @@ -28703,7 +28703,14 @@ "m_label": "Selection:", "m_value": "0" }], - "m_events": [], + "m_events": [{ + "m_eventName": "wxEVT_COMMAND_CHOICE_SELECTED", + "m_eventClass": "wxCommandEvent", + "m_eventHandler": "wxCommandEventHandler", + "m_functionNameAndSignature": "OnUnitChoiceSelected(wxCommandEvent& event)", + "m_description": "Process a wxEVT_COMMAND_CHOICE_SELECTED event, when an item on the list is selected.", + "m_noBody": false + }], "m_children": [] }] }] diff --git a/Project/Line.cpp b/Project/Line.cpp index b7b5ba7..ae5e0b3 100644 --- a/Project/Line.cpp +++ b/Project/Line.cpp @@ -1,7 +1,25 @@ #include "Line.h" -Line::Line() : Branch() {} -Line::Line(wxString name) : Branch() { m_electricaData.name = name; } +Line::Line() + : Branch() +{ + for(int i = 0; i < 2; i++) { + for(int j = 0; j < 3; j++) { + m_electricaData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0); + } + } +} + +Line::Line(wxString name) + : Branch() +{ + for(int i = 0; i < 2; i++) { + for(int j = 0; j < 3; j++) { + m_electricaData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0); + } + } + m_electricaData.name = name; +} Line::~Line() {} bool Line::Contains(wxPoint2DDouble position) const { @@ -43,7 +61,7 @@ void Line::Draw(wxPoint2DDouble translation, double scale) const glColor4d(0.2, 0.2, 0.2, 1.0); DrawLine(pointList); - if(m_inserted){ + if(m_inserted) { DrawSwitches(); DrawPowerFlowPts(); } @@ -98,10 +116,10 @@ bool Line::AddParent(Element* parent, wxPoint2DDouble position) 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 + 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); @@ -118,19 +136,19 @@ bool Line::AddParent(Element* parent, wxPoint2DDouble position) else if(parent != m_parentList[0]) { Bus* parentBus = (Bus*)parent; if(m_electricaData.nominalVoltage != parentBus->GetEletricalData().nominalVoltage || - m_electricaData.nominalVoltageUnit != parentBus->GetEletricalData().nominalVoltageUnit) { + 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); + _("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. + 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; @@ -142,7 +160,7 @@ bool Line::AddParent(Element* parent, wxPoint2DDouble position) // 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. + m_pointList.push_back(parentPt); // Last point. wxRect2DDouble genRect(0, 0, 0, 0); m_switchRect.push_back(genRect); @@ -237,7 +255,7 @@ void Line::MoveNode(Element* parent, wxPoint2DDouble position) double Line::PointToLineDistance(wxPoint2DDouble point, int* segmentNumber) const { //[Ref] http://geomalgorithms.com/a02-_lines.html - double distance = 100.0; // Big initial distance. + double distance = 100.0; // Big initial distance. wxPoint2DDouble p0 = point; for(int i = 1; i < (int)m_pointList.size() - 2; i++) { @@ -349,12 +367,12 @@ bool Line::SetNodeParent(Element* parent) 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); + 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); + 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)) { @@ -365,10 +383,10 @@ bool Line::SetNodeParent(Element* parent) 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) { + 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); + _("Error"), wxOK | wxCENTRE | wxICON_ERROR); msgDialog.ShowModal(); m_activeNodeID = 0; return false; @@ -385,8 +403,8 @@ bool Line::SetNodeParent(Element* 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. + 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; @@ -455,13 +473,10 @@ void Line::RotateNode(Element* parent, bool clockwise) if(!clockwise) rotAngle = -m_rotationAngle; if(parent == m_parentList[0]) { - m_pointList[0] = parent->RotateAtPosition(m_pointList[0], rotAngle); - } - else if(parent == m_parentList[1]) - { - m_pointList[m_pointList.size() - 1] = - parent->RotateAtPosition(m_pointList[m_pointList.size() - 1], rotAngle); - } + m_pointList[0] = parent->RotateAtPosition(m_pointList[0], rotAngle); + } else if(parent == m_parentList[1]) { + m_pointList[m_pointList.size() - 1] = parent->RotateAtPosition(m_pointList[m_pointList.size() - 1], rotAngle); + } UpdateSwitchesPosition(); UpdatePowerFlowArrowsPosition(); } diff --git a/Project/Line.h b/Project/Line.h index 1a9aa2b..012f68d 100644 --- a/Project/Line.h +++ b/Project/Line.h @@ -28,6 +28,8 @@ struct LineElectricalData { double zeroResistance = 0.0; double zeroIndReactance = 1.0; double zeroCapSusceptance = 0.0; + // p.u. fault data + std::complex<double> faultCurrent[2][3]; }; class Line : public Branch diff --git a/Project/Project.mk b/Project/Project.mk index 62bac5f..83cac59 100644 --- a/Project/Project.mk +++ b/Project/Project.mk @@ -13,7 +13,7 @@ CurrentFileName := CurrentFilePath := CurrentFileFullPath := User :=Thales -Date :=01/12/2016 +Date :=09/12/2016 CodeLitePath :="C:/Program Files/CodeLite" LinkerName :=C:/TDM-GCC-64/bin/g++.exe SharedObjectLinkerName :=C:/TDM-GCC-64/bin/g++.exe -shared -fPIC @@ -104,7 +104,7 @@ $(IntermediateDirectory)/main.cpp$(DependSuffix): main.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/main.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/main.cpp$(DependSuffix) -MM main.cpp $(IntermediateDirectory)/main.cpp$(PreprocessSuffix): main.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/main.cpp$(PreprocessSuffix)main.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/main.cpp$(PreprocessSuffix) main.cpp $(IntermediateDirectory)/win_resources.rc$(ObjectSuffix): win_resources.rc $(RcCompilerName) -i "C:/Users/Thales/Documents/GitHub/PSP/Project/win_resources.rc" $(RcCmpOptions) $(ObjectSwitch)$(IntermediateDirectory)/win_resources.rc$(ObjectSuffix) $(RcIncludePath) @@ -114,7 +114,7 @@ $(IntermediateDirectory)/Text.cpp$(DependSuffix): Text.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Text.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Text.cpp$(DependSuffix) -MM Text.cpp $(IntermediateDirectory)/Text.cpp$(PreprocessSuffix): Text.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Text.cpp$(PreprocessSuffix)Text.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Text.cpp$(PreprocessSuffix) Text.cpp $(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix): ArtMetro.cpp $(IntermediateDirectory)/ArtMetro.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/ArtMetro.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix) $(IncludePath) @@ -122,7 +122,7 @@ $(IntermediateDirectory)/ArtMetro.cpp$(DependSuffix): ArtMetro.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/ArtMetro.cpp$(DependSuffix) -MM ArtMetro.cpp $(IntermediateDirectory)/ArtMetro.cpp$(PreprocessSuffix): ArtMetro.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ArtMetro.cpp$(PreprocessSuffix)ArtMetro.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ArtMetro.cpp$(PreprocessSuffix) ArtMetro.cpp $(IntermediateDirectory)/wxGLString.cpp$(ObjectSuffix): wxGLString.cpp $(IntermediateDirectory)/wxGLString.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/wxGLString.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/wxGLString.cpp$(ObjectSuffix) $(IncludePath) @@ -130,7 +130,7 @@ $(IntermediateDirectory)/wxGLString.cpp$(DependSuffix): wxGLString.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/wxGLString.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/wxGLString.cpp$(DependSuffix) -MM wxGLString.cpp $(IntermediateDirectory)/wxGLString.cpp$(PreprocessSuffix): wxGLString.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/wxGLString.cpp$(PreprocessSuffix)wxGLString.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/wxGLString.cpp$(PreprocessSuffix) wxGLString.cpp $(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix): MainFrame.cpp $(IntermediateDirectory)/MainFrame.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/MainFrame.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix) $(IncludePath) @@ -138,7 +138,7 @@ $(IntermediateDirectory)/MainFrame.cpp$(DependSuffix): MainFrame.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/MainFrame.cpp$(DependSuffix) -MM MainFrame.cpp $(IntermediateDirectory)/MainFrame.cpp$(PreprocessSuffix): MainFrame.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/MainFrame.cpp$(PreprocessSuffix)MainFrame.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/MainFrame.cpp$(PreprocessSuffix) MainFrame.cpp $(IntermediateDirectory)/Workspace.cpp$(ObjectSuffix): Workspace.cpp $(IntermediateDirectory)/Workspace.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Workspace.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Workspace.cpp$(ObjectSuffix) $(IncludePath) @@ -146,7 +146,7 @@ $(IntermediateDirectory)/Workspace.cpp$(DependSuffix): Workspace.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Workspace.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Workspace.cpp$(DependSuffix) -MM Workspace.cpp $(IntermediateDirectory)/Workspace.cpp$(PreprocessSuffix): Workspace.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Workspace.cpp$(PreprocessSuffix)Workspace.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Workspace.cpp$(PreprocessSuffix) Workspace.cpp $(IntermediateDirectory)/MainFrameBitmaps.cpp$(ObjectSuffix): MainFrameBitmaps.cpp $(IntermediateDirectory)/MainFrameBitmaps.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/MainFrameBitmaps.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/MainFrameBitmaps.cpp$(ObjectSuffix) $(IncludePath) @@ -154,7 +154,7 @@ $(IntermediateDirectory)/MainFrameBitmaps.cpp$(DependSuffix): MainFrameBitmaps.c @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/MainFrameBitmaps.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/MainFrameBitmaps.cpp$(DependSuffix) -MM MainFrameBitmaps.cpp $(IntermediateDirectory)/MainFrameBitmaps.cpp$(PreprocessSuffix): MainFrameBitmaps.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/MainFrameBitmaps.cpp$(PreprocessSuffix)MainFrameBitmaps.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/MainFrameBitmaps.cpp$(PreprocessSuffix) MainFrameBitmaps.cpp $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(ObjectSuffix): WorkspaceBitmaps.cpp $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/WorkspaceBitmaps.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/WorkspaceBitmaps.cpp$(ObjectSuffix) $(IncludePath) @@ -162,7 +162,7 @@ $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(DependSuffix): WorkspaceBitmaps.c @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/WorkspaceBitmaps.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/WorkspaceBitmaps.cpp$(DependSuffix) -MM WorkspaceBitmaps.cpp $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(PreprocessSuffix): WorkspaceBitmaps.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(PreprocessSuffix)WorkspaceBitmaps.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(PreprocessSuffix) WorkspaceBitmaps.cpp $(IntermediateDirectory)/BusFormBitmaps.cpp$(ObjectSuffix): BusFormBitmaps.cpp $(IntermediateDirectory)/BusFormBitmaps.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/BusFormBitmaps.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/BusFormBitmaps.cpp$(ObjectSuffix) $(IncludePath) @@ -170,7 +170,7 @@ $(IntermediateDirectory)/BusFormBitmaps.cpp$(DependSuffix): BusFormBitmaps.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/BusFormBitmaps.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/BusFormBitmaps.cpp$(DependSuffix) -MM BusFormBitmaps.cpp $(IntermediateDirectory)/BusFormBitmaps.cpp$(PreprocessSuffix): BusFormBitmaps.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/BusFormBitmaps.cpp$(PreprocessSuffix)BusFormBitmaps.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/BusFormBitmaps.cpp$(PreprocessSuffix) BusFormBitmaps.cpp $(IntermediateDirectory)/ElementFormBitmaps.cpp$(ObjectSuffix): ElementFormBitmaps.cpp $(IntermediateDirectory)/ElementFormBitmaps.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/ElementFormBitmaps.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/ElementFormBitmaps.cpp$(ObjectSuffix) $(IncludePath) @@ -178,7 +178,7 @@ $(IntermediateDirectory)/ElementFormBitmaps.cpp$(DependSuffix): ElementFormBitma @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/ElementFormBitmaps.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/ElementFormBitmaps.cpp$(DependSuffix) -MM ElementFormBitmaps.cpp $(IntermediateDirectory)/ElementFormBitmaps.cpp$(PreprocessSuffix): ElementFormBitmaps.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ElementFormBitmaps.cpp$(PreprocessSuffix)ElementFormBitmaps.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ElementFormBitmaps.cpp$(PreprocessSuffix) ElementFormBitmaps.cpp $(IntermediateDirectory)/MainFrameBase.cpp$(ObjectSuffix): MainFrameBase.cpp $(IntermediateDirectory)/MainFrameBase.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/MainFrameBase.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/MainFrameBase.cpp$(ObjectSuffix) $(IncludePath) @@ -186,7 +186,7 @@ $(IntermediateDirectory)/MainFrameBase.cpp$(DependSuffix): MainFrameBase.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/MainFrameBase.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/MainFrameBase.cpp$(DependSuffix) -MM MainFrameBase.cpp $(IntermediateDirectory)/MainFrameBase.cpp$(PreprocessSuffix): MainFrameBase.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/MainFrameBase.cpp$(PreprocessSuffix)MainFrameBase.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/MainFrameBase.cpp$(PreprocessSuffix) MainFrameBase.cpp $(IntermediateDirectory)/WorkspaceBase.cpp$(ObjectSuffix): WorkspaceBase.cpp $(IntermediateDirectory)/WorkspaceBase.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/WorkspaceBase.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/WorkspaceBase.cpp$(ObjectSuffix) $(IncludePath) @@ -194,7 +194,7 @@ $(IntermediateDirectory)/WorkspaceBase.cpp$(DependSuffix): WorkspaceBase.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/WorkspaceBase.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/WorkspaceBase.cpp$(DependSuffix) -MM WorkspaceBase.cpp $(IntermediateDirectory)/WorkspaceBase.cpp$(PreprocessSuffix): WorkspaceBase.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/WorkspaceBase.cpp$(PreprocessSuffix)WorkspaceBase.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/WorkspaceBase.cpp$(PreprocessSuffix) WorkspaceBase.cpp $(IntermediateDirectory)/ElementForm.cpp$(ObjectSuffix): ElementForm.cpp $(IntermediateDirectory)/ElementForm.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/ElementForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/ElementForm.cpp$(ObjectSuffix) $(IncludePath) @@ -202,7 +202,7 @@ $(IntermediateDirectory)/ElementForm.cpp$(DependSuffix): ElementForm.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/ElementForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/ElementForm.cpp$(DependSuffix) -MM ElementForm.cpp $(IntermediateDirectory)/ElementForm.cpp$(PreprocessSuffix): ElementForm.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ElementForm.cpp$(PreprocessSuffix)ElementForm.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ElementForm.cpp$(PreprocessSuffix) ElementForm.cpp $(IntermediateDirectory)/Bus.cpp$(ObjectSuffix): Bus.cpp $(IntermediateDirectory)/Bus.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Bus.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Bus.cpp$(ObjectSuffix) $(IncludePath) @@ -210,7 +210,7 @@ $(IntermediateDirectory)/Bus.cpp$(DependSuffix): Bus.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Bus.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Bus.cpp$(DependSuffix) -MM Bus.cpp $(IntermediateDirectory)/Bus.cpp$(PreprocessSuffix): Bus.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Bus.cpp$(PreprocessSuffix)Bus.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Bus.cpp$(PreprocessSuffix) Bus.cpp $(IntermediateDirectory)/Line.cpp$(ObjectSuffix): Line.cpp $(IntermediateDirectory)/Line.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Line.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Line.cpp$(ObjectSuffix) $(IncludePath) @@ -218,7 +218,7 @@ $(IntermediateDirectory)/Line.cpp$(DependSuffix): Line.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Line.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Line.cpp$(DependSuffix) -MM Line.cpp $(IntermediateDirectory)/Line.cpp$(PreprocessSuffix): Line.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Line.cpp$(PreprocessSuffix)Line.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Line.cpp$(PreprocessSuffix) Line.cpp $(IntermediateDirectory)/Transformer.cpp$(ObjectSuffix): Transformer.cpp $(IntermediateDirectory)/Transformer.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Transformer.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Transformer.cpp$(ObjectSuffix) $(IncludePath) @@ -226,7 +226,7 @@ $(IntermediateDirectory)/Transformer.cpp$(DependSuffix): Transformer.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Transformer.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Transformer.cpp$(DependSuffix) -MM Transformer.cpp $(IntermediateDirectory)/Transformer.cpp$(PreprocessSuffix): Transformer.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Transformer.cpp$(PreprocessSuffix)Transformer.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Transformer.cpp$(PreprocessSuffix) Transformer.cpp $(IntermediateDirectory)/Machines.cpp$(ObjectSuffix): Machines.cpp $(IntermediateDirectory)/Machines.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Machines.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Machines.cpp$(ObjectSuffix) $(IncludePath) @@ -234,7 +234,7 @@ $(IntermediateDirectory)/Machines.cpp$(DependSuffix): Machines.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Machines.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Machines.cpp$(DependSuffix) -MM Machines.cpp $(IntermediateDirectory)/Machines.cpp$(PreprocessSuffix): Machines.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Machines.cpp$(PreprocessSuffix)Machines.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Machines.cpp$(PreprocessSuffix) Machines.cpp $(IntermediateDirectory)/SyncGenerator.cpp$(ObjectSuffix): SyncGenerator.cpp $(IntermediateDirectory)/SyncGenerator.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/SyncGenerator.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/SyncGenerator.cpp$(ObjectSuffix) $(IncludePath) @@ -242,7 +242,7 @@ $(IntermediateDirectory)/SyncGenerator.cpp$(DependSuffix): SyncGenerator.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/SyncGenerator.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/SyncGenerator.cpp$(DependSuffix) -MM SyncGenerator.cpp $(IntermediateDirectory)/SyncGenerator.cpp$(PreprocessSuffix): SyncGenerator.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SyncGenerator.cpp$(PreprocessSuffix)SyncGenerator.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SyncGenerator.cpp$(PreprocessSuffix) SyncGenerator.cpp $(IntermediateDirectory)/IndMotor.cpp$(ObjectSuffix): IndMotor.cpp $(IntermediateDirectory)/IndMotor.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/IndMotor.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/IndMotor.cpp$(ObjectSuffix) $(IncludePath) @@ -250,7 +250,7 @@ $(IntermediateDirectory)/IndMotor.cpp$(DependSuffix): IndMotor.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/IndMotor.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/IndMotor.cpp$(DependSuffix) -MM IndMotor.cpp $(IntermediateDirectory)/IndMotor.cpp$(PreprocessSuffix): IndMotor.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/IndMotor.cpp$(PreprocessSuffix)IndMotor.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/IndMotor.cpp$(PreprocessSuffix) IndMotor.cpp $(IntermediateDirectory)/Branch.cpp$(ObjectSuffix): Branch.cpp $(IntermediateDirectory)/Branch.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Branch.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Branch.cpp$(ObjectSuffix) $(IncludePath) @@ -258,7 +258,7 @@ $(IntermediateDirectory)/Branch.cpp$(DependSuffix): Branch.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Branch.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Branch.cpp$(DependSuffix) -MM Branch.cpp $(IntermediateDirectory)/Branch.cpp$(PreprocessSuffix): Branch.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Branch.cpp$(PreprocessSuffix)Branch.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Branch.cpp$(PreprocessSuffix) Branch.cpp $(IntermediateDirectory)/SyncMotor.cpp$(ObjectSuffix): SyncMotor.cpp $(IntermediateDirectory)/SyncMotor.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/SyncMotor.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/SyncMotor.cpp$(ObjectSuffix) $(IncludePath) @@ -266,7 +266,7 @@ $(IntermediateDirectory)/SyncMotor.cpp$(DependSuffix): SyncMotor.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/SyncMotor.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/SyncMotor.cpp$(DependSuffix) -MM SyncMotor.cpp $(IntermediateDirectory)/SyncMotor.cpp$(PreprocessSuffix): SyncMotor.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SyncMotor.cpp$(PreprocessSuffix)SyncMotor.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SyncMotor.cpp$(PreprocessSuffix) SyncMotor.cpp $(IntermediateDirectory)/Shunt.cpp$(ObjectSuffix): Shunt.cpp $(IntermediateDirectory)/Shunt.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Shunt.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Shunt.cpp$(ObjectSuffix) $(IncludePath) @@ -274,7 +274,7 @@ $(IntermediateDirectory)/Shunt.cpp$(DependSuffix): Shunt.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Shunt.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Shunt.cpp$(DependSuffix) -MM Shunt.cpp $(IntermediateDirectory)/Shunt.cpp$(PreprocessSuffix): Shunt.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Shunt.cpp$(PreprocessSuffix)Shunt.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Shunt.cpp$(PreprocessSuffix) Shunt.cpp $(IntermediateDirectory)/Load.cpp$(ObjectSuffix): Load.cpp $(IntermediateDirectory)/Load.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Load.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Load.cpp$(ObjectSuffix) $(IncludePath) @@ -282,7 +282,7 @@ $(IntermediateDirectory)/Load.cpp$(DependSuffix): Load.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Load.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Load.cpp$(DependSuffix) -MM Load.cpp $(IntermediateDirectory)/Load.cpp$(PreprocessSuffix): Load.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Load.cpp$(PreprocessSuffix)Load.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Load.cpp$(PreprocessSuffix) Load.cpp $(IntermediateDirectory)/Inductor.cpp$(ObjectSuffix): Inductor.cpp $(IntermediateDirectory)/Inductor.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Inductor.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Inductor.cpp$(ObjectSuffix) $(IncludePath) @@ -290,7 +290,7 @@ $(IntermediateDirectory)/Inductor.cpp$(DependSuffix): Inductor.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Inductor.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Inductor.cpp$(DependSuffix) -MM Inductor.cpp $(IntermediateDirectory)/Inductor.cpp$(PreprocessSuffix): Inductor.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Inductor.cpp$(PreprocessSuffix)Inductor.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Inductor.cpp$(PreprocessSuffix) Inductor.cpp $(IntermediateDirectory)/Capacitor.cpp$(ObjectSuffix): Capacitor.cpp $(IntermediateDirectory)/Capacitor.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Capacitor.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Capacitor.cpp$(ObjectSuffix) $(IncludePath) @@ -298,7 +298,7 @@ $(IntermediateDirectory)/Capacitor.cpp$(DependSuffix): Capacitor.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Capacitor.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Capacitor.cpp$(DependSuffix) -MM Capacitor.cpp $(IntermediateDirectory)/Capacitor.cpp$(PreprocessSuffix): Capacitor.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Capacitor.cpp$(PreprocessSuffix)Capacitor.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Capacitor.cpp$(PreprocessSuffix) Capacitor.cpp $(IntermediateDirectory)/Element.cpp$(ObjectSuffix): Element.cpp $(IntermediateDirectory)/Element.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Element.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Element.cpp$(ObjectSuffix) $(IncludePath) @@ -306,7 +306,7 @@ $(IntermediateDirectory)/Element.cpp$(DependSuffix): Element.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Element.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Element.cpp$(DependSuffix) -MM Element.cpp $(IntermediateDirectory)/Element.cpp$(PreprocessSuffix): Element.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Element.cpp$(PreprocessSuffix)Element.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Element.cpp$(PreprocessSuffix) Element.cpp $(IntermediateDirectory)/ElectricCalculation.cpp$(ObjectSuffix): ElectricCalculation.cpp $(IntermediateDirectory)/ElectricCalculation.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/ElectricCalculation.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/ElectricCalculation.cpp$(ObjectSuffix) $(IncludePath) @@ -314,7 +314,7 @@ $(IntermediateDirectory)/ElectricCalculation.cpp$(DependSuffix): ElectricCalcula @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/ElectricCalculation.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/ElectricCalculation.cpp$(DependSuffix) -MM ElectricCalculation.cpp $(IntermediateDirectory)/ElectricCalculation.cpp$(PreprocessSuffix): ElectricCalculation.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ElectricCalculation.cpp$(PreprocessSuffix)ElectricCalculation.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ElectricCalculation.cpp$(PreprocessSuffix) ElectricCalculation.cpp $(IntermediateDirectory)/PowerFlow.cpp$(ObjectSuffix): PowerFlow.cpp $(IntermediateDirectory)/PowerFlow.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/PowerFlow.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/PowerFlow.cpp$(ObjectSuffix) $(IncludePath) @@ -322,7 +322,7 @@ $(IntermediateDirectory)/PowerFlow.cpp$(DependSuffix): PowerFlow.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/PowerFlow.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/PowerFlow.cpp$(DependSuffix) -MM PowerFlow.cpp $(IntermediateDirectory)/PowerFlow.cpp$(PreprocessSuffix): PowerFlow.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/PowerFlow.cpp$(PreprocessSuffix)PowerFlow.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/PowerFlow.cpp$(PreprocessSuffix) PowerFlow.cpp $(IntermediateDirectory)/BusForm.cpp$(ObjectSuffix): BusForm.cpp $(IntermediateDirectory)/BusForm.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/BusForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/BusForm.cpp$(ObjectSuffix) $(IncludePath) @@ -330,7 +330,7 @@ $(IntermediateDirectory)/BusForm.cpp$(DependSuffix): BusForm.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/BusForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/BusForm.cpp$(DependSuffix) -MM BusForm.cpp $(IntermediateDirectory)/BusForm.cpp$(PreprocessSuffix): BusForm.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/BusForm.cpp$(PreprocessSuffix)BusForm.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/BusForm.cpp$(PreprocessSuffix) BusForm.cpp $(IntermediateDirectory)/GeneratorStabForm.cpp$(ObjectSuffix): GeneratorStabForm.cpp $(IntermediateDirectory)/GeneratorStabForm.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/GeneratorStabForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/GeneratorStabForm.cpp$(ObjectSuffix) $(IncludePath) @@ -338,7 +338,7 @@ $(IntermediateDirectory)/GeneratorStabForm.cpp$(DependSuffix): GeneratorStabForm @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/GeneratorStabForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/GeneratorStabForm.cpp$(DependSuffix) -MM GeneratorStabForm.cpp $(IntermediateDirectory)/GeneratorStabForm.cpp$(PreprocessSuffix): GeneratorStabForm.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/GeneratorStabForm.cpp$(PreprocessSuffix)GeneratorStabForm.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/GeneratorStabForm.cpp$(PreprocessSuffix) GeneratorStabForm.cpp $(IntermediateDirectory)/LineForm.cpp$(ObjectSuffix): LineForm.cpp $(IntermediateDirectory)/LineForm.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/LineForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/LineForm.cpp$(ObjectSuffix) $(IncludePath) @@ -346,7 +346,7 @@ $(IntermediateDirectory)/LineForm.cpp$(DependSuffix): LineForm.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/LineForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/LineForm.cpp$(DependSuffix) -MM LineForm.cpp $(IntermediateDirectory)/LineForm.cpp$(PreprocessSuffix): LineForm.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/LineForm.cpp$(PreprocessSuffix)LineForm.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/LineForm.cpp$(PreprocessSuffix) LineForm.cpp $(IntermediateDirectory)/SwitchingForm.cpp$(ObjectSuffix): SwitchingForm.cpp $(IntermediateDirectory)/SwitchingForm.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/SwitchingForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/SwitchingForm.cpp$(ObjectSuffix) $(IncludePath) @@ -354,7 +354,7 @@ $(IntermediateDirectory)/SwitchingForm.cpp$(DependSuffix): SwitchingForm.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/SwitchingForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/SwitchingForm.cpp$(DependSuffix) -MM SwitchingForm.cpp $(IntermediateDirectory)/SwitchingForm.cpp$(PreprocessSuffix): SwitchingForm.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SwitchingForm.cpp$(PreprocessSuffix)SwitchingForm.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SwitchingForm.cpp$(PreprocessSuffix) SwitchingForm.cpp $(IntermediateDirectory)/TransformerForm.cpp$(ObjectSuffix): TransformerForm.cpp $(IntermediateDirectory)/TransformerForm.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/TransformerForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/TransformerForm.cpp$(ObjectSuffix) $(IncludePath) @@ -362,7 +362,7 @@ $(IntermediateDirectory)/TransformerForm.cpp$(DependSuffix): TransformerForm.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/TransformerForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/TransformerForm.cpp$(DependSuffix) -MM TransformerForm.cpp $(IntermediateDirectory)/TransformerForm.cpp$(PreprocessSuffix): TransformerForm.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/TransformerForm.cpp$(PreprocessSuffix)TransformerForm.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/TransformerForm.cpp$(PreprocessSuffix) TransformerForm.cpp $(IntermediateDirectory)/LoadForm.cpp$(ObjectSuffix): LoadForm.cpp $(IntermediateDirectory)/LoadForm.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/LoadForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/LoadForm.cpp$(ObjectSuffix) $(IncludePath) @@ -370,7 +370,7 @@ $(IntermediateDirectory)/LoadForm.cpp$(DependSuffix): LoadForm.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/LoadForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/LoadForm.cpp$(DependSuffix) -MM LoadForm.cpp $(IntermediateDirectory)/LoadForm.cpp$(PreprocessSuffix): LoadForm.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/LoadForm.cpp$(PreprocessSuffix)LoadForm.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/LoadForm.cpp$(PreprocessSuffix) LoadForm.cpp $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(ObjectSuffix): ReactiveShuntElementForm.cpp $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/ReactiveShuntElementForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(ObjectSuffix) $(IncludePath) @@ -378,7 +378,7 @@ $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(DependSuffix): ReactiveSh @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(DependSuffix) -MM ReactiveShuntElementForm.cpp $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(PreprocessSuffix): ReactiveShuntElementForm.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(PreprocessSuffix)ReactiveShuntElementForm.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(PreprocessSuffix) ReactiveShuntElementForm.cpp $(IntermediateDirectory)/IndMotorForm.cpp$(ObjectSuffix): IndMotorForm.cpp $(IntermediateDirectory)/IndMotorForm.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/IndMotorForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/IndMotorForm.cpp$(ObjectSuffix) $(IncludePath) @@ -386,7 +386,7 @@ $(IntermediateDirectory)/IndMotorForm.cpp$(DependSuffix): IndMotorForm.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/IndMotorForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/IndMotorForm.cpp$(DependSuffix) -MM IndMotorForm.cpp $(IntermediateDirectory)/IndMotorForm.cpp$(PreprocessSuffix): IndMotorForm.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/IndMotorForm.cpp$(PreprocessSuffix)IndMotorForm.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/IndMotorForm.cpp$(PreprocessSuffix) IndMotorForm.cpp $(IntermediateDirectory)/SyncMachineForm.cpp$(ObjectSuffix): SyncMachineForm.cpp $(IntermediateDirectory)/SyncMachineForm.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/SyncMachineForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/SyncMachineForm.cpp$(ObjectSuffix) $(IncludePath) @@ -394,7 +394,7 @@ $(IntermediateDirectory)/SyncMachineForm.cpp$(DependSuffix): SyncMachineForm.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/SyncMachineForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/SyncMachineForm.cpp$(DependSuffix) -MM SyncMachineForm.cpp $(IntermediateDirectory)/SyncMachineForm.cpp$(PreprocessSuffix): SyncMachineForm.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SyncMachineForm.cpp$(PreprocessSuffix)SyncMachineForm.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SyncMachineForm.cpp$(PreprocessSuffix) SyncMachineForm.cpp $(IntermediateDirectory)/TextForm.cpp$(ObjectSuffix): TextForm.cpp $(IntermediateDirectory)/TextForm.cpp$(DependSuffix) $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/TextForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/TextForm.cpp$(ObjectSuffix) $(IncludePath) @@ -402,7 +402,7 @@ $(IntermediateDirectory)/TextForm.cpp$(DependSuffix): TextForm.cpp @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/TextForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/TextForm.cpp$(DependSuffix) -MM TextForm.cpp $(IntermediateDirectory)/TextForm.cpp$(PreprocessSuffix): TextForm.cpp - $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/TextForm.cpp$(PreprocessSuffix)TextForm.cpp + $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/TextForm.cpp$(PreprocessSuffix) TextForm.cpp -include $(IntermediateDirectory)/*$(DependSuffix) diff --git a/Project/Release/Bus.cpp.o b/Project/Release/Bus.cpp.o Binary files differindex 03402fd..54c9c29 100644 --- a/Project/Release/Bus.cpp.o +++ b/Project/Release/Bus.cpp.o diff --git a/Project/Release/BusForm.cpp.o b/Project/Release/BusForm.cpp.o Binary files differindex 18094c0..3aff5ba 100644 --- a/Project/Release/BusForm.cpp.o +++ b/Project/Release/BusForm.cpp.o diff --git a/Project/Release/Capacitor.cpp.o b/Project/Release/Capacitor.cpp.o Binary files differindex 3cd8e8f..bbf9649 100644 --- a/Project/Release/Capacitor.cpp.o +++ b/Project/Release/Capacitor.cpp.o diff --git a/Project/Release/ElectricCalculation.cpp.o b/Project/Release/ElectricCalculation.cpp.o Binary files differindex 79d5b45..8fe31cc 100644 --- a/Project/Release/ElectricCalculation.cpp.o +++ b/Project/Release/ElectricCalculation.cpp.o diff --git a/Project/Release/Element.cpp.o b/Project/Release/Element.cpp.o Binary files differindex 99f0e28..76baaaf 100644 --- a/Project/Release/Element.cpp.o +++ b/Project/Release/Element.cpp.o diff --git a/Project/Release/ElementForm.cpp.o b/Project/Release/ElementForm.cpp.o Binary files differindex 2978138..a6cbbf8 100644 --- a/Project/Release/ElementForm.cpp.o +++ b/Project/Release/ElementForm.cpp.o diff --git a/Project/Release/GeneratorStabForm.cpp.o b/Project/Release/GeneratorStabForm.cpp.o Binary files differindex 9df90ab..6e3ecd6 100644 --- a/Project/Release/GeneratorStabForm.cpp.o +++ b/Project/Release/GeneratorStabForm.cpp.o diff --git a/Project/Release/IndMotor.cpp.o b/Project/Release/IndMotor.cpp.o Binary files differindex 4517019..c4ca27f 100644 --- a/Project/Release/IndMotor.cpp.o +++ b/Project/Release/IndMotor.cpp.o diff --git a/Project/Release/IndMotorForm.cpp.o b/Project/Release/IndMotorForm.cpp.o Binary files differindex 5e81863..876b22e 100644 --- a/Project/Release/IndMotorForm.cpp.o +++ b/Project/Release/IndMotorForm.cpp.o diff --git a/Project/Release/Inductor.cpp.o b/Project/Release/Inductor.cpp.o Binary files differindex 029ea12..f65788c 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 c1a688c..0fd9f2a 100644 --- a/Project/Release/Line.cpp.o +++ b/Project/Release/Line.cpp.o diff --git a/Project/Release/LineForm.cpp.o b/Project/Release/LineForm.cpp.o Binary files differindex 3de68d5..4e36059 100644 --- a/Project/Release/LineForm.cpp.o +++ b/Project/Release/LineForm.cpp.o diff --git a/Project/Release/Load.cpp.o b/Project/Release/Load.cpp.o Binary files differindex 8a96a09..c5641c2 100644 --- a/Project/Release/Load.cpp.o +++ b/Project/Release/Load.cpp.o diff --git a/Project/Release/LoadForm.cpp.o b/Project/Release/LoadForm.cpp.o Binary files differindex 4bda98b..ed59b46 100644 --- a/Project/Release/LoadForm.cpp.o +++ b/Project/Release/LoadForm.cpp.o diff --git a/Project/Release/MainFrame.cpp.o b/Project/Release/MainFrame.cpp.o Binary files differindex aaefcd8..e852390 100644 --- a/Project/Release/MainFrame.cpp.o +++ b/Project/Release/MainFrame.cpp.o diff --git a/Project/Release/MainFrameBase.cpp.o b/Project/Release/MainFrameBase.cpp.o Binary files differindex ec938af..3cf1c3e 100644 --- a/Project/Release/MainFrameBase.cpp.o +++ b/Project/Release/MainFrameBase.cpp.o diff --git a/Project/Release/PSP-UFU.exe b/Project/Release/PSP-UFU.exe Binary files differindex 21bdf85..299db58 100644 --- a/Project/Release/PSP-UFU.exe +++ b/Project/Release/PSP-UFU.exe diff --git a/Project/Release/PowerFlow.cpp.o b/Project/Release/PowerFlow.cpp.o Binary files differindex e284cdc..3f8ce8e 100644 --- a/Project/Release/PowerFlow.cpp.o +++ b/Project/Release/PowerFlow.cpp.o diff --git a/Project/Release/ReactiveShuntElementForm.cpp.o b/Project/Release/ReactiveShuntElementForm.cpp.o Binary files differindex a4f9911..1ce9ee8 100644 --- a/Project/Release/ReactiveShuntElementForm.cpp.o +++ b/Project/Release/ReactiveShuntElementForm.cpp.o diff --git a/Project/Release/SwitchingForm.cpp.o b/Project/Release/SwitchingForm.cpp.o Binary files differindex 38b5227..88c8520 100644 --- a/Project/Release/SwitchingForm.cpp.o +++ b/Project/Release/SwitchingForm.cpp.o diff --git a/Project/Release/SyncGenerator.cpp.o b/Project/Release/SyncGenerator.cpp.o Binary files differindex d0c6b6e..df5cc88 100644 --- a/Project/Release/SyncGenerator.cpp.o +++ b/Project/Release/SyncGenerator.cpp.o diff --git a/Project/Release/SyncMachineForm.cpp.o b/Project/Release/SyncMachineForm.cpp.o Binary files differindex b5971fd..a2afa10 100644 --- a/Project/Release/SyncMachineForm.cpp.o +++ b/Project/Release/SyncMachineForm.cpp.o diff --git a/Project/Release/SyncMotor.cpp.o b/Project/Release/SyncMotor.cpp.o Binary files differindex 1d035f2..dfeab4c 100644 --- a/Project/Release/SyncMotor.cpp.o +++ b/Project/Release/SyncMotor.cpp.o diff --git a/Project/Release/Text.cpp.o b/Project/Release/Text.cpp.o Binary files differindex 7071037..830aa66 100644 --- a/Project/Release/Text.cpp.o +++ b/Project/Release/Text.cpp.o diff --git a/Project/Release/TextForm.cpp.o b/Project/Release/TextForm.cpp.o Binary files differindex f32f85f..26381da 100644 --- a/Project/Release/TextForm.cpp.o +++ b/Project/Release/TextForm.cpp.o diff --git a/Project/Release/Transformer.cpp.o b/Project/Release/Transformer.cpp.o Binary files differindex d4555cd..3c97848 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 adc3c49..50fbf8c 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 26ee31e..9a16fe7 100644 --- a/Project/Release/Workspace.cpp.o +++ b/Project/Release/Workspace.cpp.o diff --git a/Project/Release/main.cpp.o b/Project/Release/main.cpp.o Binary files differindex e27c6a6..9925528 100644 --- a/Project/Release/main.cpp.o +++ b/Project/Release/main.cpp.o diff --git a/Project/Release/wxmsw310u_gcc_64x.dll b/Project/Release/wxmsw310u_gcc_64x.dll Binary files differindex 06cdd5c..ca43121 100644 --- a/Project/Release/wxmsw310u_gcc_64x.dll +++ b/Project/Release/wxmsw310u_gcc_64x.dll diff --git a/Project/Release/wxmsw310u_gl_gcc_64x.dll b/Project/Release/wxmsw310u_gl_gcc_64x.dll Binary files differindex cfe5014..f9e60dd 100644 --- a/Project/Release/wxmsw310u_gl_gcc_64x.dll +++ b/Project/Release/wxmsw310u_gl_gcc_64x.dll diff --git a/Project/SyncGenerator.cpp b/Project/SyncGenerator.cpp index b655364..463c56d 100644 --- a/Project/SyncGenerator.cpp +++ b/Project/SyncGenerator.cpp @@ -127,3 +127,11 @@ SyncGeneratorElectricalData SyncGenerator::GetPUElectricalData(double systemPowe return data; } + +void SyncGenerator::SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit) +{ + if(nominalVoltage.size() > 0) { + m_electricalData.nominalVoltage = nominalVoltage[0]; + m_electricalData.nominalVoltageUnit = nominalVoltageUnit[0]; + } +} diff --git a/Project/SyncGenerator.h b/Project/SyncGenerator.h index 98c0ce1..0ff3f6a 100644 --- a/Project/SyncGenerator.h +++ b/Project/SyncGenerator.h @@ -5,12 +5,13 @@ class SyncMachineForm; -struct SyncGeneratorElectricalData -{ +struct SyncGeneratorElectricalData { // General wxString name = ""; double nominalPower = 100.0; ElectricalUnit nominalPowerUnit = UNIT_MVA; + double nominalVoltage = 13.8; + ElectricalUnit nominalVoltageUnit = UNIT_kV; double activePower = 100.0; ElectricalUnit activePowerUnit = UNIT_MW; double reactivePower = 0.0; @@ -33,6 +34,9 @@ struct SyncGeneratorElectricalData double groundResistance = 0.0; double groundReactance = 0.0; bool groundNeutral = true; + // p.u. fault data + std::complex<double> faultCurrent[3] = { std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0), + std::complex<double>(0.0, 0.0) }; // Stability bool plotSyncMachine = false; @@ -59,22 +63,23 @@ struct SyncGeneratorElectricalData class SyncGenerator : public Machines { - public: +public: SyncGenerator(); - SyncGenerator(wxString name); + SyncGenerator(wxString name); ~SyncGenerator(); - - virtual void Init(); + + virtual void Init(); virtual void DrawSymbol() const; virtual bool GetContextMenu(wxMenu& menu); virtual bool ShowForm(wxWindow* parent, Element* element); virtual SyncGeneratorElectricalData GetElectricalData() { return m_electricalData; } - virtual SyncGeneratorElectricalData GetPUElectricalData(double systemPowerBase); + virtual SyncGeneratorElectricalData GetPUElectricalData(double systemPowerBase); virtual void SetElectricalData(SyncGeneratorElectricalData electricalData) { m_electricalData = electricalData; } - protected: + virtual void SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit); +protected: std::vector<wxPoint2DDouble> m_sinePts; SyncGeneratorElectricalData m_electricalData; }; -#endif // SYNCGENERATOR_H +#endif // SYNCGENERATOR_H diff --git a/Project/Text.cpp b/Project/Text.cpp index 2d8e85c..411520f 100644 --- a/Project/Text.cpp +++ b/Project/Text.cpp @@ -12,8 +12,13 @@ #include "Inductor.h" #include "Capacitor.h" -Text::Text() : Element() { SetText(m_text); } -Text::Text(wxPoint2DDouble position) : Element() +Text::Text() + : Element() +{ + SetText(m_text); +} +Text::Text(wxPoint2DDouble position) + : Element() { SetText(m_text); SetPosition(position); @@ -29,31 +34,44 @@ bool Text::Contains(wxPoint2DDouble position) const void Text::Draw(wxPoint2DDouble translation, double scale) { wxScreenDC dc; - + // Draw selection rectangle - + // Push the current matrix on stack. glPushMatrix(); // Rotate the matrix around the object position. glTranslated(m_position.m_x, m_position.m_y, 0.0); glRotated(m_angle, 0.0, 0.0, 1.0); glTranslated(-m_position.m_x, -m_position.m_y, 0.0); - + if(m_selected) { glColor4d(0.0, 0.5, 1.0, 0.5); - DrawRectangle(m_position + wxPoint2DDouble(m_borderSize / 2.0, m_borderSize / 2.0), m_rect.m_width, - m_rect.m_height); + DrawRectangle( + m_position + wxPoint2DDouble(m_borderSize / 2.0, m_borderSize / 2.0), m_rect.m_width, m_rect.m_height); } - - // Draw text (layer 2) + // Draw text (layer 2) glColor4d(0.0, 0.0, 0.0, 1.0); - wxGLString glString(m_text); - glString.setFont(wxFont(m_fontSize, wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL)); - glString.consolidate(&dc); - glString.bind(); - glString.render(m_position.m_x, m_position.m_y); - + if(!m_isMultlineText) { // Only one line + wxGLString glString(m_text); + glString.setFont(wxFont(m_fontSize, wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL)); + glString.consolidate(&dc); + glString.bind(); + glString.render(m_position.m_x, m_position.m_y); + } else { // Multiples lines + wxGLStringArray glStringArray; + // Fill the string array. + for(int i = 0; i < (int)m_multlineText.size(); i++) glStringArray.addString(m_multlineText[i]); + glStringArray.setFont(wxFont(m_fontSize, wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL)); + glStringArray.consolidate(&dc); + glStringArray.bind(); + // The text will be printed centralized. + for(int i = 0; i < (int)m_multlineText.size(); i++) { + glStringArray.get(i).render(m_position.m_x, m_position.m_y - m_height / 2.0 + + glStringArray.get(i).getheight() * double(i) + glStringArray.get(i).getheight() / 2.0); + } + } + glPopMatrix(); } @@ -67,15 +85,44 @@ void Text::SetText(wxString text) { m_text = text; - // Generate a glString to get the text size. - wxGLString glString(m_text); - glString.setFont(wxFont(m_fontSize, wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL)); - wxScreenDC dc; - glString.consolidate(&dc); - glString.bind(); + // Creating a glString to get the text size. + int numberOfLines = m_text.Freq('\n') + 1; + if(numberOfLines == 1) { // Only one line + m_isMultlineText = false; + wxGLString glString(m_text); + glString.setFont(wxFont(m_fontSize, wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL)); + wxScreenDC dc; + glString.consolidate(&dc); + glString.bind(); - m_width = glString.getWidth(); - m_height = glString.getheight(); + m_width = glString.getWidth(); + m_height = glString.getheight(); + } else { + m_isMultlineText = true; + m_multlineText.clear(); + wxString text = m_text; + double w = 0.0, h = 0.0; + for(int i = 0; i < numberOfLines; ++i) { + wxString nextLine; + wxString currentLine = text.BeforeFirst('\n', &nextLine); + text = nextLine; + m_multlineText.push_back(currentLine); + + wxGLString glString(currentLine); + glString.setFont(wxFont(m_fontSize, wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL)); + wxScreenDC dc; + glString.consolidate(&dc); + glString.bind(); + + if(w < glString.getWidth()) w = glString.getWidth(); // Get the major width. + h = glString.getheight(); + } + m_width = w; + m_height = h * (double)numberOfLines; + } + + // Update text rectangle. + SetPosition(m_position); } void Text::Rotate(bool clockwise) @@ -101,40 +148,749 @@ bool Text::ShowForm(wxWindow* parent, std::vector<Element*> elementList) void Text::UpdateText(double systemPowerBase) { switch(m_elementType) { + case TYPE_NONE: + break; case TYPE_BUS: { Bus* bus = (Bus*)m_element; if(bus) { + BusElectricalData data = bus->GetEletricalData(); + double baseVoltage = data.nominalVoltage; + if(data.nominalVoltageUnit == UNIT_kV) baseVoltage *= 1e3; + double baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage); + switch(m_dataType) { case DATA_NAME: { SetText(bus->GetEletricalData().name); - wxLogMessage(m_text); } break; + case DATA_VOLTAGE: { + double voltage = std::abs(data.voltage); + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(voltage, m_decimalPlaces) + " p.u."); + } break; + case UNIT_V: { + SetText(wxString::FromDouble(voltage * baseVoltage, m_decimalPlaces) + " V"); + } break; + case UNIT_kV: { + SetText(wxString::FromDouble(voltage * baseVoltage / 1e3, m_decimalPlaces) + " kV"); + } break; + default: + break; + } + } break; + case DATA_ANGLE: { + double angle = std::arg(data.voltage); + switch(m_unit) { + case UNIT_RADIAN: { + SetText(wxString::FromDouble(angle, m_decimalPlaces) + " rad"); + } break; + case UNIT_DEGREE: { + SetText(wxString::FromDouble(wxRadToDeg(angle), m_decimalPlaces) + (wxString)L'\u00B0'); + } break; + default: + break; + } + } break; + case DATA_SC_CURRENT: { + double faultCurrent[3] = { std::abs(data.faultCurrent[0]), std::abs(data.faultCurrent[1]), + std::abs(data.faultCurrent[2]) }; + switch(m_unit) { + case UNIT_PU: { + wxString str = + "Ia = " + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + " p.u."; + str += "\nIb = " + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + " p.u."; + str += "\nIc = " + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + " p.u."; + SetText(str); + } break; + case UNIT_A: { + wxString str = "Ia = " + + wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) + " A"; + str += "\nIb = " + + wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + " A"; + str += "\nIc = " + + wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + " A"; + SetText(str); + } break; + case UNIT_kA: { + wxString str = "Ia = " + + wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + " kA"; + str += "\nIb = " + + wxString::FromDouble(faultCurrent[1] * baseCurrent / 1e3, m_decimalPlaces) + " kA"; + str += "\nIc = " + + wxString::FromDouble(faultCurrent[2] * baseCurrent / 1e3, m_decimalPlaces) + " kA"; + SetText(str); + } break; + default: + break; + } + } break; + case DATA_SC_VOLTAGE: { + double faultVoltage[3] = { std::abs(data.faultVoltage[0]), std::abs(data.faultVoltage[1]), + std::abs(data.faultVoltage[2]) }; + switch(m_unit) { + case UNIT_PU: { + wxString str = + "Va = " + wxString::FromDouble(faultVoltage[0], m_decimalPlaces) + " p.u."; + str += "\nVb = " + wxString::FromDouble(faultVoltage[1], m_decimalPlaces) + " p.u."; + str += "\nVc = " + wxString::FromDouble(faultVoltage[2], m_decimalPlaces) + " p.u."; + SetText(str); + } break; + case UNIT_V: { + wxString str = "Va = " + + wxString::FromDouble(faultVoltage[0] * baseVoltage, m_decimalPlaces) + " V"; + str += "\nVb = " + + wxString::FromDouble(faultVoltage[1] * baseVoltage, m_decimalPlaces) + " V"; + str += "\nVc = " + + wxString::FromDouble(faultVoltage[2] * baseVoltage, m_decimalPlaces) + " V"; + SetText(str); + } break; + case UNIT_kV: { + wxString str = "Va = " + + wxString::FromDouble(faultVoltage[0] * baseVoltage / 1e3, m_decimalPlaces) + " kV"; + str += "\nVb = " + + wxString::FromDouble(faultVoltage[1] * baseVoltage / 1e3, m_decimalPlaces) + " kV"; + str += "\nVc = " + + wxString::FromDouble(faultVoltage[2] * baseVoltage / 1e3, m_decimalPlaces) + " kV"; + SetText(str); + } break; + default: + break; + } + } break; + case DATA_SC_POWER: { + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(data.scPower, m_decimalPlaces) + " p.u."); + } break; + case UNIT_VA: { + SetText(wxString::FromDouble(data.scPower * systemPowerBase, m_decimalPlaces) + " VA"); + } break; + case UNIT_kVA: { + SetText(wxString::FromDouble(data.scPower * systemPowerBase / 1e3, m_decimalPlaces) + + " kVA"); + } break; + case UNIT_MVA: { + SetText(wxString::FromDouble(data.scPower * systemPowerBase / 1e6, m_decimalPlaces) + + " MVA"); + } break; + default: + break; + } + } break; + default: + break; } } } break; case TYPE_SYNC_GENERATOR: { - + SyncGenerator* syncGenerator = (SyncGenerator*)m_element; + if(syncGenerator) { + SyncGeneratorElectricalData data = syncGenerator->GetPUElectricalData(systemPowerBase); + double baseVoltage = data.nominalVoltage; + if(data.nominalVoltageUnit == UNIT_kV) baseVoltage *= 1e3; + double baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage); + switch(m_dataType) { + case DATA_NAME: { + SetText(data.name); + } break; + case DATA_ACTIVE_POWER: { + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(data.activePower, m_decimalPlaces) + " p.u."); + } break; + case UNIT_W: { + SetText( + wxString::FromDouble(data.activePower * systemPowerBase, m_decimalPlaces) + " W"); + } break; + case UNIT_kW: { + SetText( + wxString::FromDouble(data.activePower * systemPowerBase / 1e3, m_decimalPlaces) + + " kW"); + } break; + case UNIT_MW: { + SetText( + wxString::FromDouble(data.activePower * systemPowerBase / 1e6, m_decimalPlaces) + + " MW"); + } break; + default: + break; + } + } break; + case DATA_REACTIVE_POWER: { + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(data.reactivePower, m_decimalPlaces) + " p.u."); + } break; + case UNIT_VAr: { + SetText(wxString::FromDouble(data.reactivePower * systemPowerBase, m_decimalPlaces) + + " VAr"); + } break; + case UNIT_kVAr: { + SetText( + wxString::FromDouble(data.reactivePower * systemPowerBase / 1e3, m_decimalPlaces) + + " kVAr"); + } break; + case UNIT_MVAr: { + SetText( + wxString::FromDouble(data.reactivePower * systemPowerBase / 1e6, m_decimalPlaces) + + " MVAr"); + } break; + default: + break; + } + } break; + case DATA_SC_CURRENT: { + double faultCurrent[3] = { std::abs(data.faultCurrent[0]), std::abs(data.faultCurrent[1]), + std::abs(data.faultCurrent[2]) }; + switch(m_unit) { + case UNIT_PU: { + wxString str = + "Ia = " + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + " p.u."; + str += "\nIb = " + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + " p.u."; + str += "\nIc = " + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + " p.u."; + SetText(str); + } break; + case UNIT_A: { + wxString str = "Ia = " + + wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) + " A"; + str += "\nIb = " + + wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + " A"; + str += "\nIc = " + + wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + " A"; + SetText(str); + } break; + case UNIT_kA: { + wxString str = "Ia = " + + wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + " kA"; + str += "\nIb = " + + wxString::FromDouble(faultCurrent[1] * baseCurrent / 1e3, m_decimalPlaces) + " kA"; + str += "\nIc = " + + wxString::FromDouble(faultCurrent[2] * baseCurrent / 1e3, m_decimalPlaces) + " kA"; + SetText(str); + } break; + default: + break; + } + } break; + default: + break; + } + } } break; case TYPE_LINE: { - + Line* line = (Line*)m_element; + if(line) { + LineElectricalData data = line->GetElectricalData(); + double baseVoltage = data.nominalVoltage; + if(data.nominalVoltageUnit == UNIT_kV) baseVoltage *= 1e3; + double baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage); + switch(m_dataType) { + case DATA_NAME: { + SetText(data.name); + } break; + case DATA_PF_ACTIVE: { + double activePF = std::real(data.powerFlow[m_direction]); + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(activePF, m_decimalPlaces) + " p.u."); + } break; + case UNIT_W: { + SetText(wxString::FromDouble(activePF * systemPowerBase, m_decimalPlaces) + " W"); + } break; + case UNIT_kW: { + SetText( + wxString::FromDouble(activePF * systemPowerBase / 1e3, m_decimalPlaces) + " kW"); + } break; + case UNIT_MW: { + SetText( + wxString::FromDouble(activePF * systemPowerBase / 1e6, m_decimalPlaces) + " MW"); + } break; + default: + break; + } + } break; + case DATA_PF_REACTIVE: { + double reactivePF = std::imag(data.powerFlow[m_direction]); + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(reactivePF, m_decimalPlaces) + " p.u."); + } break; + case UNIT_VAr: { + SetText(wxString::FromDouble(reactivePF * systemPowerBase, m_decimalPlaces) + " VAr"); + } break; + case UNIT_kVAr: { + SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e3, m_decimalPlaces) + + " kVAr"); + } break; + case UNIT_MVAr: { + SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e6, m_decimalPlaces) + + " MVAr"); + } break; + default: + break; + } + } break; + case DATA_PF_LOSSES: { + double losses = std::abs(std::real(data.powerFlow[0]) + std::real(data.powerFlow[1])); + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(losses, m_decimalPlaces) + " p.u."); + } break; + case UNIT_W: { + SetText(wxString::FromDouble(losses * systemPowerBase, m_decimalPlaces) + " W"); + } break; + case UNIT_kW: { + SetText(wxString::FromDouble(losses * systemPowerBase / 1e3, m_decimalPlaces) + " kW"); + } break; + case UNIT_MW: { + SetText(wxString::FromDouble(losses * systemPowerBase / 1e6, m_decimalPlaces) + " MW"); + } break; + default: + break; + } + } break; + case DATA_PF_CURRENT: { + double current = std::abs(data.current[m_direction]); + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(current, m_decimalPlaces) + " p.u."); + } break; + case UNIT_A: { + SetText(wxString::FromDouble(current * baseCurrent, m_decimalPlaces) + " A"); + } break; + case UNIT_kA: { + SetText(wxString::FromDouble(current * baseCurrent / 1e3, m_decimalPlaces) + " kA"); + } break; + default: + break; + } + } break; + case DATA_SC_CURRENT: { + double faultCurrent[3] = { std::abs(data.faultCurrent[m_direction][0]), + std::abs(data.faultCurrent[m_direction][1]), std::abs(data.faultCurrent[m_direction][2]) }; + switch(m_unit) { + case UNIT_PU: { + wxString str = + "Ia = " + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + " p.u."; + str += "\nIb = " + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + " p.u."; + str += "\nIc = " + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + " p.u."; + SetText(str); + } break; + case UNIT_A: { + wxString str = "Ia = " + + wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) + " A"; + str += "\nIb = " + + wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + " A"; + str += "\nIc = " + + wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + " A"; + SetText(str); + } break; + case UNIT_kA: { + wxString str = "Ia = " + + wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + " kA"; + str += "\nIb = " + + wxString::FromDouble(faultCurrent[1] * baseCurrent / 1e3, m_decimalPlaces) + " kA"; + str += "\nIc = " + + wxString::FromDouble(faultCurrent[2] * baseCurrent / 1e3, m_decimalPlaces) + " kA"; + SetText(str); + } break; + default: + break; + } + } break; + default: + break; + } + } } break; case TYPE_TRANSFORMER: { - + Transformer* transformer = (Transformer*)m_element; + if(transformer) { + TransformerElectricalData data = transformer->GetElectricalData(); + double baseVoltage[2] = { data.primaryNominalVoltage, data.secondaryNominalVoltage }; + + if(data.primaryNominalVoltageUnit == UNIT_kV) baseVoltage[0] *= 1e3; + if(data.secondaryNominalVoltageUnit == UNIT_kV) baseVoltage[1] *= 1e3; + + double baseCurrent[2] = { systemPowerBase / (std::sqrt(3.0) * baseVoltage[0]), + systemPowerBase / (std::sqrt(3.0) * baseVoltage[1]) }; + switch(m_dataType) { + case DATA_NAME: { + SetText(data.name); + } break; + case DATA_PF_ACTIVE: { + double activePF = std::real(data.powerFlow[m_direction]); + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(activePF, m_decimalPlaces) + " p.u."); + } break; + case UNIT_W: { + SetText(wxString::FromDouble(activePF * systemPowerBase, m_decimalPlaces) + " W"); + } break; + case UNIT_kW: { + SetText( + wxString::FromDouble(activePF * systemPowerBase / 1e3, m_decimalPlaces) + " kW"); + } break; + case UNIT_MW: { + SetText( + wxString::FromDouble(activePF * systemPowerBase / 1e6, m_decimalPlaces) + " MW"); + } break; + default: + break; + } + } break; + case DATA_PF_REACTIVE: { + double reactivePF = std::imag(data.powerFlow[m_direction]); + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(reactivePF, m_decimalPlaces) + " p.u."); + } break; + case UNIT_VAr: { + SetText(wxString::FromDouble(reactivePF * systemPowerBase, m_decimalPlaces) + " VAr"); + } break; + case UNIT_kVAr: { + SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e3, m_decimalPlaces) + + " kVAr"); + } break; + case UNIT_MVAr: { + SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e6, m_decimalPlaces) + + " MVAr"); + } break; + default: + break; + } + } break; + case DATA_PF_LOSSES: { + double losses = std::abs(std::real(data.powerFlow[0]) + std::real(data.powerFlow[1])); + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(losses, m_decimalPlaces) + " p.u."); + } break; + case UNIT_W: { + SetText(wxString::FromDouble(losses * systemPowerBase, m_decimalPlaces) + " W"); + } break; + case UNIT_kW: { + SetText(wxString::FromDouble(losses * systemPowerBase / 1e3, m_decimalPlaces) + " kW"); + } break; + case UNIT_MW: { + SetText(wxString::FromDouble(losses * systemPowerBase / 1e6, m_decimalPlaces) + " MW"); + } break; + default: + break; + } + } break; + case DATA_PF_CURRENT: { + double current = std::abs(data.current[m_direction]); + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(current, m_decimalPlaces) + " p.u."); + } break; + case UNIT_A: { + SetText( + wxString::FromDouble(current * baseCurrent[m_direction], m_decimalPlaces) + " A"); + } break; + case UNIT_kA: { + SetText( + wxString::FromDouble(current * baseCurrent[m_direction] / 1e3, m_decimalPlaces) + + " kA"); + } break; + default: + break; + } + } break; + case DATA_SC_CURRENT: { + double faultCurrent[3] = { std::abs(data.faultCurrent[m_direction][0]), + std::abs(data.faultCurrent[m_direction][1]), std::abs(data.faultCurrent[m_direction][2]) }; + switch(m_unit) { + case UNIT_PU: { + wxString str = + "Ia = " + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + " p.u."; + str += "\nIb = " + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + " p.u."; + str += "\nIc = " + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + " p.u."; + SetText(str); + } break; + case UNIT_A: { + wxString str = "Ia = " + + wxString::FromDouble(faultCurrent[0] * baseCurrent[m_direction], m_decimalPlaces) + + " A"; + str += "\nIb = " + + wxString::FromDouble(faultCurrent[1] * baseCurrent[m_direction], m_decimalPlaces) + + " A"; + str += "\nIc = " + + wxString::FromDouble(faultCurrent[2] * baseCurrent[m_direction], m_decimalPlaces) + + " A"; + SetText(str); + } break; + case UNIT_kA: { + wxString str = "Ia = " + + wxString::FromDouble( + faultCurrent[0] * baseCurrent[m_direction] / 1e3, m_decimalPlaces) + + " kA"; + str += "\nIb = " + + wxString::FromDouble( + faultCurrent[1] * baseCurrent[m_direction] / 1e3, m_decimalPlaces) + + " kA"; + str += "\nIc = " + + wxString::FromDouble( + faultCurrent[2] * baseCurrent[m_direction] / 1e3, m_decimalPlaces) + + " kA"; + SetText(str); + } break; + default: + break; + } + } break; + default: + break; + } + } } break; case TYPE_LOAD: { - + Load* load = (Load*)m_element; + if(load) { + LoadElectricalData data = load->GetPUElectricalData(systemPowerBase); + std::complex<double> sPower(data.activePower, data.reactivePower); + if(data.loadType == CONST_IMPEDANCE && load->IsOnline()) { + std::complex<double> v = ((Bus*)load->GetParentList()[0])->GetEletricalData().voltage; + sPower = std::pow(std::abs(v), 2) * sPower; + } + switch(m_dataType) { + case DATA_NAME: { + SetText(data.name); + } break; + case DATA_ACTIVE_POWER: { + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + " p.u."); + } + case UNIT_W: { + SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + " W"); + } + case UNIT_kW: { + SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) + + " kW"); + } + case UNIT_MW: { + SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) + + " MW"); + } + default: + break; + } + } break; + case DATA_REACTIVE_POWER: { + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + " p.u."); + } + case UNIT_VAr: { + SetText( + wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) + " VAr"); + } + case UNIT_kVAr: { + SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) + + " kVAr"); + } + case UNIT_MVAr: { + SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) + + " MVAr"); + } + default: + break; + } + } break; + default: + break; + } + } } break; case TYPE_SYNC_MOTOR: { - + SyncMotor* syncMotor = (SyncMotor*)m_element; + if(syncMotor) { + SyncMotorElectricalData data = syncMotor->GetPUElectricalData(systemPowerBase); + std::complex<double> sPower(data.activePower, data.reactivePower); + switch(m_dataType) { + case DATA_NAME: { + SetText(data.name); + } break; + case DATA_ACTIVE_POWER: { + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + " p.u."); + } + case UNIT_W: { + SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + " W"); + } + case UNIT_kW: { + SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) + + " kW"); + } + case UNIT_MW: { + SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) + + " MW"); + } + default: + break; + } + } break; + case DATA_REACTIVE_POWER: { + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + " p.u."); + } + case UNIT_VAr: { + SetText( + wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) + " VAr"); + } + case UNIT_kVAr: { + SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) + + " kVAr"); + } + case UNIT_MVAr: { + SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) + + " MVAr"); + } + default: + break; + } + } break; + default: + break; + } + } } break; case TYPE_IND_MOTOR: { - + IndMotor* indMotor = (IndMotor*)m_element; + if(indMotor) { + IndMotorElectricalData data = indMotor->GetPUElectricalData(systemPowerBase); + std::complex<double> sPower(data.activePower, data.reactivePower); + switch(m_dataType) { + case DATA_NAME: { + SetText(data.name); + } break; + case DATA_ACTIVE_POWER: { + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + " p.u."); + } + case UNIT_W: { + SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + " W"); + } + case UNIT_kW: { + SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) + + " kW"); + } + case UNIT_MW: { + SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) + + " MW"); + } + default: + break; + } + } break; + case DATA_REACTIVE_POWER: { + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + " p.u."); + } + case UNIT_VAr: { + SetText( + wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) + " VAr"); + } + case UNIT_kVAr: { + SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) + + " kVAr"); + } + case UNIT_MVAr: { + SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) + + " MVAr"); + } + default: + break; + } + } break; + default: + break; + } + } } break; case TYPE_CAPACITOR: { - + Capacitor* capacitor = (Capacitor*)m_element; + if(capacitor) { + CapacitorElectricalData data = capacitor->GetPUElectricalData(systemPowerBase); + double reativePower = -data.reactivePower; + if(capacitor->IsOnline()) { + std::complex<double> v = ((Bus*)capacitor->GetParentList()[0])->GetEletricalData().voltage; + reativePower *= std::pow(std::abs(v), 2); + } + switch(m_dataType) { + case DATA_NAME: { + SetText(data.name); + } break; + case DATA_REACTIVE_POWER: { + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(reativePower, m_decimalPlaces) + " p.u."); + } + case UNIT_VAr: { + SetText( + wxString::FromDouble(reativePower * systemPowerBase, m_decimalPlaces) + " VAr"); + } + case UNIT_kVAr: { + SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e3, m_decimalPlaces) + + " kVAr"); + } + case UNIT_MVAr: { + SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e6, m_decimalPlaces) + + " MVAr"); + } + default: + break; + } + } break; + default: + break; + } + } } break; case TYPE_INDUCTOR: { - + Inductor* inductor = (Inductor*)m_element; + if(inductor) { + InductorElectricalData data = inductor->GetPUElectricalData(systemPowerBase); + double reativePower = data.reactivePower; + if(inductor->IsOnline()) { + std::complex<double> v = ((Bus*)inductor->GetParentList()[0])->GetEletricalData().voltage; + reativePower *= std::pow(std::abs(v), 2); + } + switch(m_dataType) { + case DATA_NAME: { + SetText(data.name); + } break; + case DATA_REACTIVE_POWER: { + switch(m_unit) { + case UNIT_PU: { + SetText(wxString::FromDouble(reativePower, m_decimalPlaces) + " p.u."); + } + case UNIT_VAr: { + SetText( + wxString::FromDouble(reativePower * systemPowerBase, m_decimalPlaces) + " VAr"); + } + case UNIT_kVAr: { + SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e3, m_decimalPlaces) + + " kVAr"); + } + case UNIT_MVAr: { + SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e6, m_decimalPlaces) + + " MVAr"); + } + default: + break; + } + } break; + default: + break; + } + } } break; } } diff --git a/Project/Text.h b/Project/Text.h index 2b10380..80f35fa 100644 --- a/Project/Text.h +++ b/Project/Text.h @@ -17,6 +17,7 @@ class Inductor; class Capacitor; enum ElementType { + TYPE_NONE = 0, TYPE_BUS, TYPE_CAPACITOR, TYPE_IND_MOTOR, @@ -79,15 +80,17 @@ class Text : public Element protected: wxString m_text = _("Text"); + std::vector<wxString> m_multlineText; + bool m_isMultlineText = false; int m_fontSize = 10; Element* m_element = NULL; - ElementType m_elementType; + ElementType m_elementType = TYPE_NONE; int m_elementNumber; DataType m_dataType; ElectricalUnit m_unit; - int m_direction; - int m_decimalPlaces; + int m_direction = 0; + int m_decimalPlaces = 2; }; #endif // TEXT_H diff --git a/Project/TextForm.cpp b/Project/TextForm.cpp index 2fd9c9f..148847a 100644 --- a/Project/TextForm.cpp +++ b/Project/TextForm.cpp @@ -4,15 +4,26 @@ TextForm::TextForm(wxWindow* parent, Text* text, std::vector<Element*> elementLi : TextFormBase(parent) { m_parent = parent; - m_text = text; + m_textToEdit = text; m_allElements.GetElementsFromList(elementList); m_systemPowerBase = systemPowerBase; - m_choiceName->Enable(false); - m_choiceTextType->Enable(false); - m_choiceTextFromBus->Enable(false); - m_choiceTextToBus->Enable(false); - m_choiceTextUnit->Enable(false); + m_text = new Text(); + m_text->SetElementType(text->GetElementType()); + m_text->SetElementNumber(text->GetElementNumber()); + m_text->SetElement(text->GetElement()); + m_text->SetDataType(text->GetDataType()); + m_text->SetDirection(text->GetDirection()); + m_text->SetUnit(text->GetUnit()); + m_text->SetDecimalPlaces(text->GetDecimalPlaces()); + + if(!LoadChoices()) { + m_choiceName->Enable(false); + m_choiceTextType->Enable(false); + m_choiceTextFromBus->Enable(false); + m_choiceTextToBus->Enable(false); + m_choiceTextUnit->Enable(false); + } } TextForm::~TextForm() {} @@ -66,13 +77,19 @@ void TextForm::OnNameChoiceSelected(wxCommandEvent& event) ElementNumberChoice(); } -void TextForm::OnTextEnter(wxCommandEvent& event) {} +void TextForm::OnTextEnter(wxCommandEvent& event) { Preview(); } void TextForm::OnToBusChoiceSelected(wxCommandEvent& event) { m_text->SetDirection(m_choiceTextToBus->GetSelection()); m_choiceTextFromBus->SetSelection(m_choiceTextToBus->GetSelection()); } +void TextForm::OnUnitChoiceSelected(wxCommandEvent& event) +{ + UnitChoice(); + Preview(); +} + void TextForm::OnTypeChoiceSelected(wxCommandEvent& event) { switch(m_text->GetElementType()) { @@ -145,10 +162,10 @@ void TextForm::OnTypeChoiceSelected(wxCommandEvent& event) m_text->SetDataType(DATA_NAME); } break; case 1: { - m_text->SetDataType(DATA_PF_ACTIVE); + m_text->SetDataType(DATA_ACTIVE_POWER); } break; case 2: { - m_text->SetDataType(DATA_PF_REACTIVE); + m_text->SetDataType(DATA_REACTIVE_POWER); } break; } } break; @@ -159,7 +176,7 @@ void TextForm::OnTypeChoiceSelected(wxCommandEvent& event) m_text->SetDataType(DATA_NAME); } break; case 1: { - m_text->SetDataType(DATA_PF_REACTIVE); + m_text->SetDataType(DATA_REACTIVE_POWER); } break; } } break; @@ -167,6 +184,576 @@ void TextForm::OnTypeChoiceSelected(wxCommandEvent& event) break; } DataTypeChoice(); + + if(m_text->GetDataType() == DATA_NAME) Preview(); +} + +bool TextForm::LoadChoices() +{ + if(m_text->GetElementType() == TYPE_NONE) return false; + + // Fill the element possible choices. + ElementTypeChoice(); + m_choiceName->SetSelection(m_text->GetElementNumber()); + ElementNumberChoice(); + DataTypeChoice(); + + // Select the saved choices. + switch(m_text->GetElementType()) { + case TYPE_BUS: { + m_choiceElement->SetSelection(0); + switch(m_text->GetDataType()) { + case DATA_NAME: { + m_choiceTextType->SetSelection(0); + } break; + case DATA_VOLTAGE: { + m_choiceTextType->SetSelection(1); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_V: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kV: { + m_choiceTextUnit->SetSelection(2); + } break; + default: + break; + } + + } break; + case DATA_ANGLE: { + m_choiceTextType->SetSelection(2); + switch(m_text->GetUnit()) { + case UNIT_DEGREE: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_RADIAN: { + m_choiceTextUnit->SetSelection(1); + } break; + default: + break; + } + } break; + case DATA_SC_CURRENT: { + m_choiceTextType->SetSelection(3); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_A: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kA: { + m_choiceTextUnit->SetSelection(2); + } break; + default: + break; + } + } break; + case DATA_SC_VOLTAGE: { + m_choiceTextType->SetSelection(4); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_V: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kV: { + m_choiceTextUnit->SetSelection(2); + } break; + default: + break; + } + } break; + case DATA_SC_POWER: { + m_choiceTextType->SetSelection(5); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_VA: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kVA: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MVA: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + default: + break; + } + } break; + case TYPE_SYNC_GENERATOR: { + m_choiceElement->SetSelection(1); + switch(m_text->GetDataType()) { + case DATA_NAME: { + m_choiceTextType->SetSelection(0); + } break; + case DATA_ACTIVE_POWER: { + m_choiceTextType->SetSelection(1); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_W: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kW: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MW: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + case DATA_REACTIVE_POWER: { + m_choiceTextType->SetSelection(2); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_VAr: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kVAr: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MVAr: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + case DATA_SC_CURRENT: { + m_choiceTextType->SetSelection(3); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_A: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kA: { + m_choiceTextUnit->SetSelection(2); + } break; + default: + break; + } + } break; + default: + break; + } + } break; + case TYPE_LINE: { + m_choiceElement->SetSelection(2); + switch(m_text->GetDataType()) { + case DATA_NAME: { + m_choiceTextType->SetSelection(0); + } break; + case DATA_PF_ACTIVE: { + m_choiceTextType->SetSelection(1); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_W: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kW: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MW: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + case DATA_PF_REACTIVE: { + m_choiceTextType->SetSelection(2); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_VAr: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kVAr: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MVAr: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + case DATA_PF_LOSSES: { + m_choiceTextType->SetSelection(3); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_W: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kW: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MW: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + case DATA_PF_CURRENT: { + m_choiceTextType->SetSelection(4); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_A: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kA: { + m_choiceTextUnit->SetSelection(2); + } break; + default: + break; + } + } break; + case DATA_SC_CURRENT: { + m_choiceTextType->SetSelection(5); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_A: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kA: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MW: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + default: + break; + } + } break; + case TYPE_TRANSFORMER: { + m_choiceElement->SetSelection(3); + switch(m_text->GetDataType()) { + case DATA_NAME: { + m_choiceTextType->SetSelection(0); + } break; + case DATA_PF_ACTIVE: { + m_choiceTextType->SetSelection(1); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_W: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kW: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MW: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + case DATA_PF_REACTIVE: { + m_choiceTextType->SetSelection(2); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_VAr: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kVAr: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MVAr: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + case DATA_PF_LOSSES: { + m_choiceTextType->SetSelection(3); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_W: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kW: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MW: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + case DATA_PF_CURRENT: { + m_choiceTextType->SetSelection(4); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_A: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kA: { + m_choiceTextUnit->SetSelection(2); + } break; + default: + break; + } + } break; + case DATA_SC_CURRENT: { + m_choiceTextType->SetSelection(5); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_A: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kA: { + m_choiceTextUnit->SetSelection(2); + } break; + default: + break; + } + } break; + default: + break; + } + } break; + case TYPE_LOAD: { + m_choiceElement->SetSelection(4); + switch(m_text->GetDataType()) { + case DATA_NAME: { + m_choiceTextType->SetSelection(0); + } break; + case DATA_ACTIVE_POWER: { + m_choiceTextType->SetSelection(1); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_W: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kW: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MW: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + case DATA_REACTIVE_POWER: { + m_choiceTextType->SetSelection(2); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_VAr: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kVAr: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MVAr: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + default: + break; + } + } break; + case TYPE_CAPACITOR: { + m_choiceElement->SetSelection(5); + switch(m_text->GetDataType()) { + case DATA_NAME: { + m_choiceTextType->SetSelection(0); + } break; + case DATA_REACTIVE_POWER: { + m_choiceTextType->SetSelection(1); + + } break; + default: + break; + } + } break; + case TYPE_INDUCTOR: { + m_choiceElement->SetSelection(6); + switch(m_text->GetDataType()) { + case DATA_NAME: { + m_choiceTextType->SetSelection(0); + } break; + case DATA_REACTIVE_POWER: { + m_choiceTextType->SetSelection(1); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_VAr: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kVAr: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MVAr: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + default: + break; + } + } break; + case TYPE_SYNC_MOTOR: { + m_choiceElement->SetSelection(7); + switch(m_text->GetDataType()) { + case DATA_NAME: { + m_choiceTextType->SetSelection(0); + } break; + case DATA_ACTIVE_POWER: { + m_choiceTextType->SetSelection(1); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_W: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kW: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MW: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + case DATA_REACTIVE_POWER: { + m_choiceTextType->SetSelection(2); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_VAr: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kVAr: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MVAr: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + default: + break; + } + } break; + case TYPE_IND_MOTOR: { + m_choiceElement->SetSelection(8); + switch(m_text->GetDataType()) { + case DATA_NAME: { + m_choiceTextType->SetSelection(0); + } break; + case DATA_ACTIVE_POWER: { + m_choiceTextType->SetSelection(1); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_W: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kW: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MW: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + case DATA_REACTIVE_POWER: { + m_choiceTextType->SetSelection(2); + switch(m_text->GetUnit()) { + case UNIT_PU: { + m_choiceTextUnit->SetSelection(0); + } break; + case UNIT_VAr: { + m_choiceTextUnit->SetSelection(1); + } break; + case UNIT_kVAr: { + m_choiceTextUnit->SetSelection(2); + } break; + case UNIT_MVAr: { + m_choiceTextUnit->SetSelection(3); + } break; + default: + break; + } + } break; + default: + break; + } + } break; + default: + break; + } + + if(m_choiceTextFromBus->IsEnabled()) m_choiceTextFromBus->SetSelection(m_text->GetDirection()); + if(m_choiceTextToBus->IsEnabled()) m_choiceTextToBus->SetSelection(m_text->GetDirection()); + + m_textCtrlDecimal->SetValue(wxString::Format("%d", m_text->GetDecimalPlaces())); + Preview(); + + return true; } void TextForm::ElementTypeChoice() @@ -253,7 +840,7 @@ void TextForm::ElementNumberChoice() m_choiceTextFromBus->Clear(); m_choiceTextToBus->Clear(); m_choiceTextUnit->Clear(); - + int index = m_choiceName->GetSelection(); m_text->SetElementNumber(index); @@ -264,7 +851,7 @@ void TextForm::ElementNumberChoice() auto it = m_allElements.GetBusList().begin(); std::advance(it, index); m_text->SetElement(*it); - + arrayString.Add(_("Name")); arrayString.Add(_("Voltage")); arrayString.Add(_("Angle")); @@ -276,18 +863,17 @@ void TextForm::ElementNumberChoice() auto it = m_allElements.GetSyncGeneratorList().begin(); std::advance(it, index); m_text->SetElement(*it); - + arrayString.Add(_("Name")); arrayString.Add(_("Active power")); arrayString.Add(_("Reactive power")); arrayString.Add(_("Fault current")); } break; - case TYPE_LINE: - { + case TYPE_LINE: { auto it = m_allElements.GetLineList().begin(); std::advance(it, index); m_text->SetElement(*it); - + arrayString.Add(_("Name")); arrayString.Add(_("Active power flow")); arrayString.Add(_("Reactive power flow")); @@ -299,7 +885,7 @@ void TextForm::ElementNumberChoice() auto it = m_allElements.GetTransformerList().begin(); std::advance(it, index); m_text->SetElement(*it); - + arrayString.Add(_("Name")); arrayString.Add(_("Active power flow")); arrayString.Add(_("Reactive power flow")); @@ -311,7 +897,7 @@ void TextForm::ElementNumberChoice() auto it = m_allElements.GetLoadList().begin(); std::advance(it, index); m_text->SetElement(*it); - + arrayString.Add(_("Name")); arrayString.Add(_("Active power")); arrayString.Add(_("Reactive power")); @@ -320,7 +906,7 @@ void TextForm::ElementNumberChoice() auto it = m_allElements.GetCapacitorList().begin(); std::advance(it, index); m_text->SetElement(*it); - + arrayString.Add(_("Name")); arrayString.Add(_("Reactive power")); } break; @@ -328,7 +914,7 @@ void TextForm::ElementNumberChoice() auto it = m_allElements.GetInductorList().begin(); std::advance(it, index); m_text->SetElement(*it); - + arrayString.Add(_("Name")); arrayString.Add(_("Reactive power")); } break; @@ -336,7 +922,7 @@ void TextForm::ElementNumberChoice() auto it = m_allElements.GetSyncMotorList().begin(); std::advance(it, index); m_text->SetElement(*it); - + arrayString.Add(_("Name")); arrayString.Add(_("Active power")); arrayString.Add(_("Reactive power")); @@ -345,7 +931,7 @@ void TextForm::ElementNumberChoice() auto it = m_allElements.GetIndMotorList().begin(); std::advance(it, index); m_text->SetElement(*it); - + arrayString.Add(_("Name")); arrayString.Add(_("Active power")); arrayString.Add(_("Reactive power")); @@ -368,11 +954,11 @@ void TextForm::DataTypeChoice() m_choiceTextUnit->Clear(); m_choiceTextUnit->Enable(); + wxArrayString arrayString; switch(m_text->GetDataType()) { case DATA_NAME: { m_choiceTextUnit->Enable(false); - m_text->UpdateText(m_systemPowerBase); return; } break; case DATA_VOLTAGE: @@ -436,7 +1022,6 @@ void TextForm::DataTypeChoice() m_choiceTextToBus->Append(bus1Name); m_choiceTextFromBus->SetSelection(0); m_choiceTextToBus->SetSelection(0); - m_text->SetDirection(0); m_choiceTextFromBus->Enable(); m_choiceTextToBus->Enable(); @@ -459,7 +1044,6 @@ void TextForm::DataTypeChoice() m_choiceTextToBus->Append(bus1Name); m_choiceTextFromBus->SetSelection(0); m_choiceTextToBus->SetSelection(0); - m_text->SetDirection(0); m_choiceTextFromBus->Enable(); m_choiceTextToBus->Enable(); @@ -581,6 +1165,55 @@ void TextForm::UnitChoice() default: break; } - +} + +void TextForm::Preview() +{ + double decimalPlaces = m_text->GetDecimalPlaces(); + if(m_textCtrlDecimal->GetValue().ToDouble(&decimalPlaces)) m_text->SetDecimalPlaces(decimalPlaces); + m_text->UpdateText(m_systemPowerBase); + + m_textCtrlPreview->SetValue(m_text->GetText()); +} + +bool TextForm::ValidateData() +{ + if(m_choiceElement->GetSelection() == -1) return false; + if(m_choiceName->GetSelection() == -1) return false; + if(m_choiceTextType->GetSelection() == -1) return false; + if(m_text->GetDataType() != DATA_NAME && m_choiceTextUnit->GetSelection() == -1) return false; + if(m_text->GetElementType() == TYPE_LINE || m_text->GetElementType() == TYPE_TRANSFORMER) { + if(m_text->GetDataType() != DATA_PF_LOSSES) { + if(m_choiceTextFromBus->GetSelection() == -1) return false; + if(m_choiceTextToBus->GetSelection() == -1) return false; + } + } + + if(m_choiceTextFromBus->IsEnabled() && m_choiceTextToBus->IsEnabled()) + m_text->SetDirection(m_choiceTextFromBus->GetSelection()); + double decimalPlaces = m_text->GetDecimalPlaces(); + if(m_textCtrlDecimal->GetValue().ToDouble(&decimalPlaces)) m_text->SetDecimalPlaces(decimalPlaces); + + m_textToEdit->SetElementType(m_text->GetElementType()); + m_textToEdit->SetElementNumber(m_text->GetElementNumber()); + m_textToEdit->SetElement(m_text->GetElement()); + m_textToEdit->SetDataType(m_text->GetDataType()); + m_textToEdit->SetDirection(m_text->GetDirection()); + m_textToEdit->SetUnit(m_text->GetUnit()); + m_textToEdit->SetDecimalPlaces(decimalPlaces); + m_textToEdit->UpdateText(m_systemPowerBase); + + return true; +} + +void TextForm::OnOKButtonClick(wxCommandEvent& event) +{ + if(ValidateData()) { + EndModal(wxID_OK); + } else { + wxString errorMsg = _("There are blank fields."); + wxMessageDialog msgDialog(this, errorMsg, _("Error"), wxOK | wxCENTRE | wxICON_ERROR); + msgDialog.ShowModal(); + } } diff --git a/Project/TextForm.h b/Project/TextForm.h index 1a22baa..a24d90e 100644 --- a/Project/TextForm.h +++ b/Project/TextForm.h @@ -7,17 +7,24 @@ class TextForm : public TextFormBase { - public: +public: TextForm(wxWindow* parent, Text* text, std::vector<Element*> elementList, double systemPowerBase = 100e6); virtual ~TextForm(); + + virtual bool LoadChoices(); + virtual void ElementTypeChoice(); virtual void ElementNumberChoice(); virtual void DataTypeChoice(); virtual void UnitChoice(); - protected: + virtual void Preview(); + virtual bool ValidateData(); + +protected: + virtual void OnUnitChoiceSelected(wxCommandEvent& event); virtual void OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); } - virtual void OnOKButtonClick(wxCommandEvent& event) { EndModal(wxID_OK); } + virtual void OnOKButtonClick(wxCommandEvent& event); virtual void OnElementChoiceSelected(wxCommandEvent& event); virtual void OnFromBusChoiceSelected(wxCommandEvent& event); virtual void OnNameChoiceSelected(wxCommandEvent& event); @@ -26,8 +33,9 @@ class TextForm : public TextFormBase virtual void OnTypeChoiceSelected(wxCommandEvent& event); Text* m_text; + Text* m_textToEdit; wxWindow* m_parent; ElectricCalculation m_allElements; double m_systemPowerBase; }; -#endif // TEXTFORM_H +#endif // TEXTFORM_H diff --git a/Project/Transformer.cpp b/Project/Transformer.cpp index 93013e0..04770e4 100644 --- a/Project/Transformer.cpp +++ b/Project/Transformer.cpp @@ -1,8 +1,25 @@ #include "TransformerForm.h" #include "Transformer.h" -Transformer::Transformer() : Branch() {} -Transformer::Transformer(wxString name) : Branch() { m_electricalData.name = name; } +Transformer::Transformer() + : Branch() +{ + for(int i = 0; i < 2; i++) { + for(int j = 0; j < 3; j++) { + m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0); + } + } +} +Transformer::Transformer(wxString name) + : Branch() +{ + for(int i = 0; i < 2; i++) { + for(int j = 0; j < 3; j++) { + m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0); + } + } + m_electricalData.name = name; +} Transformer::~Transformer() {} bool Transformer::AddParent(Element* parent, wxPoint2DDouble position) { @@ -12,10 +29,10 @@ bool Transformer::AddParent(Element* parent, wxPoint2DDouble position) 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 + 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); @@ -27,9 +44,9 @@ bool Transformer::AddParent(Element* parent, wxPoint2DDouble position) else if(parent != m_parentList[0]) { 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. + 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. // Get the average between the two bus points. m_position = @@ -53,7 +70,7 @@ bool Transformer::AddParent(Element* parent, wxPoint2DDouble position) // 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. + m_pointList.push_back(parentPt); // Last point. m_inserted = true; wxRect2DDouble genRect(0, 0, 0, 0); @@ -88,10 +105,10 @@ void Transformer::Draw(wxPoint2DDouble translation, double scale) const glRotated(m_angle, 0.0, 0.0, 1.0); glTranslated(-m_position.m_x, -m_position.m_y, 0.0); - DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20 + (m_borderSize + 1.5) / scale, 20, - GL_POLYGON); - DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20 + (m_borderSize + 1.5) / scale, 20, - GL_POLYGON); + DrawCircle( + m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20 + (m_borderSize + 1.5) / scale, 20, GL_POLYGON); + DrawCircle( + m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20 + (m_borderSize + 1.5) / scale, 20, GL_POLYGON); glPopMatrix(); @@ -280,13 +297,10 @@ void Transformer::RotateNode(Element* parent, bool clockwise) if(!clockwise) rotAngle = -m_rotationAngle; if(parent == m_parentList[0]) { - m_pointList[0] = parent->RotateAtPosition(m_pointList[0], rotAngle); - } - else if(parent == m_parentList[1]) - { - m_pointList[m_pointList.size() - 1] = - parent->RotateAtPosition(m_pointList[m_pointList.size() - 1], rotAngle); - } + m_pointList[0] = parent->RotateAtPosition(m_pointList[0], rotAngle); + } else if(parent == m_parentList[1]) { + m_pointList[m_pointList.size() - 1] = parent->RotateAtPosition(m_pointList[m_pointList.size() - 1], rotAngle); + } UpdateSwitchesPosition(); UpdatePowerFlowArrowsPosition(); } @@ -297,64 +311,61 @@ bool Transformer::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(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(); + 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(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(); UpdatePowerFlowArrowsPosition(); - 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; + } + 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(); UpdatePowerFlowArrowsPosition(); - return true; - } - } - else - { - if(m_activeNodeID == 1) m_parentList[0] = NULL; - if(m_activeNodeID == 2) m_parentList[1] = NULL; - } - } + 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/Transformer.h b/Project/Transformer.h index 8c958a1..79e2380 100644 --- a/Project/Transformer.h +++ b/Project/Transformer.h @@ -47,6 +47,8 @@ struct TransformerElectricalData { double primaryGrndReactance = 0.0; double secondaryGrndResistance = 0.0; double secondaryGrndReactance = 0.0; + // p.u. fault data + std::complex<double> faultCurrent[2][3]; }; class Transformer : public Branch diff --git a/Project/TransformerForm.cpp b/Project/TransformerForm.cpp index 3d87a13..b7ca491 100644 --- a/Project/TransformerForm.cpp +++ b/Project/TransformerForm.cpp @@ -117,7 +117,7 @@ void TransformerForm::OnStabilityButtonClick(wxCommandEvent& event) bool TransformerForm::ValidateData() { - TransformerElectricalData data; + TransformerElectricalData data = m_transformer->GetElectricalData(); data.name = m_textCtrlName->GetValue(); data.baseVoltage = m_choiceBaseVoltage->GetSelection(); diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp index 7ada5e5..bdb8211 100644 --- a/Project/Workspace.cpp +++ b/Project/Workspace.cpp @@ -25,8 +25,8 @@ Camera::Camera() Camera::~Camera() {} wxPoint2DDouble Camera::ScreenToWorld(wxPoint2DDouble screenCoords) const { - return wxPoint2DDouble(screenCoords.m_x / m_scale - m_translation.m_x, - screenCoords.m_y / m_scale - m_translation.m_y); + return wxPoint2DDouble( + screenCoords.m_x / m_scale - m_translation.m_x, screenCoords.m_y / m_scale - m_translation.m_y); } void Camera::SetTranslation(wxPoint2DDouble screenPoint) @@ -54,8 +54,12 @@ wxPoint2DDouble Camera::GetMousePosition(bool worldCoords) const } // Workspace -Workspace::Workspace() : WorkspaceBase(NULL) {} -Workspace::Workspace(wxWindow* parent, wxString name, wxStatusBar* statusBar) : WorkspaceBase(parent) +Workspace::Workspace() + : WorkspaceBase(NULL) +{ +} +Workspace::Workspace(wxWindow* parent, wxString name, wxStatusBar* statusBar) + : WorkspaceBase(parent) { m_name = name; m_statusBar = statusBar; @@ -67,7 +71,7 @@ Workspace::Workspace(wxWindow* parent, wxString name, wxStatusBar* statusBar) : m_elementNumber[i] = 1; } - const int widths[4] = {-3, -1, 100, 100}; + const int widths[4] = { -3, -1, 100, 100 }; m_statusBar->SetStatusWidths(4, widths); } @@ -87,8 +91,8 @@ void Workspace::OnPaint(wxPaintEvent& event) SetViewport(); // Set GLCanvas scale and translation. - glScaled(m_camera->GetScale(), m_camera->GetScale(), 0.0); // Scale - glTranslated(m_camera->GetTranslation().m_x, m_camera->GetTranslation().m_y, 0.0); // Translation + glScaled(m_camera->GetScale(), m_camera->GetScale(), 0.0); // Scale + glTranslated(m_camera->GetTranslation().m_x, m_camera->GetTranslation().m_y, 0.0); // Translation // Draw @@ -121,14 +125,14 @@ void Workspace::OnPaint(wxPaintEvent& event) glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y); glEnd(); - glFlush(); // Sends all pending information directly to the GPU. + glFlush(); // Sends all pending information directly to the GPU. m_glCanvas->SwapBuffers(); event.Skip(); } void Workspace::SetViewport() { - glClearColor(1.0, 1.0, 1.0, 1.0); // White background. + glClearColor(1.0, 1.0, 1.0, 1.0); // White background. glClear(GL_COLOR_BUFFER_BIT); glDisable(GL_DEPTH_TEST); glEnable(GL_TEXTURE_2D); @@ -167,7 +171,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) if(typeid(*element) == typeid(Bus)) { // Select the bus. element->SetSelected(); - foundElement = true; // Element found. + foundElement = true; // Element found. // Add the new element's parent. If the element being inserted returns true, back to // edit mode. if(newElement->AddParent(element, m_camera->ScreenToWorld(event.GetPosition()))) { @@ -188,7 +192,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) bool clickPickbox = false; for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { Element* element = *it; - element->ResetPickboxes(); // Reset pickbox state. + element->ResetPickboxes(); // Reset pickbox state. // Set movement initial position (not necessarily will be moved). element->StartMove(m_camera->ScreenToWorld(event.GetPosition())); @@ -252,6 +256,9 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) void Workspace::OnLeftDoubleClick(wxMouseEvent& event) { + bool elementEdited = false; + bool redraw = false; + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { Element* element = *it; @@ -264,14 +271,16 @@ void Workspace::OnLeftDoubleClick(wxMouseEvent& event) oldBus = *(Bus*)element; } element->ShowForm(this, element); + elementEdited = true; + redraw = true; // 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) { + 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; @@ -300,14 +309,17 @@ void Workspace::OnLeftDoubleClick(wxMouseEvent& event) element->SetOnline(element->IsOnline() ? false : true); } } - - //Text element + + // Text element for(auto it = m_textList.begin(); it != m_textList.end(); ++it) { Text* text = *it; if(text->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { text->ShowForm(this, m_elementList); + redraw = true; } } + if(elementEdited) UpdateTextElements(); + if(redraw) Redraw(); } void Workspace::OnRightClickDown(wxMouseEvent& event) @@ -323,8 +335,8 @@ void Workspace::OnRightClickDown(wxMouseEvent& event) wxMenu menu; if(element->GetContextMenu(menu)) { menu.SetClientData(element); - menu.Connect(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(Workspace::OnPopupClick), NULL, - this); + menu.Connect( + wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(Workspace::OnPopupClick), NULL, this); PopupMenu(&menu); redraw = true; } @@ -455,7 +467,7 @@ void Workspace::OnMouseMotion(wxMouseEvent& event) bool redraw = false; switch(m_mode) { case MODE_INSERT: { - Element* newElement = *(m_elementList.end() - 1); // Get the last element in the list. + Element* newElement = *(m_elementList.end() - 1); // Get the last element in the list. newElement->SetPosition(m_camera->ScreenToWorld(event.GetPosition())); redraw = true; } break; @@ -582,7 +594,7 @@ void Workspace::OnMiddleDown(wxMouseEvent& event) { // Set to drag mode. if(m_mode != MODE_INSERT && m_mode != MODE_INSERT_TEXT && m_mode != MODE_DRAG_INSERT && - m_mode != MODE_DRAG_INSERT_TEXT) { + m_mode != MODE_DRAG_INSERT_TEXT) { m_mode = MODE_DRAG; } else if(m_mode == MODE_INSERT_TEXT) { m_mode = MODE_DRAG_INSERT_TEXT; @@ -596,7 +608,7 @@ void Workspace::OnMiddleDown(wxMouseEvent& event) void Workspace::OnMiddleUp(wxMouseEvent& event) { if(m_mode != MODE_INSERT && m_mode != MODE_INSERT_TEXT && m_mode != MODE_DRAG_INSERT && - m_mode != MODE_DRAG_INSERT_TEXT) { + m_mode != MODE_DRAG_INSERT_TEXT) { // Set to edit mode back. m_mode = MODE_EDIT; } else if(m_mode == MODE_DRAG_INSERT_TEXT) { @@ -626,10 +638,10 @@ void Workspace::OnKeyDown(wxKeyEvent& event) char key = event.GetUnicodeKey(); if(key != WXK_NONE) { switch(key) { - case WXK_ESCAPE: // Cancel operations. + case WXK_ESCAPE: // Cancel operations. { if(m_mode == MODE_INSERT) { - m_elementList.pop_back(); // Removes the last element being inserted. + m_elementList.pop_back(); // Removes the last element being inserted. m_mode = MODE_EDIT; Redraw(); } else if(m_mode == MODE_INSERT_TEXT) { @@ -638,7 +650,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event) Redraw(); } } break; - case WXK_DELETE: // Delete selected elements + case WXK_DELETE: // Delete selected elements { DeleteSelectedElements(); } break; @@ -656,15 +668,15 @@ void Workspace::OnKeyDown(wxKeyEvent& event) Fit(); } } break; - case 'R': // Rotate the selected elements. + case 'R': // Rotate the selected elements. { RotateSelectedElements(event.GetModifiers() != wxMOD_SHIFT); } break; - case 'B': // Insert a bus. + case 'B': // Insert a bus. { if(!insertingElement) { Bus* newBus = new Bus(m_camera->ScreenToWorld(event.GetPosition()), - wxString::Format(_("Bus %d"), GetElementNumber(ID_BUS))); + wxString::Format(_("Bus %d"), GetElementNumber(ID_BUS))); IncrementElementNumber(ID_BUS); m_elementList.push_back(newBus); m_mode = MODE_INSERT; @@ -674,13 +686,13 @@ void Workspace::OnKeyDown(wxKeyEvent& event) } break; case 'L': { if(!insertingElement) { - if(event.GetModifiers() == wxMOD_SHIFT) { // Insert a load. + if(event.GetModifiers() == wxMOD_SHIFT) { // Insert a load. Load* newLoad = new Load(wxString::Format(_("Load %d"), GetElementNumber(ID_LOAD))); IncrementElementNumber(ID_LOAD); m_elementList.push_back(newLoad); m_mode = MODE_INSERT; m_statusBar->SetStatusText(_("Insert Load: Click on a buses, ESC to cancel.")); - } else { // Insert a power line. + } else { // Insert a power line. Line* newLine = new Line(wxString::Format(_("Line %d"), GetElementNumber(ID_LINE))); IncrementElementNumber(ID_LINE); m_elementList.push_back(newLine); @@ -690,7 +702,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event) Redraw(); } } break; - case 'T': // Insert a transformer. + case 'T': // Insert a transformer. { if(!insertingElement) { Transformer* newTransformer = @@ -702,7 +714,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event) Redraw(); } } break; - case 'G': // Insert a generator. + case 'G': // Insert a generator. { if(!insertingElement) { SyncGenerator* newGenerator = @@ -716,14 +728,14 @@ void Workspace::OnKeyDown(wxKeyEvent& event) } break; case 'I': { if(!insertingElement) { - if(event.GetModifiers() == wxMOD_SHIFT) { // Insert an inductor. + if(event.GetModifiers() == wxMOD_SHIFT) { // Insert an inductor. Inductor* newInductor = new Inductor(wxString::Format(_("Inductor %d"), GetElementNumber(ID_INDUCTOR))); IncrementElementNumber(ID_INDUCTOR); m_elementList.push_back(newInductor); m_mode = MODE_INSERT; m_statusBar->SetStatusText(_("Insert Inductor: Click on a buses, ESC to cancel.")); - } else // Insert an induction motor. + } else // Insert an induction motor. { IndMotor* newIndMotor = new IndMotor(wxString::Format(_("Induction motor %d"), GetElementNumber(ID_INDMOTOR))); @@ -735,7 +747,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event) Redraw(); } } break; - case 'K': // Insert a synchronous condenser. + case 'K': // Insert a synchronous condenser. { if(!insertingElement) { SyncMotor* newSyncCondenser = @@ -749,7 +761,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event) } break; case 'C': { if(!insertingElement) { - if(event.GetModifiers() == wxMOD_SHIFT) { // Insert a capacitor. + if(event.GetModifiers() == wxMOD_SHIFT) { // Insert a capacitor. Capacitor* newCapacitor = new Capacitor(wxString::Format(_("Capacitor %d"), GetElementNumber(ID_CAPACITOR))); IncrementElementNumber(ID_CAPACITOR); @@ -880,7 +892,7 @@ void Workspace::RotateSelectedElements(bool clockwise) // Parent's element rotating... for(int i = 0; i < (int)element->GetParentList().size(); i++) { Element* parent = element->GetParentList()[i]; - if(parent) { // Check if parent is not null + if(parent) { // Check if parent is not null if(parent->IsSelected()) { element->RotateNode(parent, clockwise); // Update the positions used on motion action, the element will not be necessarily @@ -908,6 +920,7 @@ void Workspace::RotateSelectedElements(bool clockwise) void Workspace::DeleteSelectedElements() { + // Don't set the end of the list at the loop's begin. for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { Element* element = *it; @@ -922,9 +935,21 @@ void Workspace::DeleteSelectedElements() } } } + + for(auto itt = m_textList.begin(); itt != m_textList.end(); ++itt) { + Text* text = *itt; + if(text->GetElement() == element) m_textList.erase(itt--); + } + m_elementList.erase(it--); } } + + for(auto it = m_textList.begin(); it != m_textList.end(); ++it) { + Text* text = *it; + if(text->IsSelected()) m_textList.erase(it--); + } + Redraw(); } @@ -979,7 +1004,7 @@ void Workspace::ValidateBusesVoltages(Element* initialBus) BusElectricalData data2 = ((Bus*)child->GetParentList()[1])->GetEletricalData(); if(data1.nominalVoltage != data2.nominalVoltage || - data1.nominalVoltageUnit != data2.nominalVoltageUnit) { + data1.nominalVoltageUnit != data2.nominalVoltageUnit) { data1.nominalVoltage = nominalVoltage; data2.nominalVoltage = nominalVoltage; data1.nominalVoltageUnit = nominalVoltageUnit; @@ -988,7 +1013,7 @@ void Workspace::ValidateBusesVoltages(Element* initialBus) ((Bus*)child->GetParentList()[0])->SetElectricalData(data1); ((Bus*)child->GetParentList()[1])->SetElectricalData(data2); - it = m_elementList.begin(); // Restart search. + it = m_elementList.begin(); // Restart search. } } } @@ -1024,7 +1049,16 @@ bool Workspace::RunPowerFlow() msgDialog.ShowModal(); } + UpdateTextElements(); Redraw(); return result; } + +void Workspace::UpdateTextElements() +{ + for(auto it = m_textList.begin(); it != m_textList.end(); ++it) { + Text* text = *it; + text->UpdateText(100e6); + } +} diff --git a/Project/Workspace.h b/Project/Workspace.h index b4d1e54..818e07e 100644 --- a/Project/Workspace.h +++ b/Project/Workspace.h @@ -80,6 +80,8 @@ class Workspace : public WorkspaceBase void ValidateBusesVoltages(Element* initialBus); void ValidateElementsVoltages(); + + void UpdateTextElements(); int GetElementNumber(ElementID elementID) { return m_elementNumber[elementID]; } void IncrementElementNumber(ElementID elementID) { m_elementNumber[elementID]++; } |