diff --git a/src/Mod/PartDesign/App/FeaturePad.cpp b/src/Mod/PartDesign/App/FeaturePad.cpp index 9859c9726..c57ebd174 100644 --- a/src/Mod/PartDesign/App/FeaturePad.cpp +++ b/src/Mod/PartDesign/App/FeaturePad.cpp @@ -140,10 +140,10 @@ App::DocumentObjectExecReturn *Pad::execute(void) Base::Vector3d SketchVector(0,0,1); SketchOrientation.multVec(SketchVector,SketchVector); - this->positionBySketch(); - TopLoc_Location invObjLoc = this->getLocation().Inverted(); - try { + this->positionBySketch(); + TopLoc_Location invObjLoc = this->getLocation().Inverted(); + base.Move(invObjLoc); gp_Dir dir(SketchVector.x,SketchVector.y,SketchVector.z); diff --git a/src/Mod/PartDesign/App/FeaturePocket.cpp b/src/Mod/PartDesign/App/FeaturePocket.cpp index e57e7aa44..000f4ac9d 100644 --- a/src/Mod/PartDesign/App/FeaturePocket.cpp +++ b/src/Mod/PartDesign/App/FeaturePocket.cpp @@ -118,10 +118,10 @@ App::DocumentObjectExecReturn *Pocket::execute(void) // turn around for pockets SketchVector *= -1; - this->positionBySketch(); - TopLoc_Location invObjLoc = this->getLocation().Inverted(); - try { + this->positionBySketch(); + TopLoc_Location invObjLoc = this->getLocation().Inverted(); + base.Move(invObjLoc); gp_Dir dir(SketchVector.x,SketchVector.y,SketchVector.z); diff --git a/src/Mod/PartDesign/App/FeatureSketchBased.cpp b/src/Mod/PartDesign/App/FeatureSketchBased.cpp index c4ecd6bb9..57fb6b4d3 100644 --- a/src/Mod/PartDesign/App/FeatureSketchBased.cpp +++ b/src/Mod/PartDesign/App/FeatureSketchBased.cpp @@ -121,6 +121,8 @@ void SketchBased::positionBySketch(void) Part::Part2DObject *sketch = static_cast(Sketch.getValue()); if (sketch && sketch->getTypeId().isDerivedFrom(Part::Part2DObject::getClassTypeId())) { App::DocumentObject* support = sketch->Support.getValue(); + if (support == NULL) + throw Base::Exception("Sketch with NULL support"); if (support->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) { Part::Feature *part = static_cast(support); this->Placement.setValue(part->Placement.getValue()); diff --git a/src/Mod/PartDesign/Gui/TaskPadParameters.cpp b/src/Mod/PartDesign/Gui/TaskPadParameters.cpp index 2164d7ba4..2d5e503eb 100644 --- a/src/Mod/PartDesign/Gui/TaskPadParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPadParameters.cpp @@ -334,7 +334,7 @@ int TaskPadParameters::getMode(void) const QByteArray TaskPadParameters::getFaceName(void) const { - if ((getMode() >= 1) && (getMode() <= 3)) + if (getMode() == 3) return getFaceReference(ui->lineFaceName->text(), ui->lineFaceName->property("FaceName").toString()).toLatin1(); else return ""; diff --git a/src/Mod/PartDesign/Gui/TaskPocketParameters.cpp b/src/Mod/PartDesign/Gui/TaskPocketParameters.cpp index 1eac9291f..77b243681 100644 --- a/src/Mod/PartDesign/Gui/TaskPocketParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPocketParameters.cpp @@ -314,7 +314,7 @@ int TaskPocketParameters::getMode(void) const QByteArray TaskPocketParameters::getFaceName(void) const { - if ((getMode() >= 1) && (getMode() <= 3)) + if (getMode() == 3) return getFaceReference(ui->lineFaceName->text(), ui->lineFaceName->property("FaceName").toString()).toLatin1(); else return ""; diff --git a/src/Mod/PartDesign/Gui/ViewProvider.cpp b/src/Mod/PartDesign/Gui/ViewProvider.cpp index 83d92ef1a..6249768fb 100644 --- a/src/Mod/PartDesign/Gui/ViewProvider.cpp +++ b/src/Mod/PartDesign/Gui/ViewProvider.cpp @@ -50,10 +50,7 @@ ViewProvider::~ViewProvider() } bool ViewProvider::doubleClicked(void) -{ - std::string Msg("Edit "); - Msg += this->pcObject->Label.getValue(); - Gui::Command::openCommand(Msg.c_str()); +{ if (PartDesignGui::ActivePartObject != NULL) { // Drop into insert mode so that the user doesn't see all the geometry that comes later in the tree // Also, this way the user won't be tempted to use future geometry as external references for the sketch @@ -67,6 +64,9 @@ bool ViewProvider::doubleClicked(void) } try { + std::string Msg("Edit "); + Msg += this->pcObject->Label.getValue(); + Gui::Command::openCommand(Msg.c_str()); Gui::Command::doCommand(Gui::Command::Gui,"Gui.activeDocument().setEdit('%s',0)",this->pcObject->getNameInDocument()); } catch (const Base::Exception&) {