add feature to extend given surface

This commit is contained in:
wmayer
2017-12-19 13:23:39 +01:00
parent 1db70a48ca
commit 011eed3a64
6 changed files with 247 additions and 0 deletions

View File

@@ -52,6 +52,7 @@
#include <Gui/FileDialog.h>
#include <Gui/MainWindow.h>
#include <Gui/Selection.h>
#include <Gui/SelectionFilter.h>
#include <Gui/View3DInventor.h>
#include <Gui/View3DInventorViewer.h>
#include <Gui/WaitCursor.h>
@@ -219,6 +220,48 @@ bool CmdSurfaceCurveOnMesh::isActive(void)
return false;
}
DEF_STD_CMD_A(CmdSurfaceExtendFace)
CmdSurfaceExtendFace::CmdSurfaceExtendFace()
: Command("Surface_ExtendFace")
{
sAppModule = "Surface";
sGroup = QT_TR_NOOP("Surface");
sMenuText = QT_TR_NOOP("Extend face");
sToolTipText = QT_TR_NOOP("Extend face");
sWhatsThis = "Surface_ExtendFace";
sStatusTip = sToolTipText;
}
void CmdSurfaceExtendFace::activated(int)
{
Gui::SelectionFilter faceFilter("SELECT Part::Feature SUBELEMENT Face COUNT 1");
if (faceFilter.match()) {
App::DocumentObject* obj;
obj = faceFilter.Result[0][0].getObject();
const std::vector<std::string> &sub = faceFilter.Result[0][0].getSubNames();
if (sub.size() == 1) {
openCommand("Extend surface");
std::string FeatName = getUniqueObjectName("Surface");
std::string supportString = faceFilter.Result[0][0].getAsPropertyLinkSubString();
doCommand(Doc, "App.ActiveDocument.addObject(\"Surface::Extend\",\"%s\")", FeatName.c_str());
doCommand(Doc, "App.ActiveDocument.%s.Face = %s",FeatName.c_str(),supportString.c_str());
updateActive();
commitCommand();
}
}
else {
QMessageBox::warning(Gui::getMainWindow(),
qApp->translate("Surface_ExtendFace", "Wrong selection"),
qApp->translate("Surface_ExtendFace", "Select a single face"));
}
}
bool CmdSurfaceExtendFace::isActive(void)
{
return Gui::Selection().countObjectsOfType(Part::Feature::getClassTypeId()) == 1;
}
void CreateSurfaceCommands(void)
{
Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager();
@@ -227,4 +270,5 @@ void CreateSurfaceCommands(void)
rcCmdMgr.addCommand(new CmdSurfaceFilling());
rcCmdMgr.addCommand(new CmdSurfaceGeomFillSurface());
rcCmdMgr.addCommand(new CmdSurfaceCurveOnMesh());
rcCmdMgr.addCommand(new CmdSurfaceExtendFace());
}