Part: make reverse function parametric
This commit is contained in:
@@ -487,12 +487,13 @@ PyMOD_INIT_FUNC(Part)
|
||||
Part::Offset2D ::init();
|
||||
Part::Thickness ::init();
|
||||
Part::Refine ::init();
|
||||
Part::Reverse ::init();
|
||||
|
||||
// Geometry types
|
||||
Part::GeometryExtension ::init();
|
||||
Part::GeometryIntExtension ::init();
|
||||
Part::GeometryExtension ::init();
|
||||
Part::GeometryIntExtension ::init();
|
||||
Part::GeometryStringExtension ::init();
|
||||
Part::GeometryBoolExtension ::init();
|
||||
Part::GeometryBoolExtension ::init();
|
||||
Part::GeometryDoubleExtension ::init();
|
||||
Part::Geometry ::init();
|
||||
Part::GeomPoint ::init();
|
||||
|
||||
@@ -694,3 +694,29 @@ App::DocumentObjectExecReturn *Refine::execute(void)
|
||||
return new App::DocumentObjectExecReturn(e.GetMessageString());
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
PROPERTY_SOURCE(Part::Reverse, Part::Feature)
|
||||
|
||||
Reverse::Reverse()
|
||||
{
|
||||
ADD_PROPERTY_TYPE(Source, (0), "Reverse", App::Prop_None, "Source shape");
|
||||
}
|
||||
|
||||
App::DocumentObjectExecReturn* Reverse::execute(void)
|
||||
{
|
||||
Part::Feature* source = Source.getValue<Part::Feature*>();
|
||||
if (!source)
|
||||
return new App::DocumentObjectExecReturn("No part object linked.");
|
||||
|
||||
try {
|
||||
TopoDS_Shape myShape = source->Shape.getValue();
|
||||
if (!myShape.IsNull())
|
||||
this->Shape.setValue(myShape.Reversed());
|
||||
return App::DocumentObject::StdReturn;
|
||||
}
|
||||
catch (Standard_Failure & e) {
|
||||
return new App::DocumentObjectExecReturn(e.GetMessageString());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,6 +173,25 @@ public:
|
||||
//@}
|
||||
};
|
||||
|
||||
class Reverse : public Part::Feature
|
||||
{
|
||||
PROPERTY_HEADER(Part::Reverse);
|
||||
|
||||
public:
|
||||
Reverse();
|
||||
|
||||
App::PropertyLink Source;
|
||||
|
||||
/** @name methods override feature */
|
||||
//@{
|
||||
/// recalculate the feature
|
||||
App::DocumentObjectExecReturn* execute(void);
|
||||
const char* getViewProviderName(void) const {
|
||||
return "PartGui::ViewProviderReverse";
|
||||
}
|
||||
//@}
|
||||
};
|
||||
|
||||
} //namespace Part
|
||||
|
||||
|
||||
|
||||
@@ -172,6 +172,7 @@ PyMOD_INIT_FUNC(PartGui)
|
||||
PartGui::ViewProviderOffset2D ::init();
|
||||
PartGui::ViewProviderThickness ::init();
|
||||
PartGui::ViewProviderRefine ::init();
|
||||
PartGui::ViewProviderReverse ::init();
|
||||
PartGui::ViewProviderCustom ::init();
|
||||
PartGui::ViewProviderCustomPython ::init();
|
||||
PartGui::ViewProviderBoolean ::init();
|
||||
|
||||
@@ -1235,17 +1235,15 @@ void CmdPartReverseShape::activated(int iMsg)
|
||||
Q_UNUSED(iMsg);
|
||||
std::vector<App::DocumentObject*> objs = Gui::Selection().getObjectsOfType
|
||||
(Part::Feature::getClassTypeId());
|
||||
runCommand(Doc, "import Part");
|
||||
openCommand("Reverse");
|
||||
for (std::vector<App::DocumentObject*>::iterator it = objs.begin(); it != objs.end(); ++it) {
|
||||
const TopoDS_Shape& shape = Part::Feature::getShape(*it);
|
||||
if (!shape.IsNull()) {
|
||||
QString str = QString::fromLatin1(
|
||||
"__s__=App.ActiveDocument.%1.Shape.copy()\n"
|
||||
"__s__.reverse()\n"
|
||||
"__o__=App.ActiveDocument.addObject(\"Part::Feature\",\"%1_rev\")\n"
|
||||
"__o__=App.ActiveDocument.addObject(\"Part::Reverse\",\"%1_rev\")\n"
|
||||
"__o__.Source=App.ActiveDocument.%1\n"
|
||||
"__o__.Label=\"%2 (Rev)\"\n"
|
||||
"__o__.Shape=__s__\n"
|
||||
"del __s__, __o__"
|
||||
"del __o__"
|
||||
)
|
||||
.arg(QLatin1String((*it)->getNameInDocument()))
|
||||
.arg(QLatin1String((*it)->Label.getValue()));
|
||||
@@ -1260,6 +1258,9 @@ void CmdPartReverseShape::activated(int iMsg)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
commitCommand();
|
||||
updateActive();
|
||||
}
|
||||
|
||||
bool CmdPartReverseShape::isActive(void)
|
||||
|
||||
@@ -686,3 +686,17 @@ ViewProviderRefine::ViewProviderRefine()
|
||||
ViewProviderRefine::~ViewProviderRefine()
|
||||
{
|
||||
}
|
||||
|
||||
// ---------------------------------------
|
||||
|
||||
PROPERTY_SOURCE(PartGui::ViewProviderReverse, PartGui::ViewProviderPart)
|
||||
|
||||
ViewProviderReverse::ViewProviderReverse()
|
||||
{
|
||||
//TODO: Need a specific icon here!
|
||||
//sPixmap = "Part_Reverse_Shape";
|
||||
}
|
||||
|
||||
ViewProviderReverse::~ViewProviderReverse()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -204,6 +204,17 @@ public:
|
||||
virtual ~ViewProviderRefine();
|
||||
};
|
||||
|
||||
class ViewProviderReverse : public ViewProviderPart
|
||||
{
|
||||
PROPERTY_HEADER(PartGui::ViewProviderReverse);
|
||||
|
||||
public:
|
||||
/// constructor
|
||||
ViewProviderReverse();
|
||||
/// destructor
|
||||
virtual ~ViewProviderReverse();
|
||||
};
|
||||
|
||||
} // namespace PartGui
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user