make primitive task box work

This commit is contained in:
Stefan Tröger 2015-05-19 20:05:17 +02:00
parent 7654659c18
commit 1f180a11da
3 changed files with 113 additions and 45 deletions

View File

@ -43,29 +43,40 @@
using namespace PartDesignGui;
TaskBoxPrimitives::TaskBoxPrimitives(PartDesign::FeaturePrimitive::Type t, QWidget* parent)
: TaskBox(QPixmap(),tr("Primitive parameters"), true, parent)
TaskBoxPrimitives::TaskBoxPrimitives(ViewProviderPrimitive* vp, QWidget* parent)
: vp(vp), TaskBox(QPixmap(),tr("Primitive parameters"), true, parent)
{
proxy = new QWidget(this);
ui.setupUi(proxy);
// set limits
// plane
ui.planeLength->setMaximum(INT_MAX);
ui.planeWidth->setMaximum(INT_MAX);
// box
ui.boxLength->setMaximum(INT_MAX);
ui.boxLength->setMaximum(INT_MAX);
ui.boxWidth->setMaximum(INT_MAX);
ui.boxHeight->setMaximum(INT_MAX);
connect(ui.boxLength, SIGNAL(valueChanged(double)), this, SLOT(onBoxLengthChanged(double)));
connect(ui.boxWidth, SIGNAL(valueChanged(double)), this, SLOT(onBoxWidthChanged(double)));
connect(ui.boxHeight, SIGNAL(valueChanged(double)), this, SLOT(onBoxHeightChanged(double)));
// cylinder
ui.cylinderRadius->setMaximum(INT_MAX);
ui.cylinderHeight->setMaximum(INT_MAX);
connect(ui.cylinderRadius, SIGNAL(valueChanged(double)), this, SLOT(onCylinderRadiusChanged(double)));
connect(ui.cylinderHeight, SIGNAL(valueChanged(double)), this, SLOT(onCylinderHeightChanged(double)));
connect(ui.cylinderAngle, SIGNAL(valueChanged(double)), this, SLOT(onCylinderAngleChanged(double)));
// cone
ui.coneRadius1->setMaximum(INT_MAX);
ui.coneRadius2->setMaximum(INT_MAX);
ui.coneHeight->setMaximum(INT_MAX);
// sphere
ui.sphereRadius->setMaximum(INT_MAX);
connect(ui.sphereRadius, SIGNAL(valueChanged(double)), this, SLOT(onSphereRadiusChanged(double)));
connect(ui.sphereAngle1, SIGNAL(valueChanged(double)), this, SLOT(onSphereAngle1Changed(double)));
connect(ui.sphereAngle2, SIGNAL(valueChanged(double)), this, SLOT(onSphereAngle2Changed(double)));
connect(ui.sphereAngle3, SIGNAL(valueChanged(double)), this, SLOT(onSphereAngle3Changed(double)));
// ellipsoid
ui.ellipsoidRadius1->setMaximum(INT_MAX);
ui.ellipsoidRadius2->setMaximum(INT_MAX);
@ -94,47 +105,30 @@ TaskBoxPrimitives::TaskBoxPrimitives(PartDesign::FeaturePrimitive::Type t, QWidg
ui.wedgeX2max->setMaximum(INT_MAX);
ui.wedgeZ2max->setMinimum(INT_MIN);
ui.wedgeZ2max->setMaximum(INT_MAX);
// helix
ui.helixPitch->setMaximum(INT_MAX);
ui.helixHeight->setMaximum(INT_MAX);
ui.helixRadius->setMaximum(INT_MAX);
// circle
ui.circleRadius->setMaximum(INT_MAX);
// vertex
ui.vertexX->setMaximum(INT_MAX);
ui.vertexY->setMaximum(INT_MAX);
ui.vertexZ->setMaximum(INT_MAX);
ui.vertexX->setMinimum(INT_MIN);
ui.vertexY->setMinimum(INT_MIN);
ui.vertexZ->setMinimum(INT_MIN);
// line
ui.edgeX1->setMaximum(INT_MAX);
ui.edgeX1->setMinimum(INT_MIN);
ui.edgeY1->setMaximum(INT_MAX);
ui.edgeY1->setMinimum(INT_MIN);
ui.edgeZ1->setMaximum(INT_MAX);
ui.edgeZ1->setMinimum(INT_MIN);
ui.edgeX2->setMaximum(INT_MAX);
ui.edgeX2->setMinimum(INT_MIN);
ui.edgeY2->setMaximum(INT_MAX);
ui.edgeY2->setMinimum(INT_MIN);
ui.edgeZ2->setMaximum(INT_MAX);
ui.edgeZ2->setMinimum(INT_MIN);
// RegularPolygon
this->groupLayout()->addWidget(proxy);
int index = 0;
switch(t) {
switch(static_cast<PartDesign::FeaturePrimitive*>(vp->getObject())->getPrimitiveType()) {
case PartDesign::FeaturePrimitive::Box:
index = 1;
ui.boxLength->setValue(static_cast<PartDesign::Box*>(vp->getObject())->Length.getValue());
ui.boxHeight->setValue(static_cast<PartDesign::Box*>(vp->getObject())->Height.getValue());
ui.boxWidth->setValue(static_cast<PartDesign::Box*>(vp->getObject())->Width.getValue());
break;
case PartDesign::FeaturePrimitive::Cylinder:
index = 2;
ui.cylinderAngle->setValue(static_cast<PartDesign::Cylinder*>(vp->getObject())->Angle.getValue());
ui.cylinderHeight->setValue(static_cast<PartDesign::Cylinder*>(vp->getObject())->Height.getValue());
ui.cylinderRadius->setValue(static_cast<PartDesign::Cylinder*>(vp->getObject())->Radius.getValue());
break;
case PartDesign::FeaturePrimitive::Sphere:
index = 4;
ui.sphereAngle1->setValue(static_cast<PartDesign::Sphere*>(vp->getObject())->Angle1.getValue());
ui.sphereAngle2->setValue(static_cast<PartDesign::Sphere*>(vp->getObject())->Angle2.getValue());
ui.sphereAngle3->setValue(static_cast<PartDesign::Sphere*>(vp->getObject())->Angle3.getValue());
ui.sphereRadius->setValue(static_cast<PartDesign::Sphere*>(vp->getObject())->Radius.getValue());
break;
}
@ -154,6 +148,67 @@ TaskBoxPrimitives::~TaskBoxPrimitives()
{
}
void TaskBoxPrimitives::onBoxHeightChanged(double v) {
PartDesign::Box* box = static_cast<PartDesign::Box*>(vp->getObject());
box->Height.setValue(v);
vp->getObject()->getDocument()->recomputeFeature(vp->getObject());
}
void TaskBoxPrimitives::onBoxWidthChanged(double v) {
PartDesign::Box* box = static_cast<PartDesign::Box*>(vp->getObject());
box->Width.setValue(v);
vp->getObject()->getDocument()->recomputeFeature(vp->getObject());
}
void TaskBoxPrimitives::onBoxLengthChanged(double v) {
PartDesign::Box* box = static_cast<PartDesign::Box*>(vp->getObject());
box->Length.setValue(v);
vp->getObject()->getDocument()->recomputeFeature(vp->getObject());
}
void TaskBoxPrimitives::onCylinderAngleChanged(double v) {
PartDesign::Cylinder* cyl = static_cast<PartDesign::Cylinder*>(vp->getObject());
cyl->Angle.setValue(v);
vp->getObject()->getDocument()->recomputeFeature(vp->getObject());
}
void TaskBoxPrimitives::onCylinderHeightChanged(double v) {
PartDesign::Cylinder* cyl = static_cast<PartDesign::Cylinder*>(vp->getObject());
cyl->Height.setValue(v);
vp->getObject()->getDocument()->recomputeFeature(vp->getObject());
}
void TaskBoxPrimitives::onCylinderRadiusChanged(double v) {
PartDesign::Cylinder* cyl = static_cast<PartDesign::Cylinder*>(vp->getObject());
cyl->Radius.setValue(v);
vp->getObject()->getDocument()->recomputeFeature(vp->getObject());
}
void TaskBoxPrimitives::onSphereAngle1Changed(double v) {
PartDesign::Sphere* sph = static_cast<PartDesign::Sphere*>(vp->getObject());
sph->Angle1.setValue(v);
vp->getObject()->getDocument()->recomputeFeature(vp->getObject());
}
void TaskBoxPrimitives::onSphereAngle2Changed(double v) {
PartDesign::Sphere* sph = static_cast<PartDesign::Sphere*>(vp->getObject());
sph->Angle2.setValue(v);
vp->getObject()->getDocument()->recomputeFeature(vp->getObject());
}
void TaskBoxPrimitives::onSphereAngle3Changed(double v) {
PartDesign::Sphere* sph = static_cast<PartDesign::Sphere*>(vp->getObject());
sph->Angle3.setValue(v);
vp->getObject()->getDocument()->recomputeFeature(vp->getObject());
}
void TaskBoxPrimitives::onSphereRadiusChanged(double v) {
PartDesign::Sphere* sph = static_cast<PartDesign::Sphere*>(vp->getObject());
sph->Radius.setValue(v);
vp->getObject()->getDocument()->recomputeFeature(vp->getObject());
}
/*
void TaskBoxPrimitives::createPrimitive(const QString& placement)
{
@ -498,7 +553,7 @@ TaskPrimitiveParameters::TaskPrimitiveParameters(ViewProviderPrimitive* Primitiv
parameter = new TaskDatumParameters(vp);
Content.push_back(parameter);
primitive = new TaskBoxPrimitives(prm->getPrimitiveType());
primitive = new TaskBoxPrimitives(PrimitiveView);
Content.push_back(primitive);
}

View File

@ -53,12 +53,25 @@ class TaskBoxPrimitives : public Gui::TaskView::TaskBox
Q_OBJECT
public:
TaskBoxPrimitives(PartDesign::FeaturePrimitive::Type t, QWidget* parent = 0);
TaskBoxPrimitives(ViewProviderPrimitive* vp, QWidget* parent = 0);
~TaskBoxPrimitives();
public Q_SLOTS:
void onBoxLengthChanged(double);
void onBoxWidthChanged(double);
void onBoxHeightChanged(double);
void onCylinderRadiusChanged(double);
void onCylinderHeightChanged(double);
void onCylinderAngleChanged(double);
void onSphereRadiusChanged(double);
void onSphereAngle1Changed(double);
void onSphereAngle2Changed(double);
void onSphereAngle3Changed(double);
private:
QWidget* proxy;
Ui_DlgPrimitives ui;
ViewProviderPrimitive* vp;
};
class TaskPrimitiveParameters : public Gui::TaskView::TaskDialog

View File

@ -20,12 +20,12 @@
<item>
<widget class="QStackedWidget" name="widgetStack">
<property name="currentIndex">
<number>0</number>
<number>4</number>
</property>
<widget class="QWidget" name="page0_plane">
<layout class="QGridLayout">
<property name="margin">
<number>9</number>
<number>0</number>
</property>
<property name="spacing">
<number>6</number>
@ -81,8 +81,8 @@
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
@ -92,7 +92,7 @@
<widget class="QWidget" name="Page1_box">
<layout class="QGridLayout" name="_3">
<property name="margin">
<number>9</number>
<number>0</number>
</property>
<property name="spacing">
<number>6</number>
@ -179,7 +179,7 @@
<widget class="QWidget" name="Page2_cylinder">
<layout class="QGridLayout" name="_5">
<property name="margin">
<number>9</number>
<number>0</number>
</property>
<property name="spacing">
<number>6</number>
@ -286,7 +286,7 @@
<widget class="QWidget" name="Page3_cone">
<layout class="QGridLayout" name="_8">
<property name="margin">
<number>9</number>
<number>0</number>
</property>
<property name="spacing">
<number>6</number>
@ -410,7 +410,7 @@
<widget class="QWidget" name="Page4_sphere">
<layout class="QGridLayout" name="_11">
<property name="margin">
<number>9</number>
<number>0</number>
</property>
<property name="spacing">
<number>6</number>