summaryrefslogtreecommitdiffstats
path: root/Project/ImportForm.h
diff options
context:
space:
mode:
Diffstat (limited to 'Project/ImportForm.h')
-rw-r--r--Project/ImportForm.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/Project/ImportForm.h b/Project/ImportForm.h
index 7881c64..a1925de 100644
--- a/Project/ImportForm.h
+++ b/Project/ImportForm.h
@@ -3,10 +3,20 @@
#include "base/PropertiesFormBase.h"
+#include <wx/geometry.h>
#include <wx/msgdlg.h>
+#include <wx/textfile.h>
+#include <bitset>
class Workspace;
+/**
+ * @class ImportForm
+ * @author Thales Lima Oliveira <thales@ufu.br>
+ * @date 27/03/2018
+ * @brief Form to import other programs files to PSP
+ * @file ImportForm.h
+ */
class ImportForm : public ImportFormBase
{
public:
@@ -23,4 +33,71 @@ class ImportForm : public ImportFormBase
Workspace* m_workspace = NULL;
wxWindow* m_parent;
};
+
+/**
+ * @enum ElementType
+ * @brief ID of ANAREDE's elements.
+ */
+enum ElementTypeAnarede {
+ ANA_BUS = 1, /**< Bus */
+ ANA_GENERATOR = 4, /**< Generator */
+ ANA_LOAD = 5, /**< Load */
+ ANA_SHUNT = 6, /**< Shunt element */
+ ANA_MIT = 7, /**< Induction motor */
+ ANA_TRANSFORMER = 9, /**< Transformer */
+ ANA_LINE = 14, /**< Power line */
+ ANA_IND_LOAD = 22, /**< Independent load */
+ ANA_IND_SHUNT = 23, /**< Independent shunt element */
+ ANA_IND_GENERATOR = 24, /**< Independent generator */
+};
+
+/**
+ * @class ParseAnarede
+ * @author Thales Lima Oliveira <thales@ufu.br>
+ * @date 27/03/2018
+ * @brief Class responsible to parse ANAREDE files to import data to PSP.
+ * @file ImportForm.h
+ */
+class ParseAnarede
+{
+ public:
+ // Graphic files data structs
+ struct Component {
+ int id = 0; /**< Graphical ID */
+ ElementTypeAnarede type = ANA_BUS; /**< Element type */
+ double length = 0.0; /**< Element lenght (only buses) */
+ int rotationID = 0; /**< Rotation ID (0, 1, 2 or 4) */
+ wxPoint2DDouble position; /**< X and Y coordinates */
+ int electricalID = 0; /**< Bus, Branch or Group electrical IDs */
+ std::pair<int, int> busConnectionID[2] = {
+ std::make_pair(0, 0), std::make_pair(0, 0)}; /**< In the form <graphicalBusID,electricBusID> */
+ std::pair<int, int> busConnectionNode[2] = {std::make_pair(0, 0),
+ std::make_pair(0, 0)}; /**< In the form <graphicalBusID,nodeID> */
+ };
+ struct PowerLine {
+ int id = 0; /**< Graphical ID */
+ ElementTypeAnarede type = ANA_LINE; /**< Element type */
+ int electricalID = 0; /**< Bus, Branch or Group electrical IDs */
+ std::pair<int, int> busConnectionID[2] = {
+ std::make_pair(0, 0), std::make_pair(0, 0)}; /**< In the form <graphicalBusID,electricBusID> */
+ std::pair<int, int> busConnectionNode[2] = {std::make_pair(0, 0),
+ std::make_pair(0, 0)}; /**< In the form <graphicalBusID,nodeID> */
+ std::vector<wxPoint2DDouble> nodesPosition; /**< Coordinates of the line breaks, if any */
+ };
+
+ ParseAnarede(wxFileName lstFile, wxFileName pwfFile);
+ ~ParseAnarede() {}
+ bool Parse();
+
+ protected:
+ bool GetLenghtAndRotationFromBusCode(wxString code, double& lenght, int& rotationID);
+ wxString GetLSTLineNextValue(wxString line, int& currentPos);
+
+ wxFileName m_lstFile;
+ wxFileName m_pwfFile;
+
+ std::vector<Component> m_components;
+ std::vector<PowerLine> m_lines;
+};
+
#endif // IMPORTFORM_H