New tool circle through 3 points
This commit is contained in:
@@ -972,6 +972,70 @@ bool CmdTechDrawExtensionDrawCosmCircle::isActive(void)
|
||||
return (havePage && haveView);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// TechDraw_ExtensionDrawCosmCircle3Points
|
||||
//===========================================================================
|
||||
|
||||
void execDrawCosmCircle3Points(Gui::Command* cmd) {
|
||||
//draw a cosmetic circle through 3 points
|
||||
std::vector<Gui::SelectionObject> selection;
|
||||
TechDraw::DrawViewPart* objFeat;
|
||||
if (!_checkSel(cmd, selection, objFeat, "TechDraw Cosmetic Circle 3 Points"))
|
||||
return;
|
||||
Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Cosmetic Circle 3 Points"));
|
||||
const std::vector<std::string> SubNames = selection[0].getSubNames();
|
||||
std::vector<Base::Vector3d> vertexPoints;
|
||||
vertexPoints = _getVertexPoints(SubNames, objFeat);
|
||||
if (vertexPoints.size() >= 3)
|
||||
{
|
||||
double scale = objFeat->getScale();
|
||||
Base::Vector3d circleCenter = _circleCenter(vertexPoints[0],
|
||||
vertexPoints[1],
|
||||
vertexPoints[2]);
|
||||
float circleRadius = (vertexPoints[0] - circleCenter).Length();
|
||||
TechDraw::BaseGeomPtr theCircle =
|
||||
std::make_shared<TechDraw::Circle>(circleCenter / scale, circleRadius / scale);
|
||||
std::string cicleTag = objFeat->addCosmeticEdge(theCircle);
|
||||
TechDraw::CosmeticEdge* circleEdge = objFeat->getCosmeticEdge(cicleTag);
|
||||
_setLineAttributes(circleEdge);
|
||||
objFeat->refreshCEGeoms();
|
||||
objFeat->requestPaint();
|
||||
cmd->getSelection().clearSelection();
|
||||
Gui::Command::commitCommand();
|
||||
}
|
||||
}
|
||||
|
||||
DEF_STD_CMD_A(CmdTechDrawExtensionDrawCosmCircle3Points)
|
||||
|
||||
CmdTechDrawExtensionDrawCosmCircle3Points::CmdTechDrawExtensionDrawCosmCircle3Points()
|
||||
: Command("TechDraw_ExtensionDrawCosmCircle3Points")
|
||||
{
|
||||
sAppModule = "TechDraw";
|
||||
sGroup = QT_TR_NOOP("TechDraw");
|
||||
sMenuText = QT_TR_NOOP("Add Cosmetic Circle 3 Points");
|
||||
sToolTipText = QT_TR_NOOP("Add a cosmetic circle based on three vertexes:<br>\
|
||||
- Specify the line attributes (optional)<br>\
|
||||
- Select 3 vertexes<br>\
|
||||
- Click this tool");
|
||||
sWhatsThis = "TechDraw_ExtensionDrawCosmCircle3Points";
|
||||
sStatusTip = sMenuText;
|
||||
sPixmap = "TechDraw_ExtensionDrawCosmCircle3Points";
|
||||
}
|
||||
|
||||
void CmdTechDrawExtensionDrawCosmCircle3Points::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
//Base::Console().Message("Cosmetic Circle 3 Points started\n");
|
||||
execDrawCosmCircle3Points(this);
|
||||
}
|
||||
|
||||
bool CmdTechDrawExtensionDrawCosmCircle3Points::isActive(void)
|
||||
{
|
||||
bool havePage = DrawGuiUtil::needPage(this);
|
||||
bool haveView = DrawGuiUtil::needView(this);
|
||||
return (havePage && haveView);
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// TechDraw_ExtensionDrawCirclesGroup
|
||||
//===========================================================================
|
||||
@@ -1012,6 +1076,9 @@ void CmdTechDrawExtensionDrawCirclesGroup::activated(int iMsg)
|
||||
case 1: //draw cosmetic arc
|
||||
execDrawCosmArc(this);
|
||||
break;
|
||||
case 2: //draw cosmetic circle 3 points
|
||||
execDrawCosmCircle3Points(this);
|
||||
break;
|
||||
default:
|
||||
Base::Console().Message("CMD::CVGrp - invalid iMsg: %d\n", iMsg);
|
||||
};
|
||||
@@ -1031,6 +1098,10 @@ Gui::Action* CmdTechDrawExtensionDrawCirclesGroup::createAction(void)
|
||||
p2->setIcon(Gui::BitmapFactory().iconFromTheme("TechDraw_ExtensionDrawCosmArc"));
|
||||
p2->setObjectName(QString::fromLatin1("TechDraw_ExtensionDrawCosmArc"));
|
||||
p2->setWhatsThis(QString::fromLatin1("TechDraw_ExtensionDrawCosmArc"));
|
||||
QAction* p3 = pcAction->addAction(QString());
|
||||
p3->setIcon(Gui::BitmapFactory().iconFromTheme("TechDraw_ExtensionDrawCosmCircle3Points"));
|
||||
p3->setObjectName(QString::fromLatin1("TechDraw_ExtensionDrawCosmCircle3Points"));
|
||||
p3->setWhatsThis(QString::fromLatin1("TechDraw_ExtensionDrawCosmCircle3Points"));
|
||||
|
||||
_pcAction = pcAction;
|
||||
languageChange();
|
||||
@@ -1070,6 +1141,14 @@ void CmdTechDrawExtensionDrawCirclesGroup::languageChange()
|
||||
- Select vertex 3 (end angle)<br>\
|
||||
- Click this tool"));
|
||||
arc2->setStatusTip(arc2->text());
|
||||
QAction* arc3 = a[2];
|
||||
arc3->setText(QApplication::translate("CmdTechDrawExtensionDrawCosmCircle3Points", "Add Cosmetic Circle 3 Points"));
|
||||
arc3->setToolTip(QApplication::translate("CmdTechDrawExtensionDrawCosmCircle3Points",
|
||||
"Add a cosmetic circle based on three vertexes:<br>\
|
||||
- Specify the line attributes (optional)<br>\
|
||||
- Select three vertexes<br>\
|
||||
- Click this tool"));
|
||||
arc3->setStatusTip(arc3->text());
|
||||
}
|
||||
|
||||
bool CmdTechDrawExtensionDrawCirclesGroup::isActive(void)
|
||||
@@ -1963,6 +2042,7 @@ void CreateTechDrawCommandsExtensions(void)
|
||||
rcCmdMgr.addCommand(new CmdTechDrawExtensionDrawCirclesGroup());
|
||||
rcCmdMgr.addCommand(new CmdTechDrawExtensionDrawCosmCircle());
|
||||
rcCmdMgr.addCommand(new CmdTechDrawExtensionDrawCosmArc());
|
||||
rcCmdMgr.addCommand(new CmdTechDrawExtensionDrawCosmCircle3Points());
|
||||
rcCmdMgr.addCommand(new CmdTechDrawExtensionLinePPGroup());
|
||||
rcCmdMgr.addCommand(new CmdTechDrawExtensionLineParallel());
|
||||
rcCmdMgr.addCommand(new CmdTechDrawExtensionLinePerpendicular());
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
<file>icons/TechDraw_ExtensionVertexAtIntersection.svg</file>
|
||||
<file>icons/TechDraw_ExtensionDrawCosmCircle.svg</file>
|
||||
<file>icons/TechDraw_ExtensionDrawCosmArc.svg</file>
|
||||
<file>icons/TechDraw_ExtensionDrawCosmCircle3Points.svg</file>
|
||||
<file>icons/TechDraw_ExtensionLineParallel.svg</file>
|
||||
<file>icons/TechDraw_ExtensionLinePerpendicular.svg</file>
|
||||
<file>icons/TechDraw_ExtensionThreadHoleSide.svg</file>
|
||||
|
||||
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 10 KiB |
@@ -121,6 +121,7 @@ Gui::MenuItem* Workbench::setupMenuBar() const
|
||||
*toolcenter << "TechDraw_ExtensionVertexAtIntersection";
|
||||
*toolcenter << "TechDraw_ExtensionDrawCosmCircle";
|
||||
*toolcenter << "TechDraw_ExtensionDrawCosmArc";
|
||||
*toolcenter << "TechDraw_ExtensionDrawCosmCircle3Points";
|
||||
*toolcenter << "TechDraw_ExtensionLineParallel";
|
||||
*toolcenter << "TechDraw_ExtensionLinePerpendicular";
|
||||
|
||||
@@ -293,6 +294,7 @@ Gui::ToolBarItem* Workbench::setupToolBars() const
|
||||
*extcenter << "TechDraw_ExtensionDrawCirclesGroup";
|
||||
// *extcenter << "TechDraw_ExtensionDrawCosmCircle";
|
||||
// *extcenter << "TechDraw_ExtensionDrawCosmArc";
|
||||
// *extcenter << "TechDraw_ExtensionDrawCosmCircle3Points";
|
||||
*extcenter << "TechDraw_ExtensionLinePPGroup";
|
||||
// *extcenter << "TechDraw_ExtensionLineParallel";
|
||||
// *extcenter << "TechDraw_ExtensionLinePerpendicular";
|
||||
@@ -429,6 +431,7 @@ Gui::ToolBarItem* Workbench::setupCommandBars() const
|
||||
*extcenter << "TechDraw_ExtensionDrawCirclesGroup";
|
||||
// *extcenter << "TechDraw_ExtensionDrawCosmCircle";
|
||||
// *extcenter << "TechDraw_ExtensionDrawCosmArc";
|
||||
// *extcenter << "TechDraw_ExtensionDrawCosmCircle3Points";
|
||||
*extcenter << "TechDraw_ExtensionLinePPGroup";
|
||||
// *extcenter << "TechDraw_ExtensionLineParallel";
|
||||
// *extcenter << "TechDraw_ExtensionLinePerpendicular";
|
||||
|
||||
Reference in New Issue
Block a user