+ Add selected sketches to one Face, implement specialized view provider for Face
This commit is contained in:
parent
6944658bd4
commit
bf0d8d68bb
|
@ -43,6 +43,10 @@ public:
|
|||
/// recalculate the feature
|
||||
App::DocumentObjectExecReturn *execute(void);
|
||||
short mustExecute() const;
|
||||
/// returns the type name of the ViewProvider
|
||||
const char* getViewProviderName(void) const {
|
||||
return "PartGui::ViewProviderFace";
|
||||
}
|
||||
//@}
|
||||
|
||||
protected:
|
||||
|
|
|
@ -145,6 +145,7 @@ void PartGuiExport initPartGui()
|
|||
PartGui::ViewProviderConeParametric ::init();
|
||||
PartGui::ViewProviderTorusParametric ::init();
|
||||
PartGui::ViewProviderRuledSurface ::init();
|
||||
PartGui::ViewProviderFace ::init();
|
||||
PartGui::DimensionLinear ::initClass();
|
||||
PartGui::DimensionAngular ::initClass();
|
||||
PartGui::ArcEngine ::initClass();
|
||||
|
|
|
@ -1034,7 +1034,7 @@ CmdPartMakeFace::CmdPartMakeFace()
|
|||
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");
|
||||
sToolTipText = QT_TR_NOOP("Make face from selected sketches");
|
||||
sWhatsThis = "Part_MakeFace";
|
||||
sStatusTip = sToolTipText;
|
||||
}
|
||||
|
@ -1043,16 +1043,27 @@ void CmdPartMakeFace::activated(int iMsg)
|
|||
{
|
||||
std::vector<Part::Part2DObject*> sketches = Gui::Selection().getObjectsOfType<Part::Part2DObject>();
|
||||
openCommand("Make face");
|
||||
for (std::vector<Part::Part2DObject*>::iterator it = sketches.begin(); it != sketches.end(); ++it) {
|
||||
App::DocumentObjectT obj(*it);
|
||||
|
||||
try {
|
||||
App::DocumentT doc(sketches.front()->getDocument());
|
||||
std::stringstream str;
|
||||
str << obj.getDocumentPython()
|
||||
<< ".addObject(\"Part::Face\", \"Face\").Sources = "
|
||||
<< obj.getObjectPython();
|
||||
str << doc.getDocumentPython()
|
||||
<< ".addObject(\"Part::Face\", \"Face\").Sources = (";
|
||||
for (std::vector<Part::Part2DObject*>::iterator it = sketches.begin(); it != sketches.end(); ++it) {
|
||||
App::DocumentObjectT obj(*it);
|
||||
str << obj.getObjectPython() << ", ";
|
||||
}
|
||||
|
||||
str << ")";
|
||||
|
||||
doCommand(Doc,str.str().c_str());
|
||||
commitCommand();
|
||||
updateActive();
|
||||
}
|
||||
catch (...) {
|
||||
abortCommand();
|
||||
throw;
|
||||
}
|
||||
commitCommand();
|
||||
updateActive();
|
||||
}
|
||||
|
||||
bool CmdPartMakeFace::isActive(void)
|
||||
|
|
|
@ -26,18 +26,11 @@
|
|||
#ifndef _PreComp_
|
||||
#endif
|
||||
|
||||
/// Here the FreeCAD includes sorted by Base,App,Gui......
|
||||
#include <Base/Parameter.h>
|
||||
|
||||
#include <Mod/Part/App/FeatureFace.h>
|
||||
#include <Mod/Part/App/Part2DObject.h>
|
||||
#include "ViewProviderPlaneParametric.h"
|
||||
|
||||
|
||||
//#include "Tree.h"
|
||||
|
||||
|
||||
|
||||
using namespace PartGui;
|
||||
using namespace std;
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
|
@ -45,10 +38,10 @@ using namespace std;
|
|||
|
||||
PROPERTY_SOURCE(PartGui::ViewProviderPlaneParametric, PartGui::ViewProviderPart)
|
||||
|
||||
|
||||
|
||||
ViewProviderPlaneParametric::ViewProviderPlaneParametric()
|
||||
{
|
||||
sPixmap = "Tree_Part_Plane_Parametric.svg";
|
||||
sPixmap = "Tree_Part_Plane_Parametric.svg";
|
||||
}
|
||||
|
||||
ViewProviderPlaneParametric::~ViewProviderPlaneParametric()
|
||||
|
@ -56,20 +49,80 @@ ViewProviderPlaneParametric::~ViewProviderPlaneParametric()
|
|||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// **********************************************************************************
|
||||
|
||||
std::vector<std::string> ViewProviderPlaneParametric::getDisplayModes(void) const
|
||||
{
|
||||
// get the modes of the father
|
||||
std::vector<std::string> StrList;
|
||||
// get the modes of the father
|
||||
std::vector<std::string> StrList;
|
||||
|
||||
// add your own modes
|
||||
StrList.push_back("Flat Lines");
|
||||
StrList.push_back("Shaded");
|
||||
StrList.push_back("Wireframe");
|
||||
StrList.push_back("Points");
|
||||
// add your own modes
|
||||
StrList.push_back("Flat Lines");
|
||||
StrList.push_back("Shaded");
|
||||
StrList.push_back("Wireframe");
|
||||
StrList.push_back("Points");
|
||||
|
||||
return StrList;
|
||||
return StrList;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
PROPERTY_SOURCE(PartGui::ViewProviderFace, PartGui::ViewProviderPlaneParametric)
|
||||
|
||||
|
||||
ViewProviderFace::ViewProviderFace()
|
||||
{
|
||||
}
|
||||
|
||||
ViewProviderFace::~ViewProviderFace()
|
||||
{
|
||||
}
|
||||
|
||||
std::vector<App::DocumentObject*> ViewProviderFace::claimChildren(void) const
|
||||
{
|
||||
return std::vector<App::DocumentObject*>(static_cast<Part::Face*>(getObject())->Sources.getValues());
|
||||
}
|
||||
|
||||
bool ViewProviderFace::canDragObjects() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ViewProviderFace::canDragObject(App::DocumentObject* obj) const
|
||||
{
|
||||
if (!obj)
|
||||
return false;
|
||||
if (obj->getTypeId().isDerivedFrom(Part::Part2DObject::getClassTypeId()))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
void ViewProviderFace::dragObject(App::DocumentObject* obj)
|
||||
{
|
||||
Part::Face* face = static_cast<Part::Face*>(getObject());
|
||||
std::vector<App::DocumentObject*> sources = face->Sources.getValues();
|
||||
for (std::vector<App::DocumentObject*>::iterator it = sources.begin(); it != sources.end(); ++it) {
|
||||
if (*it == obj) {
|
||||
sources.erase(it);
|
||||
face->Sources.setValues(sources);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool ViewProviderFace::canDropObjects() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ViewProviderFace::canDropObject(App::DocumentObject* obj) const
|
||||
{
|
||||
return canDragObject(obj);
|
||||
}
|
||||
|
||||
void ViewProviderFace::dropObject(App::DocumentObject* obj)
|
||||
{
|
||||
Part::Face* face = static_cast<Part::Face*>(getObject());
|
||||
std::vector<App::DocumentObject*> sources = face->Sources.getValues();
|
||||
sources.push_back(obj);
|
||||
face->Sources.setValues(sources);
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ class SoTransform;
|
|||
namespace PartGui {
|
||||
|
||||
|
||||
class PartGuiExport ViewProviderPlaneParametric:public ViewProviderPart
|
||||
class PartGuiExport ViewProviderPlaneParametric : public ViewProviderPart
|
||||
{
|
||||
PROPERTY_HEADER(PartGui::ViewProviderPlaneParametric);
|
||||
|
||||
|
@ -52,6 +52,23 @@ protected:
|
|||
|
||||
};
|
||||
|
||||
class PartGuiExport ViewProviderFace : public ViewProviderPlaneParametric
|
||||
{
|
||||
PROPERTY_HEADER(PartGui::ViewProviderFace);
|
||||
|
||||
public:
|
||||
ViewProviderFace();
|
||||
virtual ~ViewProviderFace();
|
||||
|
||||
virtual std::vector<App::DocumentObject*> claimChildren(void) const;
|
||||
virtual bool canDragObjects() const;
|
||||
virtual bool canDragObject(App::DocumentObject*) const;
|
||||
virtual void dragObject(App::DocumentObject*);
|
||||
virtual bool canDropObjects() const;
|
||||
virtual bool canDropObject(App::DocumentObject*) const;
|
||||
virtual void dropObject(App::DocumentObject*);
|
||||
};
|
||||
|
||||
} // namespace PartGui
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user