Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 32.41 KB | None | 0 0
  1. --- assets/reports/documents/conductorbundle.lhtml
  2. +++ assets/reports/documents/conductorbundle.lhtml
  3. @@ -300,7 +300,7 @@ end
  4.          </p>
  5.          <br/>
  6.          <p class="MsoNormal">
  7. -            Considerando-se os cuidados de lançamento e grampeamento dos cabos condutores em LT’s de extra alta tensão, é usual, nos projetos atuais, se utilizar o valor típico de fator de superfície de 0,85.
  8. +            Considerando-se os cuidados de lançamento e grampeamento dos cabos condutores em LT’s de extra alta tensão, é usual, nos projetos atuais, se utilizar o valor típico de fator de superfície de <?= circuit.conductorSurfaceFactor ?>.
  9.          </p>
  10.          <br/>
  11.          <p class="MsoNormal">
  12. @@ -333,8 +333,30 @@ end
  13.          <? bookmarkIndexTable["_TranspositionTl".. tlIndex] = "6."..tlIndex ?>
  14.          <?= include('word/header', {name = transmissionLine.name, bookmark = "_TranspositionTl".. tlIndex, level = 2}) ?>
  15.          
  16. +        <?
  17. +        local sequenceFullLoad = Matrix.new(0, 0)
  18. +        local sequenceNoLoad = Matrix.new(0, 0)
  19. +
  20. +        sequenceFullLoad = transmissionLine.voltageSequenceFullLoad
  21. +        sequenceNoLoad = transmissionLine.voltageSequenceNoLoad
  22. +
  23. +        local c = 1
  24. +        local i = (3 * (c-1)) + 1
  25. +        ?>
  26. +
  27.          <p class="MsoNormal">
  28. -            Cada trecho da LT terá um ciclo completo de transposição, com trechos de 1/6, 1/3, 1/3 e 1/6 do comprimento total, a partir das SE’s.
  29. +            <? if tonumber(transmissionLine.length) > 100 then ?>
  30. +                Como essa LT tem comprimento maior que 100km, cada trecho da LT terá um ciclo completo de transposição, com trechos de 1/6, 1/3, 1/3 e 1/6 do comprimento total, a partir das SE’s.
  31. +            <? elseif #transmissionLine.circuits > 1  then ?>
  32. +                Como essa LT tem mais de 1 circuito, cada trecho da LT terá um ciclo completo de transposição, com trechos de 1/6, 1/3, 1/3 e 1/6 do comprimento total, a partir das SE’s.
  33. +            <? elseif 100. * (Complex.fromTable(sequenceNoLoad[i+0][1]) / Complex.fromTable(sequenceNoLoad[i+1][1])):abs() > 1.5
  34. +                or 100. * (Complex.fromTable(sequenceNoLoad[i+2][1]) / Complex.fromTable(sequenceNoLoad[i+1][1])):abs() > 1.5
  35. +                or 100. * (Complex.fromTable(sequenceFullLoad[i+0][1]) / Complex.fromTable(sequenceFullLoad[i+1][1])):abs() > 1.5
  36. +                or 100. * (Complex.fromTable(sequenceFullLoad[i+2][1]) / Complex.fromTable(sequenceFullLoad[i+1][1])):abs() > 1.5 then ?>
  37. +                Como essa LT ultrapassou o limite do desequilibrio em componetes de sequência de tensão que é de 1.5%, cada trecho da LT terá um ciclo completo de transposição, com trechos de 1/6, 1/3, 1/3 e 1/6 do comprimento total, a partir das SE’s.
  38. +            <? else ?>
  39. +                Como essa LT tem comprimento &le; 100km, apenas 1 circuito e o desequilibrio em componentes de sequeência de tenção dentro dos limites recomendados (&le;1.5%), então não será necessário a realização da transposição.
  40. +            <? end ?>
  41.          </p>
  42.          <br/>
  43.      <? end ?>
  44. --- src/core/applications/application.cpp
  45. +++ src/core/applications/application.cpp
  46. @@ -277,6 +277,10 @@ QString Application::getModuleText(Module module)
  47.          return "CableTypeUnitPrice";
  48.      case Module_CableTypeCrossSection:
  49.          return "CableTypeCrossSection";
  50. +    case Module_CableInitialElasticModulus:
  51. +        return "CableInitialElasticModulus";
  52. +    case Module_CableLinearExpansionCoeff:
  53. +        return "CableLinearExpansionCoeff";
  54.      case Module_AtmosphericDischarges:
  55.          return "AtmosphericDischarges";
  56.      case Module_AudibleNoise:
  57. @@ -299,6 +303,8 @@ QString Application::getModuleText(Module module)
  58.          return "PLSCADDTools";
  59.      case Module_ShieldWireDesign:
  60.          return "ShieldWireDesign";
  61. +    case Module_SagTensionSubstation:
  62. +        return "SagTensionSubstation";
  63.      case Module_Last:
  64.          return "Last";
  65.      }
  66. --- src/core/applications/application.h
  67. +++ src/core/applications/application.h
  68. @@ -103,6 +103,8 @@ public:
  69.          Module_CableTypeLinearWeight,
  70.          Module_CableTypeUnitPrice,
  71.          Module_CableTypeTensileStrength,
  72. +        Module_CableInitialElasticModulus,
  73. +        Module_CableLinearExpansionCoeff,
  74.          Module_AtmosphericDischarges,
  75.          Module_AudibleNoise,
  76.          Module_CurrentDistribuition,
  77. @@ -114,6 +116,7 @@ public:
  78.          Module_RiskFailure,
  79.          Module_PLSCADDTools,
  80.          Module_ShieldWireDesign,
  81. +        Module_SagTensionSubstation,
  82.          Module_Last
  83.      };
  84.  
  85. --- src/core/applications/sagtensionsubstation.cpp
  86. +++ src/core/applications/sagtensionsubstation.cpp
  87. @@ -12,9 +12,12 @@ SagTensionSubstation::SagTensionSubstation(Project *project) :
  88.      m_modules[Module_Project] = true;
  89.      m_modules[Module_Report] = true;
  90.      m_modules[Module_TransmissionLine] = true;
  91. +    m_modules[Module_SagTensionSubstation] = true;
  92.      m_modules[Module_CableTypeCrossSection] = true;
  93.      m_modules[Module_CableTypeLinearWeight] = true;
  94.      m_modules[Module_CableTypeTensileStrength] = true;
  95. +    m_modules[Module_CableInitialElasticModulus] = true;
  96. +    m_modules[Module_CableLinearExpansionCoeff] = true;
  97.      //m_modules[Module_CableSag] = true;
  98.      //m_modules[Module_TransmissionLineSpans] = true;
  99.      m_leftChain = new InsulatingChain();
  100. @@ -36,6 +39,13 @@ void SagTensionSubstation::load(QSettings *settings)
  101.      m_cableCount = settings->value("cableCount", "1").toString();
  102.      uint cableTypeId = settings->value("cableTypeId", 0).toUInt();
  103.      m_cableType = g_database->getCableById(cableTypeId);
  104. +    m_windTemperature = settings->value("windTemperature").toString();
  105. +    m_minimumTemperature = settings->value("minimumTemperature").toString();
  106. +    m_windPressure = settings->value("windPressure").toString();
  107. +    m_maximumHorizontalTension = settings->value("maximumHorizontalTension").toString();
  108. +    m_initialTemperature = settings->value("initialTemperature").toString();
  109. +    m_finalTemperature = settings->value("finalTemperature").toString();
  110. +    m_gapTemperature = settings->value("gapTemperature").toString();
  111.  
  112.      m_governingConditions.clear();
  113.      int gSize = settings->beginReadArray("GoverningConditions");
  114. @@ -78,6 +88,14 @@ void SagTensionSubstation::save(QSettings *settings, bool saveTemporary)
  115.      else
  116.          settings->setValue("cableTypeId", 0);
  117.  
  118. +    settings->setValue("windTemperature", m_windTemperature);
  119. +    settings->setValue("minimumTemperature", m_minimumTemperature);
  120. +    settings->setValue("windPressure", m_windPressure);
  121. +    settings->setValue("maximumHorizontalTension", m_maximumHorizontalTension);
  122. +    settings->setValue("initialTemperature", m_initialTemperature);
  123. +    settings->setValue("finalTemperature", m_finalTemperature);
  124. +    settings->setValue("gapTemperature", m_gapTemperature);
  125. +
  126.      settings->beginWriteArray("GoverningConditions");
  127.      for(int i = 0; i < m_governingConditions.size(); ++i) {
  128.          settings->setArrayIndex(i);
  129. --- src/core/applications/sagtensionsubstation.h
  130. +++ src/core/applications/sagtensionsubstation.h
  131. @@ -25,6 +25,13 @@ public:
  132.      void setVerticalDistance(const QString& verticalDistance) { m_verticalDistance = verticalDistance; }
  133.      void setCableCount(const QString& cableCount) { m_cableCount = cableCount; }
  134.      void setCableType(CableTypePtr cableType) { m_cableType = cableType; }
  135. +    void setWindTemperature(QString& windTemperature) { m_windTemperature = windTemperature; }
  136. +    void setMinimumTemperature(QString& minimumTemperature) { m_minimumTemperature = minimumTemperature; }
  137. +    void setWindPressure(QString& windPressure) { m_windPressure = windPressure; }
  138. +    void setMaximumHorizontalTension(QString& maximumHorizontalTension) { m_maximumHorizontalTension = maximumHorizontalTension; }
  139. +    void setInitialTemperature(QString& initialTemperature) { m_initialTemperature = initialTemperature; }
  140. +    void setFinalTemperature(QString& finalTemperature) { m_finalTemperature = finalTemperature; }
  141. +    void setGapTemperature(QString& gapTemperature) { m_gapTemperature = gapTemperature; }
  142.      void setLeftChain(InsulatingChain *leftChain) { m_leftChain = leftChain; }
  143.      void setRightChain(InsulatingChain *rightChain) { m_rightChain = rightChain; }
  144.  
  145. @@ -35,6 +42,20 @@ public:
  146.      double getCableCount() { return m_cableCount.toDouble(); }
  147.      QString getCableCountText() { return m_cableCount; }
  148.      CableTypePtr getCableType() { return m_cableType.lock(); }
  149. +    double getWindTemperature() { return m_windTemperature.toDouble(); }
  150. +    QString getWindTemperatureText() { return m_windTemperature; }
  151. +    double getMinimumTemperature() { return m_minimumTemperature.toDouble(); }
  152. +    QString getMinimumTemperatureText() { return m_minimumTemperature; }
  153. +    double getWindPressure() { return m_windPressure.toDouble(); }
  154. +    QString getWindPressureText() { return m_windPressure; }
  155. +    double getMaximumHorizontalTension() { return m_maximumHorizontalTension.toDouble(); }
  156. +    QString getMaximumHorizontalTensionText() { return m_maximumHorizontalTension; }
  157. +    double getInitialTemperature() { return m_initialTemperature.toDouble(); }
  158. +    QString getInitialTemperatureText() { return m_initialTemperature; }
  159. +    double getFinalTemperature() { return m_finalTemperature.toDouble(); }
  160. +    QString getFinalTemperatureText() { return m_finalTemperature; }
  161. +    double getGapTemperature() { return m_gapTemperature.toDouble(); }
  162. +    QString getGapTemperatureText() { return m_gapTemperature; }
  163.      QVector<CableCondition*>& getGoverningConditions() { return m_governingConditions; }
  164.      QVector<CableCondition*>& getLoadings() { return m_loadings; }
  165.      InsulatingChain *getLeftChain() { return m_leftChain; }
  166. @@ -47,9 +68,15 @@ private:
  167.  
  168.      QString m_span = "100";
  169.      QString m_verticalDistance = "0";
  170. -
  171.      QString m_cableCount = "1";
  172.      CableTypeWeakPtr m_cableType;
  173. +    QString m_windTemperature;
  174. +    QString m_minimumTemperature;
  175. +    QString m_windPressure;
  176. +    QString m_maximumHorizontalTension;
  177. +    QString m_initialTemperature;
  178. +    QString m_finalTemperature;
  179. +    QString m_gapTemperature;
  180.  
  181.      QVector<CableCondition*> m_governingConditions;
  182.      QVector<CableCondition*> m_loadings;
  183. --- src/core/cabletype.cpp
  184. +++ src/core/cabletype.cpp
  185. @@ -36,6 +36,7 @@ void CableType::load(QSettings *settings)
  186.      m_relativeWirePermeability = settings->value("relativeWirePermeability").toString();
  187.      m_initialElasticModulus = settings->value("initialElasticModulus").toString();
  188.      m_finalElasticModulus = settings->value("finalElasticModulus").toString();
  189. +    m_linearExpansionCoeff = settings->value("linearExpansionCoeff").toString();
  190.      m_conductivity = settings->value("conductivity").toString();
  191.      m_acResistance = settings->value("acResistance").toString();
  192.      m_acResistanceTemperature = settings->value("acResistanceTemperature").toString();
  193. @@ -67,6 +68,7 @@ void CableType::save(QSettings *settings, bool saveTemporary)
  194.      settings->setValue("relativeWirePermeability", m_relativeWirePermeability);
  195.      settings->setValue("initialElasticModulus", m_initialElasticModulus);
  196.      settings->setValue("finalElasticModulus", m_finalElasticModulus);
  197. +    settings->setValue("linearExpansionCoeff", m_linearExpansionCoeff);
  198.      settings->setValue("conductivity", m_conductivity);
  199.      settings->setValue("acResistance", m_acResistance);
  200.      settings->setValue("acResistanceTemperature", m_acResistanceTemperature);
  201. --- src/core/cabletype.h
  202. +++ src/core/cabletype.h
  203. @@ -33,6 +33,7 @@ public:
  204.      QString getRelativeWirePermeabilityText() { return m_relativeWirePermeability; }
  205.      QString getInitialElasticModulusText() { return m_initialElasticModulus; }
  206.      QString getFinalElasticModulusText() { return m_finalElasticModulus; }
  207. +    QString getLinearExpansionCoeffText() { return m_linearExpansionCoeff; }
  208.      QString getConductivityText() { return m_conductivity; }
  209.      double getACResistance() { return m_acResistance.toDouble(); }
  210.      QString getACResistanceText() { return m_acResistance; }
  211. @@ -76,6 +77,7 @@ public:
  212.      void setRelativeWirePermeabilityText(const QString& relativeWirePermeability) { m_relativeWirePermeability = relativeWirePermeability; }
  213.      void setInitialElasticModulusText(const QString& elasticModulus) { m_initialElasticModulus = elasticModulus; }
  214.      void setFinalElasticModulusText(const QString& elasticModulus) { m_finalElasticModulus = elasticModulus; }
  215. +    void setLinearExpansionCoeff(const QString& linearExpansionCoeff) { m_linearExpansionCoeff = linearExpansionCoeff; }
  216.      void setConductivityText(const QString& conductivity) { m_conductivity = conductivity; }
  217.      void setACResistanceText(const QString& acResistance) { m_acResistance = acResistance; }
  218.      void setACResistanceTemperatureText(const QString& acResistanceTemperature) { m_acResistanceTemperature = acResistanceTemperature; }
  219. @@ -108,6 +110,7 @@ private:
  220.      QString m_relativeWirePermeability;
  221.      QString m_initialElasticModulus;
  222.      QString m_finalElasticModulus;
  223. +    QString m_linearExpansionCoeff;
  224.      QString m_conductivity;
  225.      QString m_acResistance;
  226.      QString m_acResistanceTemperature;
  227. --- src/views/cabletypeview.cpp
  228. +++ src/views/cabletypeview.cpp
  229. @@ -89,6 +89,7 @@ CableTypeView::CableTypeView(QWidget *parent, CableCategory category) :
  230.      m_relativeWirePermeabilityLabel = new QLabel(tr("Relative wire permeability"));
  231.      m_initialElasticModulusLabel = new QLabel(tr("Initial modulus of elasticity") + QString(" (kgf/mm%1)").arg(QChar(0x00B2)));
  232.      m_finalElasticModulusLabel = new QLabel(tr("Final modulus of elasticity") + QString(" (kgf/mm%1)").arg(QChar(0x00B2)));
  233. +    m_linearExpansionCoeffLabel = new QLabel(tr("Coefficient of linear expansion") + QString(" (1/%1C)").arg(QChar(0x00B0)));
  234.      m_conductivityLabel = new QLabel(tr("Conductivity") + " (S/m)");
  235.      m_acResistanceLabel = new QLabel(tr("AC resistance") + QString(" (%1/km)").arg(QChar(0x2126)));
  236.      m_acResistanceTemperatureLabel = new QLabel(tr("Temperature") + QString(" (%1C)").arg(QChar(0x00B0)));
  237. @@ -113,6 +114,7 @@ CableTypeView::CableTypeView(QWidget *parent, CableCategory category) :
  238.      m_relativeWirePermeability = new InputLineEdit(InputLineEdit::GreaterEqual, 0.0, true);
  239.      m_initialElasticModulus = new InputLineEdit(InputLineEdit::GreaterEqual, 0.0, true);
  240.      m_finalElasticModulus = new InputLineEdit(InputLineEdit::GreaterEqual, 0.0, true);
  241. +    m_linearExpansionCoeff = new InputLineEdit(InputLineEdit::None, 0.0, true);
  242.      m_conductivity = new InputLineEdit(InputLineEdit::GreaterEqual, 0.0, true);
  243.      m_acResistance = new InputLineEdit(InputLineEdit::GreaterEqual, 0.0, true);
  244.      m_acResistanceTemperature = new InputLineEdit(InputLineEdit::GreaterEqual, 0.0, true);
  245. @@ -200,6 +202,8 @@ CableTypeView::CableTypeView(QWidget *parent, CableCategory category) :
  246.      gridLayout->addWidget(m_initialElasticModulus, row++, 1, 1, 7);
  247.      gridLayout->addWidget(m_finalElasticModulusLabel, row, 0);
  248.      gridLayout->addWidget(m_finalElasticModulus, row++, 1, 1, 7);
  249. +    gridLayout->addWidget(m_linearExpansionCoeffLabel, row, 0);
  250. +    gridLayout->addWidget(m_linearExpansionCoeff, row++, 1, 1, 7);
  251.      gridLayout->addWidget(m_conductivityLabel, row, 0);
  252.      gridLayout->addWidget(m_conductivity, row++, 1, 1, 7);
  253.      gridLayout->addWidget(m_acResistanceLabel, row, 0);
  254. @@ -280,6 +284,7 @@ void CableTypeView::updateFromDatabase(int index, int id)
  255.      m_relativeWirePermeability->setText(cable->getRelativeWirePermeabilityText());
  256.      m_initialElasticModulus->setText(cable->getInitialElasticModulusText());
  257.      m_finalElasticModulus->setText(cable->getFinalElasticModulusText());
  258. +    m_linearExpansionCoeff->setText(cable->getLinearExpansionCoeffText());
  259.      m_conductivity->setText(cable->getConductivityText());
  260.      m_acResistance->setText(cable->getACResistanceText());
  261.      m_acResistanceTemperature->setText(cable->getACResistanceTemperatureText());
  262. @@ -332,6 +337,7 @@ void CableTypeView::updateToDatabase(int index)
  263.      cable->setRelativeWirePermeabilityText(m_relativeWirePermeability->text());
  264.      cable->setInitialElasticModulusText(m_initialElasticModulus->text());
  265.      cable->setFinalElasticModulusText(m_finalElasticModulus->text());
  266. +    cable->setLinearExpansionCoeff(m_linearExpansionCoeff->text());
  267.      cable->setConductivityText(m_conductivity->text());
  268.      cable->setACResistanceText(m_acResistance->text());
  269.      cable->setACResistanceTemperatureText(m_acResistanceTemperature->text());
  270. @@ -373,7 +379,7 @@ void CableTypeView::showAllToggle(bool showAll)
  271.      m_relativeWirePermeabilityLabel->setVisible(showRelativeWirePermeability);
  272.      m_relativeWirePermeability->setVisible(showRelativeWirePermeability);
  273.  
  274. -    bool showInitialElasticModulus = showAll;
  275. +    bool showInitialElasticModulus = showAll || g_project->hasModule(Application::Module_CableInitialElasticModulus);
  276.      m_initialElasticModulusLabel->setVisible(showInitialElasticModulus);
  277.      m_initialElasticModulus->setVisible(showInitialElasticModulus);
  278.  
  279. @@ -381,6 +387,10 @@ void CableTypeView::showAllToggle(bool showAll)
  280.      m_finalElasticModulusLabel->setVisible(showFinalElasticModulus);
  281.      m_finalElasticModulus->setVisible(showFinalElasticModulus);
  282.  
  283. +    bool showLinearExpansionCoeff = showAll || g_project->hasModule(Application::Module_CableLinearExpansionCoeff);
  284. +    m_linearExpansionCoeffLabel->setVisible(showLinearExpansionCoeff);
  285. +    m_linearExpansionCoeff->setVisible(showLinearExpansionCoeff);
  286. +
  287.      bool showConductivity = showAll;
  288.      m_conductivityLabel->setVisible(showConductivity);
  289.      m_conductivity->setVisible(showConductivity);
  290. --- src/views/cabletypeview.h
  291. +++ src/views/cabletypeview.h
  292. @@ -45,6 +45,7 @@ private:
  293.      QLabel *m_relativeWirePermeabilityLabel;
  294.      QLabel *m_initialElasticModulusLabel;
  295.      QLabel *m_finalElasticModulusLabel;
  296. +    QLabel *m_linearExpansionCoeffLabel;
  297.      QLabel *m_conductivityLabel;
  298.      QLabel *m_acResistanceLabel;
  299.      QLabel *m_acResistanceTemperatureLabel;
  300. @@ -70,6 +71,7 @@ private:
  301.      QLineEdit *m_relativeWirePermeability;
  302.      QLineEdit *m_initialElasticModulus;
  303.      QLineEdit *m_finalElasticModulus;
  304. +    QLineEdit *m_linearExpansionCoeff;
  305.      QLineEdit *m_conductivity;
  306.      QLineEdit *m_acResistance;
  307.      QLineEdit *m_acResistanceTemperature;
  308. --- src/views/inputview.cpp
  309. +++ src/views/inputview.cpp
  310. @@ -11,6 +11,7 @@
  311.  #include "pipelineinductionview.h"
  312.  #include "substationsview.h"
  313.  #include "substationbarview.h"
  314. +#include "sagtensionsubstationview.h"
  315.  #include "transmissionlinesview.h"
  316.  #include "towersview.h"
  317.  #include "circuitsview.h"
  318. @@ -67,6 +68,9 @@ InputView::InputView(QWidget *parent) :
  319.              insertTab(new TowersView(this), tr("Structures"), "towers", tlTab);
  320.      }
  321.  
  322. +    if(g_project->hasModule(Application::Module_SagTensionSubstation))
  323. +        insertTab(new SagTensionSubstationView(this), tr("Sag Tension"), "sagTensionSubstaion");
  324. +
  325.      if(g_project->hasModule(Application::Module_AudibleNoise))
  326.          insertTab(new AudibleNoiseView(this), tr("Audible Noise"), "audibleNoise");
  327.  
  328. --- src/views/sagtensionsubstationview.cpp
  329. +++ src/views/sagtensionsubstationview.cpp
  330. @@ -6,6 +6,7 @@
  331.  #include "inputview.h"
  332.  #include <widgets/inputlineedit.h>
  333.  #include <widgets/combobox.h>
  334. +#include <core/insulatingchain.h>
  335.  #include <QGridLayout>
  336.  #include <QDialog>
  337.  #include <QMessageBox>
  338. @@ -48,16 +49,23 @@ SagTensionSubstationView::SagTensionSubstationView(InputView *parent) :
  339.      m_maximumHorizontalTensionLabel = new QLabel(tr("Maximum horizontal tension") + " (kgf)");
  340.      m_maximumHorizontalTension = new InputLineEdit(InputLineEdit::GreaterThan, 0.0, true);
  341.      m_temperaturesLabel = new QLabel(tr("Temperatures") + QString(" (%1C)").arg(QChar(0x00B0)));
  342. -    m_initialTemperatureLabel = new QLabel(tr("Initial temperature"));
  343. +    m_initialTemperatureLabel = new QLabel(tr("Initial"));
  344.      m_initialTemperature = new InputLineEdit();
  345. -    m_finalTemperatureLabel = new QLabel(tr("Final temperature"));
  346. +    m_finalTemperatureLabel = new QLabel(tr("Final"));
  347.      m_finalTemperature = new InputLineEdit();
  348.      m_gapTemperatureLabel = new QLabel(tr("Gap"));
  349.      m_gapTemperature = new InputLineEdit();
  350. -    m_insulatingChain1 = new TableWidget(0, 5);
  351. -    m_insulatingChain1->setHorizontalHeaderLabels({tr("Identification"), tr("Weight") + " (kgf)", tr("Area") + QString(" (mm%1)").arg(QChar(0x00B2)), tr("Length") + " (mm)", tr("Amount")});
  352. -    m_insulatingChain2 = new TableWidget(0, 5);
  353. -    m_insulatingChain2->setHorizontalHeaderLabels({tr("Identification"), tr("Weight") + " (kgf)", tr("Area") + QString(" (mm%1)").arg(QChar(0x00B2)), tr("Length") + " (mm)", tr("Amount")});
  354. +    m_insulatingLeftChain = new TableWidget(0, 5);
  355. +    m_insulatingLeftChain->setHorizontalHeaderLabels({tr("Identification"), tr("Weight") + " (kgf)", tr("Area") + QString(" (mm%1)").arg(QChar(0x00B2)), tr("Length") + " (mm)", tr("Amount")});
  356. +    connect(m_insulatingLeftChain, &TableWidget::rowAdded, [this](int index){ tableRowAdded(index, Left); });
  357. +    connect(m_insulatingLeftChain, &TableWidget::rowRemoved, [this](int index){ tableRowRemoved(index, Left); });
  358. +    connect(m_insulatingLeftChain, &TableWidget::cellChanged, [this](int, int column){ tableCellChanged(column, Left);});
  359. +
  360. +    m_insulatingRightChain = new TableWidget(0, 5);
  361. +    m_insulatingRightChain->setHorizontalHeaderLabels({tr("Identification"), tr("Weight") + " (kgf)", tr("Area") + QString(" (mm%1)").arg(QChar(0x00B2)), tr("Length") + " (mm)", tr("Amount")});
  362. +    connect(m_insulatingRightChain, &TableWidget::rowAdded, [this](int index){ tableRowAdded(index, Right); });
  363. +    connect(m_insulatingRightChain, &TableWidget::rowRemoved, [this](int index){ tableRowRemoved(index, Right); });
  364. +    connect(m_insulatingRightChain, &TableWidget::cellChanged, [this](int, int column){ tableCellChanged(column, Right);});
  365.  
  366.      QHBoxLayout *horizontalLayout = new QHBoxLayout;
  367.      horizontalLayout->addWidget(m_span, 1);
  368. @@ -102,10 +110,10 @@ SagTensionSubstationView::SagTensionSubstationView(InputView *parent) :
  369.      row = 0;
  370.      verticalLayout->addWidget(new QLabel("<b>" + tr("Insulating Chain") + " 1</b>"), row++, 0);
  371.      tableLayout1->addWidget(new QLabel("Structure\n     |\n     |\n     |\n     |\n     |\n Cable"),row, 0);
  372. -    tableLayout1->addWidget(m_insulatingChain1, row++, 1);//corrigor espaçamento das colunas
  373. +    tableLayout1->addWidget(m_insulatingLeftChain, row++, 1);//corrigor espaçamento das colunas
  374.      verticalLayout->addLayout(tableLayout1);
  375.  
  376. -    QPushButton *copyButton = new QPushButton(tr("Copy"));
  377. +    QPushButton *copyButton = new QPushButton(tr("Copy from insulating chain 1"));
  378.      connect(copyButton, SIGNAL(clicked(bool)), this, SLOT(copyButtonClicked()));
  379.  
  380.      QHBoxLayout *horizontalLayoutTable = new QHBoxLayout;
  381. @@ -115,7 +123,7 @@ SagTensionSubstationView::SagTensionSubstationView(InputView *parent) :
  382.      row = 0;
  383.      verticalLayout->addLayout(horizontalLayoutTable);
  384.      tableLayout2->addWidget(new QLabel("Structure\n     |\n     |\n     |\n     |\n     |\n Cable"),row, 0);
  385. -    tableLayout2->addWidget(m_insulatingChain2, row++, 1);
  386. +    tableLayout2->addWidget(m_insulatingRightChain, row++, 1);
  387.      verticalLayout->addLayout(tableLayout2);
  388.  
  389.      connect(g_project, SIGNAL(projectPreSave()), this, SLOT(preSave()));
  390. @@ -149,12 +157,21 @@ void SagTensionSubstationView::updateToProject()
  391.          sagTensionSubstation->setCableType(g_database->getCableById(cableId));
  392.      }
  393.      sagTensionSubstation->setCableCount(m_cableCount->text());
  394. -    //wind temperature
  395. -    //minimum temp
  396. -    //wnd pressure
  397. -    //maximum horizontal tension
  398. -    //temperatures (initial, final, gap)
  399. -    //InsulatingChin
  400. +    sagTensionSubstation->setWindTemperature(m_windTemperature->text());
  401. +    sagTensionSubstation->setMinimumTemperature(m_minimumTemperature->text());
  402. +    sagTensionSubstation->setWindPressure(m_windPressure->text());
  403. +    sagTensionSubstation->setMaximumHorizontalTension(m_maximumHorizontalTension->text());
  404. +    sagTensionSubstation->setInitialTemperature(m_initialTemperature->text());
  405. +    sagTensionSubstation->setFinalTemperature(m_finalTemperature->text());
  406. +    sagTensionSubstation->setGapTemperature(m_gapTemperature->text());
  407. +
  408. +    InsulatingChain *leftChain = new InsulatingChain();
  409. +    leftChain->setParts(generateParts(true));
  410. +    sagTensionSubstation->setLeftChain(leftChain);
  411. +
  412. +    InsulatingChain *rightChain = new InsulatingChain();
  413. +    rightChain->setParts(generateParts(false));
  414. +    sagTensionSubstation->setRightChain(rightChain);
  415.  }
  416.  
  417.  void SagTensionSubstationView::updateFromProject()
  418. @@ -180,16 +197,130 @@ void SagTensionSubstationView::updateFromProject()
  419.          cableIndex = m_cables->findData(cableType->getId());
  420.      m_cables->setCurrentIndex(cableIndex);
  421.      m_cables->blockSignals(false);
  422. -    m_cableCount->setText(sagTensionSubstation->getCableCountText());//...
  423. -    //wind temperature
  424. -    //minimum temp
  425. -    //wnd pressure
  426. -    //maximum horizontal tension
  427. -    //temperatures (initial, final, gap)
  428. -    //InsulatingChin
  429. +    m_cableCount->setText(sagTensionSubstation->getCableCountText());
  430. +    m_windTemperature->setText(sagTensionSubstation->getWindTemperatureText());
  431. +    m_minimumTemperature->setText(sagTensionSubstation->getMinimumTemperatureText());
  432. +    m_windPressure->setText(sagTensionSubstation->getWindPressureText());
  433. +    m_maximumHorizontalTension->setText(sagTensionSubstation->getMaximumHorizontalTensionText());
  434. +    m_initialTemperature->setText(sagTensionSubstation->getInitialTemperatureText());
  435. +    m_finalTemperature->setText(sagTensionSubstation->getFinalTemperatureText());
  436. +    m_gapTemperature->setText(sagTensionSubstation->getGapTemperatureText());
  437. +
  438. +    QVector<InsulatingChainPart*> leftParts = sagTensionSubstation->getLeftChain()->getParts();
  439. +    m_insulatingLeftChain->setRowCount(leftParts.count());
  440. +    int row = 0;
  441. +    for(InsulatingChainPart *part : leftParts)
  442. +        createInsulatingChainRow(row++, part, true);
  443. +
  444. +    QVector<InsulatingChainPart*> rightParts = sagTensionSubstation->getRightChain()->getParts();
  445. +    m_insulatingRightChain->setRowCount(rightParts.count());
  446. +    row = 0;
  447. +    for(InsulatingChainPart *part : rightParts)
  448. +        createInsulatingChainRow(row++, part, false);
  449.  }
  450.  
  451.  void SagTensionSubstationView::copyButtonClicked()
  452.  {
  453. +    m_insulatingRightChain->setRowCount(m_insulatingLeftChain->rowCount());
  454. +    for(int row = 0; row < m_insulatingLeftChain->rowCount(); row++) {
  455. +        for(int col = 0; col < m_insulatingLeftChain->columnCount(); col++) {
  456. +            QTableWidgetItem *item = m_insulatingLeftChain->item(row, col);
  457. +            if(item) {
  458. +                QTableWidgetItem *copy = new QTableWidgetItem(*item);
  459. +                m_insulatingRightChain->setItem(row, col, copy);
  460. +            }
  461. +        }
  462. +    }
  463. +}
  464. +
  465. +void SagTensionSubstationView::createInsulatingChainRow(int row, InsulatingChainPart *part, bool left)
  466. +{
  467. +    int col = 0;
  468. +    if(left) {
  469. +        m_insulatingLeftChain->setItem(row, col++, new QTableWidgetItem(part->getDescription()));
  470. +        m_insulatingLeftChain->setItem(row, col++, new QTableWidgetItem(part->getWeightText()));
  471. +        m_insulatingLeftChain->setItem(row, col++, new QTableWidgetItem(part->getLengthText()));
  472. +        m_insulatingLeftChain->setItem(row, col++, new QTableWidgetItem(part->getAreaText()));
  473. +        m_insulatingLeftChain->setItem(row, col++, new QTableWidgetItem(part->getRepeatText()));
  474. +    } else {
  475. +        m_insulatingRightChain->setItem(row, col++, new QTableWidgetItem(part->getDescription()));
  476. +        m_insulatingRightChain->setItem(row, col++, new QTableWidgetItem(part->getWeightText()));
  477. +        m_insulatingRightChain->setItem(row, col++, new QTableWidgetItem(part->getLengthText()));
  478. +        m_insulatingRightChain->setItem(row, col++, new QTableWidgetItem(part->getAreaText()));
  479. +        m_insulatingRightChain->setItem(row, col++, new QTableWidgetItem(part->getRepeatText()));
  480. +    }
  481. +
  482. +}
  483. +
  484. +void SagTensionSubstationView::tableRowAdded(int row, bool left)
  485. +{
  486. +    if(left)
  487. +        m_insulatingLeftChain->insertRow(row);
  488. +    else
  489. +        m_insulatingRightChain->insertRow(row);
  490. +}
  491.  
  492. +void SagTensionSubstationView::tableRowRemoved(int row, bool left)
  493. +{
  494. +    if(left)
  495. +        m_insulatingLeftChain->removeRow(row);
  496. +    else
  497. +        m_insulatingRightChain->removeRow(row);
  498. +}
  499. +
  500. +void SagTensionSubstationView::tableCellChanged(int col, bool left)
  501. +{
  502. +    if(left)
  503. +        m_insulatingLeftChain->resizeColumnToContents(col);
  504. +    else
  505. +        m_insulatingRightChain->resizeColumnToContents(col);
  506. +}
  507. +
  508. +QVector<InsulatingChainPart*> SagTensionSubstationView::generateParts(bool left)
  509. +{
  510. +    QVector<InsulatingChainPart*> parts;
  511. +    if(left) {
  512. +        for(int row = 0; row < m_insulatingLeftChain->rowCount(); row++) {
  513. +            int col = 0;
  514. +            QString description, weight, length, area, repeat;
  515. +            if(m_insulatingLeftChain->item(row, col))
  516. +                description = m_insulatingLeftChain->item(row, col)->text();
  517. +
  518. +            if(m_insulatingLeftChain->item(row, ++col))
  519. +                weight = m_insulatingLeftChain->item(row, col)->text();
  520. +
  521. +            if(m_insulatingLeftChain->item(row, ++col))
  522. +                length = m_insulatingLeftChain->item(row, col)->text();
  523. +
  524. +            if(m_insulatingLeftChain->item(row, ++col))
  525. +                area = m_insulatingLeftChain->item(row, col)->text();
  526. +
  527. +            if(m_insulatingLeftChain->item(row, ++col))
  528. +                repeat = m_insulatingLeftChain->item(row, col)->text();
  529. +
  530. +            parts.append(new InsulatingChainPart(description, weight, length, area, repeat));
  531. +        }
  532. +    } else {
  533. +        for(int row = 0; row < m_insulatingRightChain->rowCount(); row++) {
  534. +            int col = 0;
  535. +            QString description, weight, length, area, repeat;
  536. +            if(m_insulatingRightChain->item(row, col))
  537. +                description = m_insulatingRightChain->item(row, col)->text();
  538. +
  539. +            if(m_insulatingRightChain->item(row, ++col))
  540. +                weight = m_insulatingRightChain->item(row, col)->text();
  541. +
  542. +            if(m_insulatingRightChain->item(row, ++col))
  543. +                length = m_insulatingRightChain->item(row, col)->text();
  544. +
  545. +            if(m_insulatingRightChain->item(row, ++col))
  546. +                area = m_insulatingRightChain->item(row, col)->text();
  547. +
  548. +            if(m_insulatingRightChain->item(row, ++col))
  549. +                repeat = m_insulatingRightChain->item(row, col)->text();
  550. +
  551. +            parts.append(new InsulatingChainPart(description, weight, length, area, repeat));
  552. +        }
  553. +    }
  554. +    return parts;
  555.  }
  556. --- src/views/sagtensionsubstationview.h
  557. +++ src/views/sagtensionsubstationview.h
  558. @@ -7,6 +7,7 @@
  559.  #include <QInputDialog>
  560.  #include <QLabel>
  561.  #include "widgets/tablewidget.h"
  562. +#include "core/insulatingchain.h"
  563.  
  564.  class InputView;
  565.  class ComboBox;
  566. @@ -26,8 +27,19 @@ private slots:
  567.      void preSave();
  568.      void load();
  569.      void copyButtonClicked();
  570. +    void tableRowAdded(int row, bool left);
  571. +    void tableRowRemoved(int row, bool left);
  572. +    void tableCellChanged(int col, bool left);
  573.  
  574.  private:
  575. +    enum Side {
  576. +        Right,
  577. +        Left,
  578. +    };
  579. +
  580. +    void createInsulatingChainRow(int row, InsulatingChainPart *part, bool left);
  581. +    QVector<InsulatingChainPart*> generateParts(bool left);
  582. +
  583.      QLabel *m_spanLabel;
  584.      QLineEdit *m_span;
  585.      QLabel *m_verticalDistanceLabel;
  586. @@ -51,8 +63,8 @@ private:
  587.      QLineEdit *m_finalTemperature;
  588.      QLabel *m_gapTemperatureLabel;
  589.      QLineEdit *m_gapTemperature;
  590. -    TableWidget *m_insulatingChain1; //check TableWidget *m_governmentConditions;
  591. -    TableWidget *m_insulatingChain2;
  592. +    TableWidget *m_insulatingLeftChain; //check TableWidget *m_governmentConditions;
  593. +    TableWidget *m_insulatingRightChain;//resizeColumnsToContents();
  594.  
  595.      InputView *m_inputView;
  596.  };
  597. --- src/views/views.pro
  598. +++ src/views/views.pro
  599. @@ -61,7 +61,8 @@ HEADERS = \
  600.      cablesagview.h \
  601.      reports/conductorbundlereportview.h \
  602.      profilegraphview.h \
  603. -    profilegraph.h
  604. +    profilegraph.h \
  605. +    sagtensionsubstationview.h
  606.  
  607.  SOURCES = \
  608.      audiblenoiseview.cpp \
  609. @@ -117,7 +118,8 @@ SOURCES = \
  610.      cablesagview.cpp \
  611.      reports/conductorbundlereportview.cpp \
  612.      profilegraphview.cpp \
  613. -    profilegraph.cpp
  614. +    profilegraph.cpp \
  615. +    sagtensionsubstationview.cpp
  616.  
  617.  TEMPLATE = lib
  618.  TARGET = views
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement