Added Rocksim database

This commit is contained in:
Travis Hunter 2023-04-17 18:54:02 -06:00
parent c319a18bbe
commit 69344be572
8 changed files with 76 additions and 2 deletions

View File

@ -88,3 +88,12 @@ int QtRocket::run(int argc, char* argv[])
} }
return 0; return 0;
} }
void QtRocket::addMotorModels(std::vector<MotorModel>& m)
{
for(const auto& i : m)
{
motorModels.push_back(i);
}
// TODO: Now clear any duplicates?
}

View File

@ -35,6 +35,8 @@ public:
std::shared_ptr<sim::GravityModel> getGravityModel() { return gravity; } std::shared_ptr<sim::GravityModel> getGravityModel() { return gravity; }
std::shared_ptr<sim::AtmosphericModel> getAtmosphereModel() { return atmosphere; } std::shared_ptr<sim::AtmosphericModel> getAtmosphereModel() { return atmosphere; }
void addMotorModels(std::vector<MotorModel>& m);
private: private:
QtRocket(); QtRocket();

View File

@ -8,7 +8,7 @@
#include "utils/RSEDatabaseLoader.h" #include "utils/RSEDatabaseLoader.h"
#include <QTextStream> #include <QFileDialog>
#include <memory> #include <memory>
#include <iostream> #include <iostream>
@ -112,3 +112,26 @@ void MainWindow::on_testButton2_clicked()
} }
void MainWindow::on_loadRSE_button_clicked()
{
QString rseFile = QFileDialog::getOpenFileName(this,
tr("Import RSE Database File"),
"/home",
tr("RSE Files (*.rse)"));
utils::RSEDatabaseLoader loader(rseFile.toStdString());
ui->rocketPartButtons->findChild<QLineEdit*>(QString("databaseFileLine"))->setText(rseFile);
QComboBox* engineSelector =
ui->rocketPartButtons->findChild<QComboBox*>(QString("engineSelectorComboBox"));
const std::vector<MotorModel>& motors = loader.getMotors();
for(const auto& motor : motors)
{
std::cout << "Adding: " << motor.commonName << std::endl;
engineSelector->addItem(QString(motor.commonName.c_str()));
}
}

View File

@ -25,6 +25,8 @@ private slots:
void on_testButton2_clicked(); void on_testButton2_clicked();
void on_loadRSE_button_clicked();
private: private:
Ui::MainWindow* ui; Ui::MainWindow* ui;
QtRocket* qtRocket; QtRocket* qtRocket;

View File

@ -167,6 +167,35 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>90</x>
<y>220</y>
<width>421</width>
<height>80</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QPushButton" name="loadRSE_button">
<property name="text">
<string>Load RSE Database File</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="databaseFileLine">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QComboBox" name="engineSelectorComboBox"/>
</item>
</layout>
</widget>
</widget> </widget>
</widget> </widget>
<widget class="QCustomPlot" name="plotWindow" native="true"/> <widget class="QCustomPlot" name="plotWindow" native="true"/>

View File

@ -49,6 +49,7 @@ public:
struct MotorAvailability struct MotorAvailability
{ {
MotorAvailability(const AVAILABILITY& a) : availability(a) {} MotorAvailability(const AVAILABILITY& a) : availability(a) {}
MotorAvailability(const MotorAvailability&) = default;
MotorAvailability(MotorAvailability&&) = default; MotorAvailability(MotorAvailability&&) = default;
MotorAvailability() : MotorAvailability(AVAILABILITY::REGULAR) {} MotorAvailability() : MotorAvailability(AVAILABILITY::REGULAR) {}
@ -68,6 +69,7 @@ public:
struct CertOrg struct CertOrg
{ {
CertOrg(const CERTORG& c) : org(c) {} CertOrg(const CERTORG& c) : org(c) {}
CertOrg(const CertOrg&) = default;
CertOrg(CertOrg&&) = default; CertOrg(CertOrg&&) = default;
CertOrg() : CertOrg(CERTORG::UNC) {} CertOrg() : CertOrg(CERTORG::UNC) {}
@ -95,6 +97,7 @@ public:
struct MotorType struct MotorType
{ {
MotorType(const MOTORTYPE& t) : type(t) {} MotorType(const MOTORTYPE& t) : type(t) {}
MotorType(const MotorType&) = default;
MotorType(MotorType&&) = default; MotorType(MotorType&&) = default;
MotorType() : MotorType(MOTORTYPE::SU) {} MotorType() : MotorType(MOTORTYPE::SU) {}

View File

@ -5,6 +5,8 @@
#include <iostream> #include <iostream>
#include <cmath> #include <cmath>
#include "QtRocket.h"
namespace utils { namespace utils {
RSEDatabaseLoader::RSEDatabaseLoader(const std::string& filename) RSEDatabaseLoader::RSEDatabaseLoader(const std::string& filename)
@ -19,6 +21,7 @@ RSEDatabaseLoader::RSEDatabaseLoader(const std::string& filename)
buildAndAppendMotorModel(v.second); buildAndAppendMotorModel(v.second);
} }
QtRocket::getInstance()->addMotorModels(motors);
} }
RSEDatabaseLoader::~RSEDatabaseLoader() RSEDatabaseLoader::~RSEDatabaseLoader()
@ -81,15 +84,17 @@ void RSEDatabaseLoader::buildAndAppendMotorModel(boost::property_tree::ptree& v)
double fdata = w.second.get<double>("<xmlattr>.f"); double fdata = w.second.get<double>("<xmlattr>.f");
thrustData.push_back(std::make_pair(tdata, fdata)); thrustData.push_back(std::make_pair(tdata, fdata));
} }
/*
std::cout << "\n--------------------------------------------\n"; std::cout << "\n--------------------------------------------\n";
std::cout << "name: " << mm.commonName << std::endl; std::cout << "name: " << mm.commonName << std::endl;
std::cout << "impulseClass: " << mm.impulseClass << std::endl;
std::cout << "length: " << mm.length << std::endl; std::cout << "length: " << mm.length << std::endl;
std::cout << "manufacturer: " << mm.manufacturer << std::endl; std::cout << "manufacturer: " << mm.manufacturer << std::endl;
std::cout << "maxThrust: " << mm.maxThrust << std::endl; std::cout << "maxThrust: " << mm.maxThrust << std::endl;
std::cout << "propWeight: " << mm.propWeight << std::endl; std::cout << "propWeight: " << mm.propWeight << std::endl;
std::cout << "totalImpulse: " << mm.totalImpulse << std::endl; std::cout << "totalImpulse: " << mm.totalImpulse << std::endl;
std::cout << "--------------------------------------------\n"; std::cout << "--------------------------------------------\n";
/*
std::cout << "thrust data:\n"; std::cout << "thrust data:\n";
for(const auto& i : thrustData) for(const auto& i : thrustData)
{ {

View File

@ -16,6 +16,7 @@ public:
RSEDatabaseLoader(const std::string& filename); RSEDatabaseLoader(const std::string& filename);
~RSEDatabaseLoader(); ~RSEDatabaseLoader();
const std::vector<MotorModel>& getMotors() const { return motors; }
private: private:
std::vector<MotorModel> motors; std::vector<MotorModel> motors;