122 lines
3.0 KiB
C++
122 lines
3.0 KiB
C++
|
|
#include "dialogCreateSphere.h"
|
|||
|
|
#include "ui_dialogCreateSphere.h"
|
|||
|
|
#include "geoPointWidget.h"
|
|||
|
|
#include "Geometry/geometrySet.h"
|
|||
|
|
#include "GeometryCommand/GeoCommandCreateSphere.h"
|
|||
|
|
#include "GeometryCommand/GeoCommandList.h"
|
|||
|
|
#include <QMessageBox>
|
|||
|
|
#include "Geometry/geometryParaSphere.h"
|
|||
|
|
#include "PythonModule/PyAgent.h"
|
|||
|
|
|
|||
|
|
namespace GeometryWidget
|
|||
|
|
{
|
|||
|
|
CreateSphereDialog::CreateSphereDialog(GUI::MainWindow *m, MainWidget::PreWindow *p)
|
|||
|
|
: GeoDialogBase(m, p)
|
|||
|
|
{
|
|||
|
|
_ui = new Ui::CreateSphere;
|
|||
|
|
_ui->setupUi(this);
|
|||
|
|
init();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CreateSphereDialog::CreateSphereDialog(GUI::MainWindow *m, MainWidget::PreWindow *p, Geometry::GeometrySet *set) : GeoDialogBase(m, p)
|
|||
|
|
{
|
|||
|
|
_ui = new Ui::CreateSphere;
|
|||
|
|
_ui->setupUi(this);
|
|||
|
|
_isEdit = true;
|
|||
|
|
_editSet = set;
|
|||
|
|
this->setWindowTitle("Edit Sphere");
|
|||
|
|
init();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CreateSphereDialog::~CreateSphereDialog()
|
|||
|
|
{
|
|||
|
|
if (_ui != nullptr)
|
|||
|
|
delete _ui;
|
|||
|
|
}
|
|||
|
|
//
|
|||
|
|
// void CreateSphereDialog::closeEvent(QCloseEvent *e)
|
|||
|
|
// {
|
|||
|
|
// QDialog::closeEvent(e);
|
|||
|
|
// delete this;
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
void CreateSphereDialog::init()
|
|||
|
|
{
|
|||
|
|
_pw = new GeoPointWidget(_mainWindow, _preWindow);
|
|||
|
|
_ui->verticalLayout->addWidget(_pw);
|
|||
|
|
this->translateButtonBox(_ui->buttonBox);
|
|||
|
|
|
|||
|
|
if (!_isEdit)
|
|||
|
|
{
|
|||
|
|
int id = Geometry::GeometrySet::getMaxID() + 1;
|
|||
|
|
_ui->namelineEdit->setPlaceholderText(QString("Sphere_%1").arg(id));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if (_editSet == nullptr)
|
|||
|
|
return;
|
|||
|
|
_ui->namelineEdit->setText(_editSet->getName());
|
|||
|
|
_ui->namelineEdit->setEnabled(false);
|
|||
|
|
Geometry::GeometryModelParaBase *pb = _editSet->getParameter();
|
|||
|
|
Geometry::GeometryParaSphere *p = dynamic_cast<Geometry::GeometryParaSphere *>(pb);
|
|||
|
|
if (p == nullptr)
|
|||
|
|
return;
|
|||
|
|
double loc[3] = {0.0};
|
|||
|
|
p->getLocation(loc);
|
|||
|
|
_ui->doubleSpinBoxR->setValue(p->getRadius());
|
|||
|
|
_pw->setCoordinate(loc);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CreateSphereDialog::reject()
|
|||
|
|
{
|
|||
|
|
QDialog::reject();
|
|||
|
|
this->close();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CreateSphereDialog::accept()
|
|||
|
|
{
|
|||
|
|
double corner[3] = {0.0};
|
|||
|
|
bool ok = _pw->getCoordinate(corner);
|
|||
|
|
|
|||
|
|
QString name = _ui->namelineEdit->text();
|
|||
|
|
if (name.isEmpty())
|
|||
|
|
name = _ui->namelineEdit->placeholderText();
|
|||
|
|
if (ok)
|
|||
|
|
ok = !name.isEmpty();
|
|||
|
|
if (!ok)
|
|||
|
|
{
|
|||
|
|
QMessageBox::warning(this, tr("Warning"), tr("Input Wrong !"));
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
double r = _ui->doubleSpinBoxR->value();
|
|||
|
|
/*
|
|||
|
|
|
|||
|
|
Command::GeoCommandCreateSphere* c = new Command::GeoCommandCreateSphere(_mainWindow, _preWindow);
|
|||
|
|
c->setLocation(corner);
|
|||
|
|
c->setName(name);
|
|||
|
|
c->setRadius(r);
|
|||
|
|
if (_isEdit) c->setEditData(_editSet);
|
|||
|
|
Command::GeoComandList::getInstance()->executeCommand(c);
|
|||
|
|
*/
|
|||
|
|
QStringList codes{};
|
|||
|
|
codes += QString("sphere = CAD.Sphere()");
|
|||
|
|
if (_isEdit)
|
|||
|
|
codes += QString("sphere.setEditID(%1)").arg(_editSet->getID());
|
|||
|
|
else
|
|||
|
|
codes += QString("sphere.setName('%1')").arg(name);
|
|||
|
|
codes += QString("sphere.setLocation(%1,%2,%3)").arg(corner[0]).arg(corner[1]).arg(corner[2]);
|
|||
|
|
codes += QString("sphere.setRadius(%1)").arg(r);
|
|||
|
|
if (_isEdit)
|
|||
|
|
codes += QString("sphere.edit()");
|
|||
|
|
else
|
|||
|
|
codes += QString("sphere.create()");
|
|||
|
|
|
|||
|
|
_pyAgent->submit(codes);
|
|||
|
|
QDialog::accept();
|
|||
|
|
this->close();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|