diff --git a/src/Mod/Part/App/AppPart.cpp b/src/Mod/Part/App/AppPart.cpp
index 5951c82e8..d4dd38731 100644
--- a/src/Mod/Part/App/AppPart.cpp
+++ b/src/Mod/Part/App/AppPart.cpp
@@ -43,6 +43,7 @@
#include "FeatureGeometrySet.h"
#include "FeatureChamfer.h"
#include "FeatureCompound.h"
+#include "FeatureFace.h"
#include "FeatureExtrusion.h"
#include "FeatureFillet.h"
#include "FeatureMirroring.h"
@@ -263,6 +264,7 @@ void PartExport initPart()
Part::Wedge ::init();
Part::Part2DObject ::init();
Part::Part2DObjectPython ::init();
+ Part::Face ::init();
Part::RuledSurface ::init();
Part::Loft ::init();
Part::Sweep ::init();
diff --git a/src/Mod/Part/App/CMakeLists.txt b/src/Mod/Part/App/CMakeLists.txt
index 357bd399d..00bd1c9f2 100644
--- a/src/Mod/Part/App/CMakeLists.txt
+++ b/src/Mod/Part/App/CMakeLists.txt
@@ -113,6 +113,8 @@ SET(Features_SRCS
FeatureCompound.h
FeatureExtrusion.cpp
FeatureExtrusion.h
+ FeatureFace.cpp
+ FeatureFace.h
FeatureFillet.cpp
FeatureFillet.h
FeatureMirroring.cpp
diff --git a/src/Mod/PartDesign/App/FeatureFace.cpp b/src/Mod/Part/App/FeatureFace.cpp
similarity index 95%
rename from src/Mod/PartDesign/App/FeatureFace.cpp
rename to src/Mod/Part/App/FeatureFace.cpp
index fb4b81dcf..682a87b2e 100644
--- a/src/Mod/PartDesign/App/FeatureFace.cpp
+++ b/src/Mod/Part/App/FeatureFace.cpp
@@ -44,12 +44,13 @@
#include
#include "FeatureFace.h"
+#include
-using namespace PartDesign;
+using namespace Part;
-PROPERTY_SOURCE(PartDesign::Face, Part::Part2DObject)
+PROPERTY_SOURCE(Part::Face, Part::Feature)
Face::Face()
{
@@ -61,7 +62,7 @@ short Face::mustExecute() const
{
if (Sources.isTouched())
return 1;
- return Part::Part2DObject::mustExecute();
+ return Part::Feature::mustExecute();
}
App::DocumentObjectExecReturn *Face::execute(void)
diff --git a/src/Mod/PartDesign/App/FeatureFace.h b/src/Mod/Part/App/FeatureFace.h
similarity index 86%
rename from src/Mod/PartDesign/App/FeatureFace.h
rename to src/Mod/Part/App/FeatureFace.h
index 2cb69bd91..04e3fe8ba 100644
--- a/src/Mod/PartDesign/App/FeatureFace.h
+++ b/src/Mod/Part/App/FeatureFace.h
@@ -21,17 +21,17 @@
***************************************************************************/
-#ifndef PARTDESIGN_FACE_H
-#define PARTDESIGN_FACE_H
+#ifndef PART_FACE_H
+#define PART_FACE_H
-#include
+#include
-namespace PartDesign
+namespace Part
{
-class PartDesignExport Face : public Part::Part2DObject
+class PartExport Face : public Part::Feature
{
- PROPERTY_HEADER(PartDesign::Face);
+ PROPERTY_HEADER(Part::Face);
public:
Face();
@@ -53,7 +53,7 @@ private:
class Wire_Compare;
};
-} //namespace PartDesign
+} //namespace Part
-#endif // PARTDESIGN_FACE_H
+#endif // PART_FACE_H
diff --git a/src/Mod/Part/Gui/Command.cpp b/src/Mod/Part/Gui/Command.cpp
index b4689f18d..a968ec83c 100644
--- a/src/Mod/Part/Gui/Command.cpp
+++ b/src/Mod/Part/Gui/Command.cpp
@@ -39,6 +39,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -53,6 +54,7 @@
#include
#include "../App/PartFeature.h"
+#include
#include "DlgPartImportStepImp.h"
#include "DlgBooleanOperation.h"
#include "DlgExtrusion.h"
@@ -1021,6 +1023,44 @@ bool CmdPartExtrude::isActive(void)
return (hasActiveDocument() && !Gui::Control().activeDialog());
}
+//===========================================================================
+// Part_MakeFace
+//===========================================================================
+DEF_STD_CMD_A(CmdPartMakeFace);
+
+CmdPartMakeFace::CmdPartMakeFace()
+ : Command("Part_MakeFace")
+{
+ sAppModule = "Part";
+ sGroup = QT_TR_NOOP("Part");
+ sMenuText = QT_TR_NOOP("Make face from sketch");
+ sToolTipText = QT_TR_NOOP("Make face from a selected sketch");
+ sWhatsThis = "Part_MakeFace";
+ sStatusTip = sToolTipText;
+}
+
+void CmdPartMakeFace::activated(int iMsg)
+{
+ std::vector sketches = Gui::Selection().getObjectsOfType();
+ openCommand("Make face");
+ for (std::vector::iterator it = sketches.begin(); it != sketches.end(); ++it) {
+ App::DocumentObjectT obj(*it);
+ std::stringstream str;
+ str << obj.getDocumentPython()
+ << ".addObject(\"Part::Face\", \"Face\").Sources = "
+ << obj.getObjectPython();
+ doCommand(Doc,str.str().c_str());
+ }
+ commitCommand();
+ updateActive();
+}
+
+bool CmdPartMakeFace::isActive(void)
+{
+ return (Gui::Selection().countObjectsOfType(Part::Part2DObject::getClassTypeId()) > 0 &&
+ !Gui::Control().activeDialog());
+}
+
//===========================================================================
// Part_Revolve
//===========================================================================
@@ -1837,6 +1877,7 @@ void CreatePartCommands(void)
rcCmdMgr.addCommand(new CmdPartReverseShape());
rcCmdMgr.addCommand(new CmdPartBoolean());
rcCmdMgr.addCommand(new CmdPartExtrude());
+ rcCmdMgr.addCommand(new CmdPartMakeFace());
rcCmdMgr.addCommand(new CmdPartMirror());
rcCmdMgr.addCommand(new CmdPartRevolve());
rcCmdMgr.addCommand(new CmdPartCrossSections());
diff --git a/src/Mod/Part/Gui/Workbench.cpp b/src/Mod/Part/Gui/Workbench.cpp
index 0736719e7..d7ecdbf79 100644
--- a/src/Mod/Part/Gui/Workbench.cpp
+++ b/src/Mod/Part/Gui/Workbench.cpp
@@ -79,7 +79,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const
<< "Part_ShapeFromMesh" << "Part_MakeSolid" << "Part_ReverseShape"
<< "Part_SimpleCopy" << "Part_RefineShape" << "Part_CheckGeometry"
<< "Separator" << bop << join << "Separator"
- << "Part_CrossSections" << "Part_Compound" << "Part_Extrude"
+ << "Part_CrossSections" << "Part_Compound" << "Part_MakeFace" << "Part_Extrude"
<< "Part_Revolve" << "Part_Mirror" << "Part_Fillet" << "Part_Chamfer"
<< "Part_RuledSurface" << "Part_Loft" << "Part_Sweep"
<< "Part_Offset" << "Part_Thickness";
diff --git a/src/Mod/PartDesign/App/AppPartDesign.cpp b/src/Mod/PartDesign/App/AppPartDesign.cpp
index d58dc6ceb..ee6f6c060 100644
--- a/src/Mod/PartDesign/App/AppPartDesign.cpp
+++ b/src/Mod/PartDesign/App/AppPartDesign.cpp
@@ -39,7 +39,6 @@
#include "FeatureDressUp.h"
#include "FeatureChamfer.h"
#include "FeatureDraft.h"
-#include "FeatureFace.h"
#include "FeatureSubtractive.h"
#include "FeatureAdditive.h"
#include "FeatureTransformed.h"
@@ -96,8 +95,7 @@ void PartDesignExport init_PartDesign()
PartDesign::Revolution ::init();
PartDesign::Groove ::init();
PartDesign::Chamfer ::init();
- PartDesign::Face ::init();
- PartDesign::Draft ::init();
+ PartDesign::Draft ::init();
}
} // extern "C"
diff --git a/src/Mod/PartDesign/App/CMakeLists.txt b/src/Mod/PartDesign/App/CMakeLists.txt
index a115a251a..8340a38a1 100644
--- a/src/Mod/PartDesign/App/CMakeLists.txt
+++ b/src/Mod/PartDesign/App/CMakeLists.txt
@@ -62,8 +62,6 @@ SOURCE_GROUP("DressUpFeatures" FILES ${FeaturesDressUp_SRCS})
SET(FeaturesSketchBased_SRCS
FeatureSketchBased.cpp
FeatureSketchBased.h
- FeatureFace.cpp
- FeatureFace.h
FeaturePad.cpp
FeaturePad.h
FeaturePocket.cpp