diff --git a/src/Mod/PartDesign/App/FeaturePad.cpp b/src/Mod/PartDesign/App/FeaturePad.cpp index ca02bf850..1b97da8fe 100644 --- a/src/Mod/PartDesign/App/FeaturePad.cpp +++ b/src/Mod/PartDesign/App/FeaturePad.cpp @@ -112,18 +112,21 @@ App::DocumentObjectExecReturn *Pad::execute(void) gp_Dir dir(SketchVector.x,SketchVector.y,SketchVector.z); dir.Transform(invObjLoc.Transformation()); - + TopoDS_Shape sketchshape = makeFace(wires); if (sketchshape.IsNull()) return new App::DocumentObjectExecReturn("Pad: Creating a face from sketch failed"); sketchshape.Move(invObjLoc); - + TopoDS_Shape prism; std::string method(Type.getValueAsString()); if (method == "UpToFirst" || method == "UpToLast" || method == "UpToFace") { TopoDS_Face supportface = getSupportFace(); supportface.Move(invObjLoc); + if (Reversed.getValue()) + dir.Reverse(); + // Find a valid face to extrude up to TopoDS_Face upToFace; if (method == "UpToFace") { @@ -154,7 +157,7 @@ App::DocumentObjectExecReturn *Pad::execute(void) // set the additive shape property for later usage in e.g. pattern this->AddShape.setValue(prism); - + // if the sketch has a support fuse them to get one result object if (!support.IsNull()) { // Let's call algorithm computing a fuse operation: @@ -178,7 +181,7 @@ App::DocumentObjectExecReturn *Pad::execute(void) catch (Standard_Failure) { Handle_Standard_Failure e = Standard_Failure::Caught(); if (std::string(e->GetMessageString()) == "TopoDS::Face") - return new App::DocumentObjectExecReturn("Could not create face from sketch.\n" + return new App::DocumentObjectExecReturn("Could not create face from sketch.\n" "Intersecting sketch entities or multiple faces in a sketch are not allowed."); else return new App::DocumentObjectExecReturn(e->GetMessageString()); diff --git a/src/Mod/PartDesign/Gui/TaskPadParameters.cpp b/src/Mod/PartDesign/Gui/TaskPadParameters.cpp index 6cea2cd49..e47ae2d78 100644 --- a/src/Mod/PartDesign/Gui/TaskPadParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPadParameters.cpp @@ -158,7 +158,7 @@ void TaskPadParameters::updateUI(int index) } else if (index == 1 || index == 2) { // up to first/last ui->doubleSpinBox->setEnabled(false); ui->checkBoxMidplane->setEnabled(false); - ui->checkBoxReversed->setEnabled(false); + ui->checkBoxReversed->setEnabled(true); ui->doubleSpinBox2->setEnabled(false); ui->buttonFace->setEnabled(false); ui->lineFaceName->setEnabled(false);