Sketcher: Intersection externals

This commit is contained in:
PaddleStroke
2024-11-08 10:57:18 +01:00
committed by WandererFan
parent f3c79302c4
commit 0e5e071d72
12 changed files with 1309 additions and 168 deletions

View File

@@ -1434,7 +1434,63 @@ public:
}
};
// ======================================================================================
// Group for external tools =============================================
class CmdSketcherCompExternal: public Gui::GroupCommand
{
public:
CmdSketcherCompExternal()
: GroupCommand("Sketcher_CompExternal")
{
sAppModule = "Sketcher";
sGroup = "Sketcher";
sMenuText = QT_TR_NOOP("Create external");
sToolTipText = QT_TR_NOOP("Create external edges linked to external geometries.");
sWhatsThis = "Sketcher_CompExternal";
sStatusTip = sToolTipText;
eType = ForEdit;
setCheckable(false);
addCommand("Sketcher_External");
addCommand("Sketcher_Intersection");
}
void updateAction(int mode) override
{
Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(getAction());
if (!pcAction) {
return;
}
QList<QAction*> al = pcAction->actions();
int index = pcAction->property("defaultAction").toInt();
switch (static_cast<GeometryCreationMode>(mode)) {
case GeometryCreationMode::Normal:
al[0]->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_External"));
al[1]->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_Intersection"));
getAction()->setIcon(al[index]->icon());
break;
case GeometryCreationMode::Construction:
al[0]->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_External_Constr"));
al[1]->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_Intersection_Constr"));
getAction()->setIcon(al[index]->icon());
break;
}
}
const char* className() const override
{
return "CmdSketcherCompExternal";
}
bool isActive() override
{
return isCommandActive(getActiveGuiDocument());
}
};
// Externals - Projection ==================================================================
DEF_STD_CMD_AU(CmdSketcherExternal)
@@ -1443,8 +1499,10 @@ CmdSketcherExternal::CmdSketcherExternal()
{
sAppModule = "Sketcher";
sGroup = "Sketcher";
sMenuText = QT_TR_NOOP("Create external geometry");
sToolTipText = QT_TR_NOOP("Create an edge linked to an external geometry");
sMenuText = QT_TR_NOOP("Create external projection geometry");
sToolTipText = QT_TR_NOOP("Create the projection edges of an external geometry.\n"
"External edges can be either defining or construction geometries.\n"
"You can use the toggle construction tool.");
sWhatsThis = "Sketcher_External";
sStatusTip = sToolTipText;
sPixmap = "Sketcher_External";
@@ -1465,6 +1523,39 @@ bool CmdSketcherExternal::isActive()
return isCommandActive(getActiveGuiDocument());
}
// Externals - Intersection ==================================================================
DEF_STD_CMD_AU(CmdSketcherIntersection)
CmdSketcherIntersection::CmdSketcherIntersection()
: Command("Sketcher_Intersection")
{
sAppModule = "Sketcher";
sGroup = "Sketcher";
sMenuText = QT_TR_NOOP("Create external intersection geometry");
sToolTipText =
QT_TR_NOOP("Create the intersection edges of an external geometry with the sketch plane.\n"
"External edges can be either defining or construction geometries.\n"
"You can use the toggle construction tool.");
sWhatsThis = "Sketcher_Intersection";
sStatusTip = sToolTipText;
sPixmap = "Sketcher_Intersection";
sAccel = "G, I";
eType = ForEdit;
}
CONSTRUCTION_UPDATE_ACTION(CmdSketcherIntersection, "Sketcher_Intersection")
void CmdSketcherIntersection::activated(int iMsg)
{
ActivateHandler(getActiveGuiDocument(), std::make_unique<DrawSketchHandlerExternal>(true));
}
bool CmdSketcherIntersection::isActive(void)
{
return isCommandActive(getActiveGuiDocument());
}
// ======================================================================================
DEF_STD_CMD_AU(CmdSketcherCarbonCopy)
@@ -2069,6 +2160,8 @@ void CreateSketcherCommandsCreateGeo()
rcCmdMgr.addCommand(new CmdSketcherSplit());
rcCmdMgr.addCommand(new CmdSketcherCompCurveEdition());
rcCmdMgr.addCommand(new CmdSketcherExternal());
rcCmdMgr.addCommand(new CmdSketcherIntersection());
rcCmdMgr.addCommand(new CmdSketcherCompExternal());
rcCmdMgr.addCommand(new CmdSketcherCarbonCopy());
rcCmdMgr.addCommand(new CmdSketcherCompLine());
}