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;
}
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::AtmosphericModel> getAtmosphereModel() { return atmosphere; }
void addMotorModels(std::vector<MotorModel>& m);
private:
QtRocket();

View File

@ -8,7 +8,7 @@
#include "utils/RSEDatabaseLoader.h"
#include <QTextStream>
#include <QFileDialog>
#include <memory>
#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_loadRSE_button_clicked();
private:
Ui::MainWindow* ui;
QtRocket* qtRocket;

View File

@ -167,6 +167,35 @@
</item>
</layout>
</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 class="QCustomPlot" name="plotWindow" native="true"/>

View File

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

View File

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

View File

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