diff --git a/src/Mod/PartDesign/App/FeatureBoolean.cpp b/src/Mod/PartDesign/App/FeatureBoolean.cpp index 85708c5d12..a6dec043a0 100644 --- a/src/Mod/PartDesign/App/FeatureBoolean.cpp +++ b/src/Mod/PartDesign/App/FeatureBoolean.cpp @@ -40,10 +40,9 @@ using namespace PartDesign; namespace PartDesign { - extern bool getPDRefineModelParameter(); -PROPERTY_SOURCE_WITH_EXTENSIONS(PartDesign::Boolean, PartDesign::Feature) +PROPERTY_SOURCE_WITH_EXTENSIONS(PartDesign::Boolean, PartDesign::FeatureRefine) const char* Boolean::TypeEnums[] = {"Fuse", "Cut", "Common", nullptr}; @@ -52,15 +51,6 @@ Boolean::Boolean() ADD_PROPERTY(Type, ((long)0)); Type.setEnums(TypeEnums); - ADD_PROPERTY_TYPE( - UsePlacement, - (0), - "Part Design", - (App::PropertyType)(App::Prop_None), - "Apply the placement of the second ( tool ) object" - ); - this->UsePlacement.setValue(false); - App::GeoFeatureGroupExtension::initExtension(this); } @@ -115,15 +105,6 @@ App::DocumentObjectExecReturn* Boolean::execute() ); } - // get the body this boolean feature belongs to - Part::BodyBase* baseBody = Part::BodyBase::findBodyOf(this); - - if (!baseBody) { - return new App::DocumentObjectExecReturn( - QT_TRANSLATE_NOOP("Exception", "Cannot do boolean on feature which is not in a body") - ); - } - std::vector shapes; shapes.push_back(baseTopShape); for (auto it = tools.begin(); it < tools.end(); ++it) { @@ -137,36 +118,9 @@ App::DocumentObjectExecReturn* Boolean::execute() } TopoShape result(baseTopShape); - Base::Placement bodyPlacement = baseBody->globalPlacement().inverse(); - for (auto tool : tools) { - if (!tool->isDerivedFrom()) { - return new App::DocumentObjectExecReturn(QT_TRANSLATE_NOOP( - "Exception", - "Cannot do boolean with anything but Part::Feature and its derivatives" - )); - } - - Part::TopoShape toolShape = static_cast(tool)->Shape.getShape(); - if (UsePlacement.getValue()) { - toolShape.setPlacement(bodyPlacement * toolShape.getPlacement()); - } - TopoDS_Shape shape = toolShape.getShape(); - TopoDS_Shape boolOp; - - // Must not pass null shapes to the boolean operations - if (result.isNull()) { - return new App::DocumentObjectExecReturn( - QT_TRANSLATE_NOOP("Exception", "Base shape is null") - ); - } - - if (shape.IsNull()) { - return new App::DocumentObjectExecReturn( - QT_TRANSLATE_NOOP("Exception", "Tool shape is null") - ); - } - + if (!tools.empty()) { const char* op = nullptr; + if (type == "Fuse") { op = Part::OpCodes::Fuse; } diff --git a/src/Mod/PartDesign/App/FeatureBoolean.h b/src/Mod/PartDesign/App/FeatureBoolean.h index 2da2fdf934..495fe88ab4 100644 --- a/src/Mod/PartDesign/App/FeatureBoolean.h +++ b/src/Mod/PartDesign/App/FeatureBoolean.h @@ -46,8 +46,6 @@ public: /// The type of the boolean operation App::PropertyEnumeration Type; - App::PropertyBool UsePlacement; - /** @name methods override feature */ //@{ /// Recalculate the feature diff --git a/src/Mod/PartDesign/Gui/Command.cpp b/src/Mod/PartDesign/Gui/Command.cpp index 2fa11384df..0e287db538 100644 --- a/src/Mod/PartDesign/Gui/Command.cpp +++ b/src/Mod/PartDesign/Gui/Command.cpp @@ -2598,7 +2598,6 @@ void CmdPartDesignBoolean::activated(int iMsg) std::string FeatName = getUniqueObjectName("Boolean", pcActiveBody); FCMD_OBJ_CMD(pcActiveBody, "newObject('PartDesign::Boolean','" << FeatName << "')"); auto Feat = pcActiveBody->getDocument()->getObject(FeatName.c_str()); - static_cast(Feat)->UsePlacement.setValue(true); // If we don't add an object to the boolean group then don't update the body // as otherwise this will fail and it will be marked as invalid