+ Add selected sketches to one Face, implement specialized view provider for Face

This commit is contained in:
wmayer
2015-11-13 13:38:24 +01:00
parent 6944658bd4
commit bf0d8d68bb
5 changed files with 118 additions and 32 deletions

View File

@@ -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);
}