diff --git a/src/Mod/PartDesign/App/FeaturePad.cpp b/src/Mod/PartDesign/App/FeaturePad.cpp index dc2edbe054..6265075f01 100644 --- a/src/Mod/PartDesign/App/FeaturePad.cpp +++ b/src/Mod/PartDesign/App/FeaturePad.cpp @@ -70,7 +70,7 @@ Pad::Pad() ADD_PROPERTY_TYPE(Length2, (100.0), "Pad", App::Prop_None,"Second Pad length"); ADD_PROPERTY_TYPE(UseCustomVector, (0), "Pad", App::Prop_None, "Use custom vector for pad direction"); ADD_PROPERTY_TYPE(Direction, (Base::Vector3d(1.0, 1.0, 1.0)), "Pad", App::Prop_None, "Pad direction vector"); - ADD_PROPERTY_TYPE(AlongCustomVector, (1), "Pad", App::Prop_None, "Measure length along custom direction vector"); + ADD_PROPERTY_TYPE(AlongCustomVector, (true), "Pad", App::Prop_None, "Measure length along custom direction vector"); ADD_PROPERTY_TYPE(UpToFace, (0), "Pad", App::Prop_None, "Face where pad will end"); ADD_PROPERTY_TYPE(Offset, (0.0), "Pad", App::Prop_None, "Offset from face in which pad will end"); static const App::PropertyQuantityConstraint::Constraints signedLengthConstraint = {-DBL_MAX, DBL_MAX, 1.0}; diff --git a/src/Mod/PartDesign/App/FeatureSketchBased.cpp b/src/Mod/PartDesign/App/FeatureSketchBased.cpp index bc6169fa3d..bee0e7242b 100644 --- a/src/Mod/PartDesign/App/FeatureSketchBased.cpp +++ b/src/Mod/PartDesign/App/FeatureSketchBased.cpp @@ -590,6 +590,8 @@ void ProfileBased::generatePrism(TopoDS_Shape& prism, Ltotal += L2; if (reversed) Loffset = -L; + else if (midplane) + Loffset = -0.5 * (L2 + L); else Loffset = -L2; } else if (midplane) diff --git a/src/Mod/PartDesign/Gui/TaskPadParameters.cpp b/src/Mod/PartDesign/Gui/TaskPadParameters.cpp index f2e927fe47..f5dc799f9e 100644 --- a/src/Mod/PartDesign/Gui/TaskPadParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPadParameters.cpp @@ -157,9 +157,9 @@ TaskPadParameters::TaskPadParameters(ViewProviderPad *PadView, QWidget *parent, connect(ui->lengthEdit2, SIGNAL(valueChanged(double)), this, SLOT(onLength2Changed(double))); connect(ui->checkBoxAlongDirection, SIGNAL(toggled(bool)), - this, SLOT(onCBAlongDirectionChanged(bool))); + this, SLOT(onAlongDirectionChanged(bool))); connect(ui->groupBoxDirection, SIGNAL(toggled(bool)), - this, SLOT(onGBDirectionChanged(bool))); + this, SLOT(onDirectionToggled(bool))); connect(ui->XDirectionEdit, SIGNAL(valueChanged(double)), this, SLOT(onXDirectionEditChanged(double))); connect(ui->YDirectionEdit, SIGNAL(valueChanged(double)), @@ -204,8 +204,8 @@ void TaskPadParameters::updateUI(int index) bool isLengthEdit2Visible = false; bool isOffsetEditVisible = false; bool isMidplateEnabled = false; - bool isReversedEnabled = true; - bool isReversedVisible = true; + bool isReversedEnabled = false; + bool isReversedVisible = false; bool isFaceEditEnabled = false; // dimension @@ -216,22 +216,19 @@ void TaskPadParameters::updateUI(int index) // Calling setFocus() directly doesn't work because the spin box is not // yet visible. QMetaObject::invokeMethod(ui->lengthEdit, "setFocus", Qt::QueuedConnection); - isMidplateEnabled = true; + isMidplateEnabled = !ui->checkBoxReversed->isChecked(); // Reverse only makes sense if Midplane is not true isReversedEnabled = !ui->checkBoxMidplane->isChecked(); + isReversedVisible = true; } // up to first/last else if (index == 1 || index == 2) { isOffsetEditVisible = true; - isReversedEnabled = false; - isReversedVisible = false; } // up to face else if (index == 3) { isOffsetEditVisible = true; isFaceEditEnabled = true; - isReversedEnabled = false; - isReversedVisible = false; QMetaObject::invokeMethod(ui->lineFaceName, "setFocus", Qt::QueuedConnection); // Go into reference selection mode if no face has been selected yet if (ui->lineFaceName->property("FeatureName").isNull()) @@ -241,6 +238,9 @@ void TaskPadParameters::updateUI(int index) else { isLengthEditVisible = true; isLengthEdit2Visible = true; + isMidplateEnabled = !ui->checkBoxReversed->isChecked(); + isReversedEnabled = !ui->checkBoxMidplane->isChecked(); + isReversedVisible = true; } ui->lengthEdit->setVisible( isLengthEditVisible ); @@ -310,14 +310,14 @@ void TaskPadParameters::onLength2Changed(double len) recomputeFeature(); } -void TaskPadParameters::onCBAlongDirectionChanged(bool on) +void TaskPadParameters::onAlongDirectionChanged(bool on) { PartDesign::Pad* pcPad = static_cast(vp->getObject()); pcPad->AlongCustomVector.setValue(on); recomputeFeature(); } -void TaskPadParameters::onGBDirectionChanged(bool on) +void TaskPadParameters::onDirectionToggled(bool on) { PartDesign::Pad* pcPad = static_cast(vp->getObject()); pcPad->UseCustomVector.setValue(on); diff --git a/src/Mod/PartDesign/Gui/TaskPadParameters.h b/src/Mod/PartDesign/Gui/TaskPadParameters.h index ede9b7278c..f639496331 100644 --- a/src/Mod/PartDesign/Gui/TaskPadParameters.h +++ b/src/Mod/PartDesign/Gui/TaskPadParameters.h @@ -58,8 +58,8 @@ public: private Q_SLOTS: void onLengthChanged(double); void onLength2Changed(double); - void onCBAlongDirectionChanged(bool); - void onGBDirectionChanged(bool); + void onAlongDirectionChanged(bool); + void onDirectionToggled(bool); void onXDirectionEditChanged(double); void onYDirectionEditChanged(double); void onZDirectionEditChanged(double);