Sketcher: GUI PCH
This commit is contained in:
committed by
abdullahtahiriyo
parent
e82c154d1d
commit
dc32a0685b
@@ -25,16 +25,14 @@
|
||||
#ifndef _PreComp_
|
||||
# include <Inventor/nodes/SoPickStyle.h>
|
||||
# include <QApplication>
|
||||
# include <QMessageBox>
|
||||
# include <stdlib.h>
|
||||
# include <qdebug.h>
|
||||
# include <QString>
|
||||
# include <GC_MakeEllipse.hxx>
|
||||
# include <boost/math/special_functions/fpclassify.hpp>
|
||||
#endif
|
||||
|
||||
# include <QMessageBox>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <qdebug.h>
|
||||
#include <QString>
|
||||
#include <GC_MakeEllipse.hxx>
|
||||
|
||||
#include <boost/math/special_functions/fpclassify.hpp>
|
||||
#include <Base/Console.h>
|
||||
#include <Base/Exception.h>
|
||||
#include <Base/Tools.h>
|
||||
|
||||
@@ -28,9 +28,8 @@
|
||||
# include <Precision.hxx>
|
||||
# include <QApplication>
|
||||
# include <Standard_Version.hxx>
|
||||
#endif
|
||||
|
||||
# include <QMessageBox>
|
||||
#endif
|
||||
|
||||
#include <Base/Console.h>
|
||||
#include <App/Application.h>
|
||||
@@ -90,11 +89,11 @@ void ActivateBSplineHandler(Gui::Document *doc,DrawSketchHandler *handler)
|
||||
void ShowRestoreInformationLayer(SketcherGui::ViewProviderSketch* vp, char * visibleelementname)
|
||||
{
|
||||
ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher/General");
|
||||
|
||||
|
||||
bool status = hGrp->GetBool(visibleelementname, true);
|
||||
|
||||
|
||||
hGrp->SetBool(visibleelementname, !status);
|
||||
|
||||
|
||||
vp->showRestoreInformationLayer();
|
||||
}
|
||||
|
||||
@@ -186,13 +185,13 @@ CmdSketcherBSplineComb::CmdSketcherBSplineComb()
|
||||
void CmdSketcherBSplineComb::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
|
||||
|
||||
Gui::Document * doc= getActiveGuiDocument();
|
||||
|
||||
|
||||
SketcherGui::ViewProviderSketch* vp = static_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit());
|
||||
|
||||
|
||||
ShowRestoreInformationLayer(vp, "BSplineCombVisible");
|
||||
|
||||
|
||||
}
|
||||
|
||||
bool CmdSketcherBSplineComb::isActive(void)
|
||||
@@ -220,13 +219,13 @@ CmdSketcherBSplineKnotMultiplicity::CmdSketcherBSplineKnotMultiplicity()
|
||||
void CmdSketcherBSplineKnotMultiplicity::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
|
||||
|
||||
Gui::Document * doc= getActiveGuiDocument();
|
||||
|
||||
|
||||
SketcherGui::ViewProviderSketch* vp = static_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit());
|
||||
|
||||
|
||||
ShowRestoreInformationLayer(vp, "BSplineKnotMultiplicityVisible");
|
||||
|
||||
|
||||
}
|
||||
|
||||
bool CmdSketcherBSplineKnotMultiplicity::isActive(void)
|
||||
@@ -254,7 +253,7 @@ void CmdSketcherCompBSplineShowHideGeometryInformation::activated(int iMsg)
|
||||
Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager();
|
||||
|
||||
Gui::Command * cmd;
|
||||
|
||||
|
||||
if (iMsg==0)
|
||||
cmd = rcCmdMgr.getCommandByName("Sketcher_BSplineDegree");
|
||||
else if (iMsg==1)
|
||||
@@ -265,14 +264,14 @@ void CmdSketcherCompBSplineShowHideGeometryInformation::activated(int iMsg)
|
||||
cmd = rcCmdMgr.getCommandByName("Sketcher_BSplineKnotMultiplicity");
|
||||
else
|
||||
return;
|
||||
|
||||
|
||||
cmd->invoke(0);
|
||||
|
||||
|
||||
// Since the default icon is reset when enabing/disabling the command we have
|
||||
// to explicitly set the icon of the used command.
|
||||
Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(_pcAction);
|
||||
QList<QAction*> a = pcAction->actions();
|
||||
|
||||
|
||||
assert(iMsg < a.size());
|
||||
pcAction->setIcon(a[iMsg]->icon());
|
||||
}
|
||||
@@ -282,7 +281,7 @@ Gui::Action * CmdSketcherCompBSplineShowHideGeometryInformation::createAction(vo
|
||||
Gui::ActionGroup* pcAction = new Gui::ActionGroup(this, Gui::getMainWindow());
|
||||
pcAction->setDropDownMenu(true);
|
||||
applyCommandData(this->className(), pcAction);
|
||||
|
||||
|
||||
QAction* c1 = pcAction->addAction(QString());
|
||||
c1->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_BSplineDegree"));
|
||||
QAction* c2 = pcAction->addAction(QString());
|
||||
@@ -294,23 +293,23 @@ Gui::Action * CmdSketcherCompBSplineShowHideGeometryInformation::createAction(vo
|
||||
|
||||
_pcAction = pcAction;
|
||||
languageChange();
|
||||
|
||||
|
||||
pcAction->setIcon(c2->icon());
|
||||
int defaultId = 1;
|
||||
pcAction->setProperty("defaultAction", QVariant(defaultId));
|
||||
|
||||
|
||||
return pcAction;
|
||||
}
|
||||
|
||||
void CmdSketcherCompBSplineShowHideGeometryInformation::languageChange()
|
||||
{
|
||||
Command::languageChange();
|
||||
|
||||
|
||||
if (!_pcAction)
|
||||
return;
|
||||
Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(_pcAction);
|
||||
QList<QAction*> a = pcAction->actions();
|
||||
|
||||
|
||||
QAction* c1 = a[0];
|
||||
c1->setText(QApplication::translate("CmdSketcherCompBSplineShowHideGeometryInformation","Show/Hide B-spline degree"));
|
||||
c1->setToolTip(QApplication::translate("Sketcher_BSplineDegree","Switches between showing and hiding the degree for all B-splines"));
|
||||
@@ -373,7 +372,7 @@ void CmdSketcherConvertToNURB::activated(int iMsg)
|
||||
Sketcher::SketchObject* Obj = static_cast<Sketcher::SketchObject*>(selection[0].getObject());
|
||||
|
||||
bool nurbsized = false;
|
||||
|
||||
|
||||
openCommand("Convert to NURBS");
|
||||
|
||||
for (unsigned int i=0; i<SubNames.size(); i++ ) {
|
||||
@@ -385,23 +384,23 @@ void CmdSketcherConvertToNURB::activated(int iMsg)
|
||||
Gui::Command::doCommand(
|
||||
Doc,"App.ActiveDocument.%s.convertToNURBS(%d) ",
|
||||
selection[0].getFeatName(),GeoId);
|
||||
|
||||
|
||||
nurbsized = true;
|
||||
}
|
||||
else if (SubNames[i].size() > 12 && SubNames[i].substr(0,12) == "ExternalEdge") {
|
||||
|
||||
|
||||
int GeoId = - (std::atoi(SubNames[i].substr(12,4000).c_str()) + 2);
|
||||
|
||||
|
||||
Gui::Command::doCommand(
|
||||
Doc,"App.ActiveDocument.%s.convertToNURBS(%d) ",
|
||||
selection[0].getFeatName(),GeoId);
|
||||
|
||||
|
||||
nurbsized = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(!nurbsized) {
|
||||
abortCommand();
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||
@@ -454,7 +453,7 @@ void CmdSketcherIncreaseDegree::activated(int iMsg)
|
||||
Sketcher::SketchObject* Obj = static_cast<Sketcher::SketchObject*>(selection[0].getObject());
|
||||
|
||||
openCommand("Increase degree");
|
||||
|
||||
|
||||
bool ignored=false;
|
||||
|
||||
for (unsigned int i=0; i<SubNames.size(); i++ ) {
|
||||
@@ -519,13 +518,13 @@ CmdSketcherIncreaseKnotMultiplicity::CmdSketcherIncreaseKnotMultiplicity()
|
||||
void CmdSketcherIncreaseKnotMultiplicity::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
|
||||
|
||||
#if OCC_VERSION_HEX < 0x060900
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong OCE/OCC version"),
|
||||
QObject::tr("This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher"));
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
||||
// get the selection
|
||||
std::vector<Gui::SelectionObject> selection;
|
||||
selection = getSelection().getSelectionEx(0, Sketcher::SketchObject::getClassTypeId());
|
||||
@@ -534,10 +533,10 @@ void CmdSketcherIncreaseKnotMultiplicity::activated(int iMsg)
|
||||
if (selection.size() != 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// get the needed lists and objects
|
||||
const std::vector<std::string> &SubNames = selection[0].getSubNames();
|
||||
|
||||
|
||||
if(SubNames.size()>1) {
|
||||
// Check that only one object is selected, as we need only one object to get the new GeoId after multiplicity change
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||
@@ -551,7 +550,7 @@ void CmdSketcherIncreaseKnotMultiplicity::activated(int iMsg)
|
||||
|
||||
bool applied = false;
|
||||
bool notaknot = true;
|
||||
|
||||
|
||||
boost::uuids::uuid bsplinetag;
|
||||
|
||||
int GeoId;
|
||||
@@ -566,9 +565,9 @@ void CmdSketcherIncreaseKnotMultiplicity::activated(int iMsg)
|
||||
if((*it)->Type == Sketcher::InternalAlignment && (*it)->First == GeoId && (*it)->AlignmentType == Sketcher::BSplineKnotPoint)
|
||||
{
|
||||
bsplinetag = Obj->getGeometry((*it)->Second)->getTag();
|
||||
|
||||
|
||||
notaknot = false;
|
||||
|
||||
|
||||
try {
|
||||
Gui::Command::doCommand(
|
||||
Doc,"App.ActiveDocument.%s.modifyBSplineKnotMultiplicity(%d,%d,%d) ",
|
||||
@@ -605,28 +604,28 @@ void CmdSketcherIncreaseKnotMultiplicity::activated(int iMsg)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(notaknot){
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||
QObject::tr("None of the selected elements is a knot of a B-spline"));
|
||||
}
|
||||
|
||||
|
||||
if(applied)
|
||||
{
|
||||
// find new geoid for B-spline as GeoId might have changed
|
||||
const std::vector< Part::Geometry * > &gvals = Obj->getInternalGeometry();
|
||||
|
||||
|
||||
int ngeoid = 0;
|
||||
bool ngfound = false;
|
||||
|
||||
|
||||
for (std::vector<Part::Geometry *>::const_iterator geo = gvals.begin(); geo != gvals.end(); geo++, ngeoid++) {
|
||||
if ((*geo) && (*geo)->getTag() == bsplinetag) {
|
||||
ngfound = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if(ngfound) {
|
||||
try {
|
||||
// add internalalignment for new pole
|
||||
@@ -639,10 +638,10 @@ void CmdSketcherIncreaseKnotMultiplicity::activated(int iMsg)
|
||||
Base::Console().Error("%s\n", e.what());
|
||||
getSelection().clearSelection();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(!applied) {
|
||||
abortCommand();
|
||||
}
|
||||
@@ -653,7 +652,7 @@ void CmdSketcherIncreaseKnotMultiplicity::activated(int iMsg)
|
||||
tryAutoRecomputeIfNotSolve(Obj);
|
||||
|
||||
getSelection().clearSelection();
|
||||
|
||||
|
||||
}
|
||||
|
||||
bool CmdSketcherIncreaseKnotMultiplicity::isActive(void)
|
||||
@@ -680,13 +679,13 @@ CmdSketcherDecreaseKnotMultiplicity::CmdSketcherDecreaseKnotMultiplicity()
|
||||
void CmdSketcherDecreaseKnotMultiplicity::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
|
||||
|
||||
#if OCC_VERSION_HEX < 0x060900
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong OCE/OCC version"),
|
||||
QObject::tr("This version of OCE/OCC does not support knot operation. You need 6.9.0 or higher"));
|
||||
return;
|
||||
#endif
|
||||
|
||||
|
||||
// get the selection
|
||||
std::vector<Gui::SelectionObject> selection;
|
||||
selection = getSelection().getSelectionEx(0, Sketcher::SketchObject::getClassTypeId());
|
||||
@@ -695,85 +694,85 @@ void CmdSketcherDecreaseKnotMultiplicity::activated(int iMsg)
|
||||
if (selection.size() != 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// get the needed lists and objects
|
||||
const std::vector<std::string> &SubNames = selection[0].getSubNames();
|
||||
|
||||
|
||||
if(SubNames.size()>1) {
|
||||
// Check that only one object is selected, as we need only one object to get the new GeoId after multiplicity change
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||
QObject::tr("The selection comprises more than one item. Please select just one knot."));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Sketcher::SketchObject* Obj = static_cast<Sketcher::SketchObject*>(selection[0].getObject());
|
||||
|
||||
|
||||
openCommand("Decrease knot multiplicity");
|
||||
|
||||
|
||||
bool applied = false;
|
||||
bool notaknot = true;
|
||||
|
||||
|
||||
boost::uuids::uuid bsplinetag;
|
||||
|
||||
|
||||
int GeoId;
|
||||
Sketcher::PointPos PosId;
|
||||
getIdsFromName(SubNames[0], Obj, GeoId, PosId);
|
||||
|
||||
|
||||
if(isSimpleVertex(Obj, GeoId, PosId)) {
|
||||
|
||||
|
||||
const std::vector< Sketcher::Constraint * > &vals = Obj->Constraints.getValues();
|
||||
|
||||
|
||||
for (std::vector< Sketcher::Constraint * >::const_iterator it= vals.begin(); it != vals.end(); ++it) {
|
||||
if((*it)->Type == Sketcher::InternalAlignment && (*it)->First == GeoId && (*it)->AlignmentType == Sketcher::BSplineKnotPoint)
|
||||
{
|
||||
bsplinetag = Obj->getGeometry((*it)->Second)->getTag();
|
||||
|
||||
|
||||
notaknot = false;
|
||||
|
||||
|
||||
try {
|
||||
Gui::Command::doCommand(
|
||||
Doc,"App.ActiveDocument.%s.modifyBSplineKnotMultiplicity(%d,%d,%d) ",
|
||||
selection[0].getFeatName(),(*it)->Second, (*it)->InternalAlignmentIndex + 1, -1);
|
||||
|
||||
|
||||
applied = true;
|
||||
|
||||
|
||||
// Warning: GeoId list might have changed as the consequence of deleting pole circles and
|
||||
// particularly B-spline GeoID might have changed.
|
||||
|
||||
|
||||
}
|
||||
catch (const Base::Exception& e) {
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Error"),
|
||||
QObject::tr(getStrippedPythonExceptionString(e).c_str()));
|
||||
getSelection().clearSelection();
|
||||
}
|
||||
|
||||
|
||||
break; // we have already found our knot.
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(notaknot){
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||
QObject::tr("None of the selected elements is a knot of a B-spline"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(applied)
|
||||
{
|
||||
// find new geoid for B-spline as GeoId might have changed
|
||||
const std::vector< Part::Geometry * > &gvals = Obj->getInternalGeometry();
|
||||
|
||||
|
||||
int ngeoid = 0;
|
||||
bool ngfound = false;
|
||||
|
||||
|
||||
for (std::vector<Part::Geometry *>::const_iterator geo = gvals.begin(); geo != gvals.end(); geo++, ngeoid++) {
|
||||
if ((*geo) && (*geo)->getTag() == bsplinetag) {
|
||||
ngfound = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(ngfound) {
|
||||
try {
|
||||
@@ -790,7 +789,7 @@ void CmdSketcherDecreaseKnotMultiplicity::activated(int iMsg)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(!applied) {
|
||||
abortCommand();
|
||||
}
|
||||
@@ -818,7 +817,7 @@ CmdSketcherCompModifyKnotMultiplicity::CmdSketcherCompModifyKnotMultiplicity()
|
||||
sAppModule = "Sketcher";
|
||||
sGroup = QT_TR_NOOP("Sketcher");
|
||||
sMenuText = QT_TR_NOOP("Modify knot multiplicity");
|
||||
sToolTipText = QT_TR_NOOP("Modifies the multiplicity of the selected knot of a B-spline");
|
||||
sToolTipText = QT_TR_NOOP("Modifies the multiplicity of the selected knot of a B-spline");
|
||||
sWhatsThis = "Sketcher_CompModifyKnotMultiplicity";
|
||||
sStatusTip = sToolTipText;
|
||||
eType = ForEdit;
|
||||
@@ -826,25 +825,25 @@ CmdSketcherCompModifyKnotMultiplicity::CmdSketcherCompModifyKnotMultiplicity()
|
||||
|
||||
void CmdSketcherCompModifyKnotMultiplicity::activated(int iMsg)
|
||||
{
|
||||
|
||||
|
||||
Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager();
|
||||
|
||||
|
||||
Gui::Command * cmd;
|
||||
|
||||
|
||||
if (iMsg==0)
|
||||
cmd = rcCmdMgr.getCommandByName("Sketcher_BSplineIncreaseKnotMultiplicity");
|
||||
else if (iMsg==1)
|
||||
cmd = rcCmdMgr.getCommandByName("Sketcher_BSplineDecreaseKnotMultiplicity");
|
||||
else
|
||||
else
|
||||
return;
|
||||
|
||||
|
||||
cmd->invoke(0);
|
||||
|
||||
|
||||
// Since the default icon is reset when enabing/disabling the command we have
|
||||
// to explicitly set the icon of the used command.
|
||||
Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(_pcAction);
|
||||
QList<QAction*> a = pcAction->actions();
|
||||
|
||||
|
||||
assert(iMsg < a.size());
|
||||
pcAction->setIcon(a[iMsg]->icon());
|
||||
}
|
||||
@@ -873,12 +872,12 @@ Gui::Action * CmdSketcherCompModifyKnotMultiplicity::createAction(void)
|
||||
void CmdSketcherCompModifyKnotMultiplicity::languageChange()
|
||||
{
|
||||
Command::languageChange();
|
||||
|
||||
|
||||
if (!_pcAction)
|
||||
return;
|
||||
Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(_pcAction);
|
||||
QList<QAction*> a = pcAction->actions();
|
||||
|
||||
|
||||
QAction* c1 = a[0];
|
||||
c1->setText(QApplication::translate("CmdSketcherCompModifyKnotMultiplicity","Increase knot multiplicity"));
|
||||
c1->setToolTip(QApplication::translate("Sketcher_BSplineIncreaseKnotMultiplicity","Increases the multiplicity of the selected knot of a B-spline"));
|
||||
|
||||
@@ -27,9 +27,8 @@
|
||||
# include <QMessageBox>
|
||||
# include <Precision.hxx>
|
||||
# include <QApplication>
|
||||
#endif
|
||||
|
||||
# include <QMessageBox>
|
||||
#endif
|
||||
|
||||
#include <Base/Console.h>
|
||||
#include <App/Application.h>
|
||||
@@ -80,7 +79,7 @@ void ActivateAcceleratorHandler(Gui::Document *doc,DrawSketchHandler *handler)
|
||||
if (doc) {
|
||||
if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom
|
||||
(SketcherGui::ViewProviderSketch::getClassTypeId())) {
|
||||
|
||||
|
||||
SketcherGui::ViewProviderSketch* vp = static_cast<SketcherGui::ViewProviderSketch*> (doc->getInEdit());
|
||||
vp->purgeHandler();
|
||||
vp->activateHandler(handler);
|
||||
@@ -126,12 +125,12 @@ void CmdSketcherCloseShape::activated(int iMsg)
|
||||
QObject::tr("Select at least two edges from the sketch."));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Sketcher::SketchObject* Obj = static_cast<Sketcher::SketchObject*>(selection[0].getObject());
|
||||
|
||||
int GeoIdFirst=-1;
|
||||
int GeoIdLast=-1;
|
||||
|
||||
|
||||
// undo command open
|
||||
openCommand("add coincident constraint");
|
||||
// go through the selected subelements
|
||||
@@ -159,9 +158,9 @@ void CmdSketcherCloseShape::activated(int iMsg)
|
||||
abortCommand();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Check for the special case of closing a shape with two lines to avoid overlap
|
||||
if (SubNames.size() == 2 &&
|
||||
if (SubNames.size() == 2 &&
|
||||
geo1->getTypeId() == Part::GeomLineSegment::getClassTypeId() &&
|
||||
geo2->getTypeId() == Part::GeomLineSegment::getClassTypeId() ) {
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||
@@ -179,7 +178,7 @@ void CmdSketcherCloseShape::activated(int iMsg)
|
||||
// Close Last Edge with First Edge
|
||||
Gui::Command::doCommand(
|
||||
Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ",
|
||||
selection[0].getFeatName(),GeoIdLast,Sketcher::end,GeoIdFirst,Sketcher::start);
|
||||
selection[0].getFeatName(),GeoIdLast,Sketcher::end,GeoIdFirst,Sketcher::start);
|
||||
|
||||
// finish the transaction and update
|
||||
commitCommand();
|
||||
@@ -315,18 +314,18 @@ void CmdSketcherSelectConstraints::activated(int iMsg)
|
||||
const std::vector<std::string> &SubNames = selection[0].getSubNames();
|
||||
Sketcher::SketchObject* Obj = static_cast<Sketcher::SketchObject*>(selection[0].getObject());
|
||||
const std::vector< Sketcher::Constraint * > &vals = Obj->Constraints.getValues();
|
||||
|
||||
|
||||
std::string doc_name = Obj->getDocument()->getName();
|
||||
std::string obj_name = Obj->getNameInDocument();
|
||||
|
||||
|
||||
getSelection().clearSelection();
|
||||
|
||||
|
||||
// go through the selected subelements
|
||||
for (std::vector<std::string>::const_iterator it=SubNames.begin(); it != SubNames.end(); ++it) {
|
||||
// only handle edges
|
||||
if (it->size() > 4 && it->substr(0,4) == "Edge") {
|
||||
int GeoId = std::atoi(it->substr(4,4000).c_str()) - 1;
|
||||
|
||||
|
||||
// push all the constraints
|
||||
int i = 0;
|
||||
for (std::vector< Sketcher::Constraint * >::const_iterator it= vals.begin();
|
||||
@@ -365,21 +364,21 @@ void CmdSketcherSelectOrigin::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
Gui::Document * doc= getActiveGuiDocument();
|
||||
|
||||
|
||||
SketcherGui::ViewProviderSketch* vp = static_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit());
|
||||
|
||||
|
||||
Sketcher::SketchObject* Obj= vp->getSketchObject();
|
||||
|
||||
|
||||
// ViewProviderSketch * vp = static_cast<ViewProviderSketch *>(Gui::Application::Instance->getViewProvider(docobj));
|
||||
|
||||
// Sketcher::SketchObject* Obj = vp->getSketchObject();
|
||||
|
||||
|
||||
// Sketcher::SketchObject* Obj = vp->getSketchObject();
|
||||
|
||||
std::string doc_name = Obj->getDocument()->getName();
|
||||
std::string obj_name = Obj->getNameInDocument();
|
||||
std::stringstream ss;
|
||||
|
||||
|
||||
ss << "RootPoint";
|
||||
|
||||
|
||||
if(Gui::Selection().isSelected(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()))
|
||||
Gui::Selection().rmvSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str());
|
||||
else
|
||||
@@ -413,17 +412,17 @@ void CmdSketcherSelectVerticalAxis::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
Gui::Document * doc= getActiveGuiDocument();
|
||||
|
||||
|
||||
SketcherGui::ViewProviderSketch* vp = static_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit());
|
||||
|
||||
|
||||
Sketcher::SketchObject* Obj= vp->getSketchObject();
|
||||
|
||||
|
||||
std::string doc_name = Obj->getDocument()->getName();
|
||||
std::string obj_name = Obj->getNameInDocument();
|
||||
std::stringstream ss;
|
||||
|
||||
|
||||
ss << "V_Axis";
|
||||
|
||||
|
||||
if(Gui::Selection().isSelected(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()))
|
||||
Gui::Selection().rmvSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str());
|
||||
else
|
||||
@@ -457,17 +456,17 @@ void CmdSketcherSelectHorizontalAxis::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
Gui::Document * doc= getActiveGuiDocument();
|
||||
|
||||
|
||||
SketcherGui::ViewProviderSketch* vp = static_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit());
|
||||
|
||||
|
||||
Sketcher::SketchObject* Obj= vp->getSketchObject();
|
||||
|
||||
|
||||
std::string doc_name = Obj->getDocument()->getName();
|
||||
std::string obj_name = Obj->getNameInDocument();
|
||||
std::stringstream ss;
|
||||
|
||||
|
||||
ss << "H_Axis";
|
||||
|
||||
|
||||
if(Gui::Selection().isSelected(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()))
|
||||
Gui::Selection().rmvSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str());
|
||||
else
|
||||
@@ -500,20 +499,20 @@ void CmdSketcherSelectRedundantConstraints::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
Gui::Document * doc= getActiveGuiDocument();
|
||||
|
||||
|
||||
SketcherGui::ViewProviderSketch* vp = static_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit());
|
||||
|
||||
|
||||
Sketcher::SketchObject* Obj= vp->getSketchObject();
|
||||
|
||||
|
||||
std::string doc_name = Obj->getDocument()->getName();
|
||||
std::string obj_name = Obj->getNameInDocument();
|
||||
|
||||
|
||||
// get the needed lists and objects
|
||||
const std::vector< int > &solverredundant = vp->getSketchObject()->getLastRedundant();
|
||||
const std::vector< Sketcher::Constraint * > &vals = Obj->Constraints.getValues();
|
||||
|
||||
|
||||
getSelection().clearSelection();
|
||||
|
||||
|
||||
// push the constraints
|
||||
int i = 0;
|
||||
for (std::vector< Sketcher::Constraint * >::const_iterator it= vals.begin();it != vals.end(); ++it,++i) {
|
||||
@@ -523,8 +522,8 @@ void CmdSketcherSelectRedundantConstraints::activated(int iMsg)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -553,20 +552,20 @@ void CmdSketcherSelectConflictingConstraints::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
Gui::Document * doc= getActiveGuiDocument();
|
||||
|
||||
|
||||
SketcherGui::ViewProviderSketch* vp = static_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit());
|
||||
|
||||
|
||||
Sketcher::SketchObject* Obj= vp->getSketchObject();
|
||||
|
||||
|
||||
std::string doc_name = Obj->getDocument()->getName();
|
||||
std::string obj_name = Obj->getNameInDocument();
|
||||
|
||||
// get the needed lists and objects
|
||||
const std::vector< int > &solverconflicting = vp->getSketchObject()->getLastConflicting();
|
||||
const std::vector< Sketcher::Constraint * > &vals = Obj->Constraints.getValues();
|
||||
|
||||
|
||||
getSelection().clearSelection();
|
||||
|
||||
|
||||
// push the constraints
|
||||
int i = 0;
|
||||
for (std::vector< Sketcher::Constraint * >::const_iterator it= vals.begin();it != vals.end(); ++it,++i) {
|
||||
@@ -619,19 +618,19 @@ void CmdSketcherSelectElementsAssociatedWithConstraints::activated(int iMsg)
|
||||
std::string doc_name = Obj->getDocument()->getName();
|
||||
std::string obj_name = Obj->getNameInDocument();
|
||||
std::stringstream ss;
|
||||
|
||||
|
||||
int selected=0;
|
||||
|
||||
|
||||
// go through the selected subelements
|
||||
for (std::vector<std::string>::const_iterator it=SubNames.begin(); it != SubNames.end(); ++it) {
|
||||
// only handle constraints
|
||||
if (it->size() > 10 && it->substr(0,10) == "Constraint") {
|
||||
int ConstrId = Sketcher::PropertyConstraintList::getIndexFromConstraintName(*it);
|
||||
|
||||
|
||||
if(ConstrId < static_cast<int>(vals.size())){
|
||||
if(vals[ConstrId]->First!=Constraint::GeoUndef){
|
||||
ss.str(std::string());
|
||||
|
||||
|
||||
switch(vals[ConstrId]->FirstPos)
|
||||
{
|
||||
case Sketcher::none:
|
||||
@@ -639,20 +638,20 @@ void CmdSketcherSelectElementsAssociatedWithConstraints::activated(int iMsg)
|
||||
break;
|
||||
case Sketcher::start:
|
||||
case Sketcher::end:
|
||||
case Sketcher::mid:
|
||||
case Sketcher::mid:
|
||||
int vertex = Obj->getVertexIndexGeoPos(vals[ConstrId]->First,vals[ConstrId]->FirstPos);
|
||||
if(vertex>-1)
|
||||
ss << "Vertex" << vertex + 1;
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str());
|
||||
selected++;
|
||||
}
|
||||
|
||||
|
||||
if(vals[ConstrId]->Second!=Constraint::GeoUndef){
|
||||
ss.str(std::string());
|
||||
|
||||
|
||||
switch(vals[ConstrId]->SecondPos)
|
||||
{
|
||||
case Sketcher::none:
|
||||
@@ -660,20 +659,20 @@ void CmdSketcherSelectElementsAssociatedWithConstraints::activated(int iMsg)
|
||||
break;
|
||||
case Sketcher::start:
|
||||
case Sketcher::end:
|
||||
case Sketcher::mid:
|
||||
case Sketcher::mid:
|
||||
int vertex = Obj->getVertexIndexGeoPos(vals[ConstrId]->Second,vals[ConstrId]->SecondPos);
|
||||
if(vertex>-1)
|
||||
ss << "Vertex" << vertex + 1;
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str());
|
||||
selected++;
|
||||
}
|
||||
|
||||
|
||||
if(vals[ConstrId]->Third!=Constraint::GeoUndef){
|
||||
ss.str(std::string());
|
||||
|
||||
|
||||
switch(vals[ConstrId]->ThirdPos)
|
||||
{
|
||||
case Sketcher::none:
|
||||
@@ -681,20 +680,20 @@ void CmdSketcherSelectElementsAssociatedWithConstraints::activated(int iMsg)
|
||||
break;
|
||||
case Sketcher::start:
|
||||
case Sketcher::end:
|
||||
case Sketcher::mid:
|
||||
case Sketcher::mid:
|
||||
int vertex = Obj->getVertexIndexGeoPos(vals[ConstrId]->Third,vals[ConstrId]->ThirdPos);
|
||||
if(vertex>-1)
|
||||
ss << "Vertex" << vertex + 1;
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str());
|
||||
selected++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( selected == 0 ) {
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("No constraint selected"),
|
||||
QObject::tr("At least one constraint must be selected"));
|
||||
@@ -801,7 +800,7 @@ void CmdSketcherSelectElementsWithDoFs::activated(int iMsg)
|
||||
|
||||
geoid++;
|
||||
}
|
||||
|
||||
|
||||
if(curQRAlg == GCS::EigenSparseQR) {
|
||||
Obj->getSolvedSketch().setQRAlgorithm(GCS::EigenSparseQR);
|
||||
}
|
||||
@@ -850,9 +849,9 @@ void CmdSketcherRestoreInternalAlignmentGeometry::activated(int iMsg)
|
||||
std::string doc_name = Obj->getDocument()->getName();
|
||||
std::string obj_name = Obj->getNameInDocument();
|
||||
std::stringstream ss;
|
||||
|
||||
|
||||
getSelection().clearSelection();
|
||||
|
||||
|
||||
// go through the selected subelements
|
||||
for (std::vector<std::string>::const_iterator it=SubNames.begin(); it != SubNames.end(); ++it) {
|
||||
// only handle edges
|
||||
@@ -862,9 +861,9 @@ void CmdSketcherRestoreInternalAlignmentGeometry::activated(int iMsg)
|
||||
if(it->substr(0,4) == "Edge")
|
||||
GeoId = std::atoi(it->substr(4,4000).c_str()) - 1;
|
||||
else
|
||||
GeoId = -std::atoi(it->substr(12,4000).c_str()) - 2;
|
||||
|
||||
const Part::Geometry *geo = Obj->getGeometry(GeoId);
|
||||
GeoId = -std::atoi(it->substr(12,4000).c_str()) - 2;
|
||||
|
||||
const Part::Geometry *geo = Obj->getGeometry(GeoId);
|
||||
// Only for supported types
|
||||
if (geo->getTypeId() == Part::GeomEllipse::getClassTypeId() ||
|
||||
geo->getTypeId() == Part::GeomArcOfEllipse::getClassTypeId() ||
|
||||
@@ -980,7 +979,7 @@ void CmdSketcherSymmetry::activated(int iMsg)
|
||||
}
|
||||
|
||||
// reference can be external or non-external
|
||||
LastGeo = Obj->getGeometry(LastGeoId);
|
||||
LastGeo = Obj->getGeometry(LastGeoId);
|
||||
// Only for supported types
|
||||
if(LastGeo->getTypeId() == Part::GeomLineSegment::getClassTypeId())
|
||||
lastgeotype = line;
|
||||
@@ -1077,7 +1076,7 @@ void CmdSketcherSymmetry::activated(int iMsg)
|
||||
}
|
||||
else {
|
||||
int index = geoIdList.rfind(',');
|
||||
geoIdList.resize(index);
|
||||
geoIdList.resize(index);
|
||||
}
|
||||
|
||||
geoIdList.insert(0,1,'[');
|
||||
@@ -1089,7 +1088,7 @@ void CmdSketcherSymmetry::activated(int iMsg)
|
||||
Gui::Command::doCommand(
|
||||
Gui::Command::Doc, "App.ActiveDocument.%s.addSymmetric(%s,%d,%d)",
|
||||
Obj->getNameInDocument(), geoIdList.c_str(), LastGeoId, LastPointPos
|
||||
);
|
||||
);
|
||||
|
||||
Gui::Command::commitCommand();
|
||||
}
|
||||
@@ -1108,7 +1107,7 @@ bool CmdSketcherSymmetry::isActive(void)
|
||||
|
||||
|
||||
class SketcherCopy : public Gui::Command {
|
||||
public:
|
||||
public:
|
||||
enum Op {
|
||||
Copy,
|
||||
Clone,
|
||||
@@ -1156,7 +1155,7 @@ static const char *cursor_createcopy[]={
|
||||
"................................",
|
||||
"................................",
|
||||
"................................"};
|
||||
|
||||
|
||||
class DrawSketchHandlerCopy: public DrawSketchHandler
|
||||
{
|
||||
public:
|
||||
@@ -1171,21 +1170,21 @@ static const char *cursor_createcopy[]={
|
||||
, EditCurve(2)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
virtual ~DrawSketchHandlerCopy(){}
|
||||
/// mode table
|
||||
enum SelectMode {
|
||||
STATUS_SEEK_First, /**< enum value ----. */
|
||||
STATUS_End
|
||||
};
|
||||
|
||||
|
||||
virtual void activated(ViewProviderSketch *sketchgui)
|
||||
{
|
||||
setCursor(QPixmap(cursor_createcopy),7,7);
|
||||
Origin = static_cast<Sketcher::SketchObject *>(sketchgui->getObject())->getPoint(OriginGeoId, OriginPos);
|
||||
EditCurve[0] = Base::Vector2d(Origin.x,Origin.y);
|
||||
}
|
||||
|
||||
|
||||
virtual void mouseMove(Base::Vector2d onSketchPos)
|
||||
{
|
||||
if (Mode==STATUS_SEEK_First) {
|
||||
@@ -1194,66 +1193,66 @@ static const char *cursor_createcopy[]={
|
||||
SbString text;
|
||||
text.sprintf(" (%.1f,%.1fdeg)", length, angle * 180 / M_PI);
|
||||
setPositionText(onSketchPos, text);
|
||||
|
||||
|
||||
EditCurve[1] = onSketchPos;
|
||||
sketchgui->drawEdit(EditCurve);
|
||||
if (seekAutoConstraint(sugConstr1, onSketchPos, Base::Vector2d(0.0,0.0),AutoConstraint::VERTEX)) {
|
||||
renderSuggestConstraintsCursor(sugConstr1);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
applyCursor();
|
||||
}
|
||||
|
||||
|
||||
virtual bool pressButton(Base::Vector2d onSketchPos)
|
||||
{
|
||||
if (Mode==STATUS_SEEK_First){
|
||||
EditCurve[1] = onSketchPos;
|
||||
sketchgui->drawEdit(EditCurve);
|
||||
sketchgui->drawEdit(EditCurve);
|
||||
Mode = STATUS_End;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
virtual bool releaseButton(Base::Vector2d onSketchPos)
|
||||
{
|
||||
Q_UNUSED(onSketchPos);
|
||||
if (Mode==STATUS_End){
|
||||
|
||||
|
||||
Base::Vector2d vector = EditCurve[1]-EditCurve[0];
|
||||
|
||||
|
||||
unsetCursor();
|
||||
resetPositionText();
|
||||
|
||||
|
||||
int currentgeoid = static_cast<Sketcher::SketchObject *>(sketchgui->getObject())->getHighestCurveIndex();
|
||||
|
||||
|
||||
Gui::Command::openCommand("Copy/clone/move geometry");
|
||||
|
||||
|
||||
try{
|
||||
if( Op != SketcherCopy::Move) {
|
||||
|
||||
|
||||
Gui::Command::doCommand(
|
||||
Gui::Command::Doc, "App.ActiveDocument.%s.addCopy(%s,App.Vector(%f,%f,0),%s)",
|
||||
sketchgui->getObject()->getNameInDocument(),
|
||||
sketchgui->getObject()->getNameInDocument(),
|
||||
geoIdList.c_str(), vector.x, vector.y,
|
||||
(Op == SketcherCopy::Clone?"True":"False"));
|
||||
(Op == SketcherCopy::Clone?"True":"False"));
|
||||
}
|
||||
else {
|
||||
Gui::Command::doCommand(
|
||||
else {
|
||||
Gui::Command::doCommand(
|
||||
Gui::Command::Doc, "App.ActiveDocument.%s.addMove(%s,App.Vector(%f,%f,0))",
|
||||
sketchgui->getObject()->getNameInDocument(),
|
||||
sketchgui->getObject()->getNameInDocument(),
|
||||
geoIdList.c_str(), vector.x, vector.y);
|
||||
}
|
||||
|
||||
|
||||
Gui::Command::commitCommand();
|
||||
}
|
||||
catch (const Base::Exception& e) {
|
||||
Base::Console().Error("%s\n", e.what());
|
||||
Gui::Command::abortCommand();
|
||||
}
|
||||
|
||||
|
||||
if( Op != SketcherCopy::Move) {
|
||||
// add auto constraints for the destination copy
|
||||
if (sugConstr1.size() > 0) {
|
||||
@@ -1267,13 +1266,13 @@ static const char *cursor_createcopy[]={
|
||||
sugConstr1.clear();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
tryAutoRecomputeIfNotSolve(static_cast<Sketcher::SketchObject *>(sketchgui->getObject()));
|
||||
|
||||
|
||||
EditCurve.clear();
|
||||
sketchgui->drawEdit(EditCurve);
|
||||
|
||||
sketchgui->purgeHandler(); // no code after this line, Handler get deleted in ViewProvider
|
||||
|
||||
sketchgui->purgeHandler(); // no code after this line, Handler get deleted in ViewProvider
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -1297,14 +1296,14 @@ void SketcherCopy::activate(SketcherCopy::Op op)
|
||||
{
|
||||
// get the selection
|
||||
std::vector<Gui::SelectionObject> selection = getSelection().getSelectionEx();
|
||||
|
||||
|
||||
// only one sketch with its subelements are allowed to be selected
|
||||
if (selection.size() != 1) {
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||
QObject::tr("Select elements from a single sketch."));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// get the needed lists and objects
|
||||
const std::vector<std::string> &SubNames = selection[0].getSubNames();
|
||||
if (SubNames.empty()) {
|
||||
@@ -1312,15 +1311,15 @@ void SketcherCopy::activate(SketcherCopy::Op op)
|
||||
QObject::tr("Select elements from a single sketch."));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Sketcher::SketchObject* Obj = static_cast<Sketcher::SketchObject*>(selection[0].getObject());
|
||||
|
||||
|
||||
getSelection().clearSelection();
|
||||
|
||||
|
||||
int LastGeoId = 0;
|
||||
Sketcher::PointPos LastPointPos = Sketcher::none;
|
||||
const Part::Geometry *LastGeo = 0;
|
||||
|
||||
|
||||
// create python command with list of elements
|
||||
std::stringstream stream;
|
||||
int geoids = 0;
|
||||
@@ -1344,7 +1343,7 @@ void SketcherCopy::activate(SketcherCopy::Op op)
|
||||
Obj->getGeoVertexIndex(VtId, GeoId, PosId);
|
||||
if (Obj->getGeometry(GeoId)->getTypeId() == Part::GeomPoint::getClassTypeId()) {
|
||||
LastGeoId = GeoId;
|
||||
LastPointPos = Sketcher::start;
|
||||
LastPointPos = Sketcher::start;
|
||||
// points to copy
|
||||
if (LastGeoId>=0) {
|
||||
geoids++;
|
||||
@@ -1353,7 +1352,7 @@ void SketcherCopy::activate(SketcherCopy::Op op)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// check if last selected element is a Vertex, not being a GeomPoint
|
||||
if (SubNames.rbegin()->size() > 6 && SubNames.rbegin()->substr(0,6) == "Vertex"){
|
||||
int VtId = std::atoi(SubNames.rbegin()->substr(6,4000).c_str()) - 1;
|
||||
@@ -1365,21 +1364,21 @@ void SketcherCopy::activate(SketcherCopy::Op op)
|
||||
LastPointPos = PosId;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (geoids < 1) {
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||
QObject::tr("A copy requires at least one selected non-external geometric element"));
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
std::string geoIdList = stream.str();
|
||||
|
||||
|
||||
// remove the last added comma and brackets to make the python list
|
||||
int index = geoIdList.rfind(',');
|
||||
geoIdList.resize(index);
|
||||
geoIdList.resize(index);
|
||||
geoIdList.insert(0,1,'[');
|
||||
geoIdList.append(1,']');
|
||||
|
||||
|
||||
// if the last element is not a point serving as a reference for the copy process
|
||||
// then make the start point of the last element the copy reference (if it exists, if not the center point)
|
||||
if (LastPointPos == Sketcher::none) {
|
||||
@@ -1391,7 +1390,7 @@ void SketcherCopy::activate(SketcherCopy::Op op)
|
||||
LastPointPos = Sketcher::start;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Ask the user if he wants to clone or to simple copy
|
||||
/*int ret = QMessageBox::question(Gui::getMainWindow(), QObject::tr("Dimensional/Geometric constraints"),
|
||||
* QObject::tr("Do you want to clone the object, i.e. substitute dimensional constraints by geometric constraints?"),
|
||||
@@ -1404,12 +1403,12 @@ else if (ret == QMessageBox::Cancel) {
|
||||
// do nothing
|
||||
return;
|
||||
}*/
|
||||
|
||||
ActivateAcceleratorHandler(getActiveGuiDocument(),new DrawSketchHandlerCopy(geoIdList, LastGeoId, LastPointPos, geoids, op));
|
||||
|
||||
ActivateAcceleratorHandler(getActiveGuiDocument(),new DrawSketchHandlerCopy(geoIdList, LastGeoId, LastPointPos, geoids, op));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class CmdSketcherCopy : public SketcherCopy
|
||||
{
|
||||
public:
|
||||
@@ -1418,10 +1417,10 @@ public:
|
||||
virtual const char* className() const
|
||||
{ return "CmdSketcherCopy"; }
|
||||
virtual void activate();
|
||||
protected:
|
||||
protected:
|
||||
virtual void activated(int iMsg);
|
||||
virtual bool isActive(void);
|
||||
};
|
||||
};
|
||||
|
||||
CmdSketcherCopy::CmdSketcherCopy()
|
||||
:SketcherCopy("Sketcher_Copy")
|
||||
@@ -1453,7 +1452,7 @@ bool CmdSketcherCopy::isActive(void)
|
||||
{
|
||||
return isSketcherAcceleratorActive( getActiveGuiDocument(), true );
|
||||
}
|
||||
|
||||
|
||||
class CmdSketcherClone : public SketcherCopy
|
||||
{
|
||||
public:
|
||||
@@ -1462,7 +1461,7 @@ public:
|
||||
virtual const char* className() const
|
||||
{ return "CmdSketcherClone"; }
|
||||
virtual void activate();
|
||||
protected:
|
||||
protected:
|
||||
virtual void activated(int iMsg);
|
||||
virtual bool isActive(void);
|
||||
};
|
||||
@@ -1505,7 +1504,7 @@ public:
|
||||
virtual const char* className() const
|
||||
{ return "CmdSketcherMove"; }
|
||||
virtual void activate();
|
||||
protected:
|
||||
protected:
|
||||
virtual void activated(int iMsg);
|
||||
virtual bool isActive(void);
|
||||
};
|
||||
@@ -1565,10 +1564,10 @@ void CmdSketcherCompCopy::activated(int iMsg)
|
||||
// to explicitly set the icon of the used command.
|
||||
Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(_pcAction);
|
||||
QList<QAction*> a = pcAction->actions();
|
||||
|
||||
|
||||
assert(iMsg < a.size());
|
||||
pcAction->setIcon(a[iMsg]->icon());
|
||||
|
||||
|
||||
if (iMsg==0){
|
||||
CmdSketcherClone sc;
|
||||
sc.activate();
|
||||
@@ -1593,35 +1592,35 @@ Gui::Action * CmdSketcherCompCopy::createAction(void)
|
||||
Gui::ActionGroup* pcAction = new Gui::ActionGroup(this, Gui::getMainWindow());
|
||||
pcAction->setDropDownMenu(true);
|
||||
applyCommandData(this->className(), pcAction);
|
||||
|
||||
|
||||
QAction* clone = pcAction->addAction(QString());
|
||||
clone->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_Clone"));
|
||||
QAction* copy = pcAction->addAction(QString());
|
||||
copy->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_Copy"));
|
||||
QAction* move = pcAction->addAction(QString());
|
||||
move->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_Move"));
|
||||
|
||||
|
||||
_pcAction = pcAction;
|
||||
languageChange();
|
||||
|
||||
|
||||
pcAction->setIcon(clone->icon());
|
||||
int defaultId = 0;
|
||||
pcAction->setProperty("defaultAction", QVariant(defaultId));
|
||||
|
||||
|
||||
pcAction->setShortcut(QString::fromLatin1(sAccel));
|
||||
|
||||
|
||||
return pcAction;
|
||||
}
|
||||
|
||||
void CmdSketcherCompCopy::languageChange()
|
||||
{
|
||||
Command::languageChange();
|
||||
|
||||
|
||||
if (!_pcAction)
|
||||
return;
|
||||
Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(_pcAction);
|
||||
QList<QAction*> a = pcAction->actions();
|
||||
|
||||
|
||||
QAction* clone = a[0];
|
||||
clone->setText(QApplication::translate("Sketcher_CompCopy","Clone"));
|
||||
clone->setToolTip(QApplication::translate("Sketcher_Clone","Creates a clone of the geometry taking as reference the last selected point"));
|
||||
@@ -1680,7 +1679,7 @@ static const char *cursor_createrectangulararray[]={
|
||||
"................................",
|
||||
"................................",
|
||||
"................................"};
|
||||
|
||||
|
||||
class DrawSketchHandlerRectangularArray: public DrawSketchHandler
|
||||
{
|
||||
public:
|
||||
@@ -1700,21 +1699,21 @@ static const char *cursor_createrectangulararray[]={
|
||||
, EditCurve(2)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
virtual ~DrawSketchHandlerRectangularArray(){}
|
||||
/// mode table
|
||||
enum SelectMode {
|
||||
STATUS_SEEK_First, /**< enum value ----. */
|
||||
STATUS_End
|
||||
};
|
||||
|
||||
|
||||
virtual void activated(ViewProviderSketch *sketchgui)
|
||||
{
|
||||
setCursor(QPixmap(cursor_createrectangulararray),7,7);
|
||||
Origin = static_cast<Sketcher::SketchObject *>(sketchgui->getObject())->getPoint(OriginGeoId, OriginPos);
|
||||
EditCurve[0] = Base::Vector2d(Origin.x,Origin.y);
|
||||
}
|
||||
|
||||
|
||||
virtual void mouseMove(Base::Vector2d onSketchPos)
|
||||
{
|
||||
if (Mode==STATUS_SEEK_First) {
|
||||
@@ -1723,58 +1722,58 @@ static const char *cursor_createrectangulararray[]={
|
||||
SbString text;
|
||||
text.sprintf(" (%.1f,%.1fdeg)", length, angle * 180 / M_PI);
|
||||
setPositionText(onSketchPos, text);
|
||||
|
||||
|
||||
EditCurve[1] = onSketchPos;
|
||||
sketchgui->drawEdit(EditCurve);
|
||||
if (seekAutoConstraint(sugConstr1, onSketchPos, Base::Vector2d(0.0,0.0),AutoConstraint::VERTEX)) {
|
||||
renderSuggestConstraintsCursor(sugConstr1);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
applyCursor();
|
||||
}
|
||||
|
||||
|
||||
virtual bool pressButton(Base::Vector2d onSketchPos)
|
||||
{
|
||||
if (Mode==STATUS_SEEK_First){
|
||||
EditCurve[1] = onSketchPos;
|
||||
sketchgui->drawEdit(EditCurve);
|
||||
sketchgui->drawEdit(EditCurve);
|
||||
Mode = STATUS_End;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
virtual bool releaseButton(Base::Vector2d onSketchPos)
|
||||
{
|
||||
Q_UNUSED(onSketchPos);
|
||||
if (Mode==STATUS_End){
|
||||
|
||||
|
||||
Base::Vector2d vector = EditCurve[1]-EditCurve[0];
|
||||
|
||||
|
||||
unsetCursor();
|
||||
resetPositionText();
|
||||
|
||||
|
||||
Gui::Command::openCommand("Create copy of geometry");
|
||||
|
||||
try {
|
||||
Gui::Command::doCommand(
|
||||
Gui::Command::Doc, "App.ActiveDocument.%s.addRectangularArray(%s, App.Vector(%f,%f,0),%s,%d,%d,%s,%f)",
|
||||
sketchgui->getObject()->getNameInDocument(),
|
||||
sketchgui->getObject()->getNameInDocument(),
|
||||
geoIdList.c_str(), vector.x, vector.y,
|
||||
(Clone?"True":"False"),
|
||||
Cols, Rows,
|
||||
(ConstraintSeparation?"True":"False"),
|
||||
(EqualVerticalHorizontalSpacing?1.0:0.5));
|
||||
|
||||
|
||||
Gui::Command::commitCommand();
|
||||
}
|
||||
catch (const Base::Exception& e) {
|
||||
Base::Console().Error("%s\n", e.what());
|
||||
Gui::Command::abortCommand();
|
||||
}
|
||||
|
||||
|
||||
// add auto constraints for the destination copy
|
||||
if (sugConstr1.size() > 0) {
|
||||
createAutoConstraints(sugConstr1, OriginGeoId+nElements, OriginPos);
|
||||
@@ -1782,12 +1781,12 @@ static const char *cursor_createrectangulararray[]={
|
||||
}
|
||||
|
||||
tryAutoRecomputeIfNotSolve(static_cast<Sketcher::SketchObject *>(sketchgui->getObject()));
|
||||
|
||||
|
||||
|
||||
EditCurve.clear();
|
||||
sketchgui->drawEdit(EditCurve);
|
||||
|
||||
sketchgui->purgeHandler(); // no code after this line, Handler get deleted in ViewProvider
|
||||
|
||||
sketchgui->purgeHandler(); // no code after this line, Handler get deleted in ViewProvider
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -1802,11 +1801,11 @@ static const char *cursor_createrectangulararray[]={
|
||||
int Rows;
|
||||
int Cols;
|
||||
bool ConstraintSeparation;
|
||||
bool EqualVerticalHorizontalSpacing;
|
||||
bool EqualVerticalHorizontalSpacing;
|
||||
std::vector<Base::Vector2d> EditCurve;
|
||||
std::vector<AutoConstraint> sugConstr1;
|
||||
};
|
||||
|
||||
|
||||
|
||||
DEF_STD_CMD_A(CmdSketcherRectangularArray);
|
||||
|
||||
@@ -1837,7 +1836,7 @@ void CmdSketcherRectangularArray::activated(int iMsg)
|
||||
QObject::tr("Select elements from a single sketch."));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// get the needed lists and objects
|
||||
const std::vector<std::string> &SubNames = selection[0].getSubNames();
|
||||
if (SubNames.empty()) {
|
||||
@@ -1847,13 +1846,13 @@ void CmdSketcherRectangularArray::activated(int iMsg)
|
||||
}
|
||||
|
||||
Sketcher::SketchObject* Obj = static_cast<Sketcher::SketchObject*>(selection[0].getObject());
|
||||
|
||||
|
||||
getSelection().clearSelection();
|
||||
|
||||
int LastGeoId = 0;
|
||||
Sketcher::PointPos LastPointPos = Sketcher::none;
|
||||
const Part::Geometry *LastGeo = 0;
|
||||
|
||||
|
||||
// create python command with list of elements
|
||||
std::stringstream stream;
|
||||
int geoids = 0;
|
||||
@@ -1863,9 +1862,9 @@ void CmdSketcherRectangularArray::activated(int iMsg)
|
||||
if (it->size() > 4 && it->substr(0,4) == "Edge") {
|
||||
LastGeoId = std::atoi(it->substr(4,4000).c_str()) - 1;
|
||||
LastPointPos = Sketcher::none;
|
||||
|
||||
|
||||
LastGeo = Obj->getGeometry(LastGeoId);
|
||||
|
||||
|
||||
// lines to copy
|
||||
if (LastGeoId>=0) {
|
||||
geoids++;
|
||||
@@ -1889,7 +1888,7 @@ void CmdSketcherRectangularArray::activated(int iMsg)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// check if last selected element is a Vertex, not being a GeomPoint
|
||||
if (SubNames.rbegin()->size() > 6 && SubNames.rbegin()->substr(0,6) == "Vertex") {
|
||||
int VtId = std::atoi(SubNames.rbegin()->substr(6,4000).c_str()) - 1;
|
||||
@@ -1906,13 +1905,13 @@ void CmdSketcherRectangularArray::activated(int iMsg)
|
||||
QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"),
|
||||
QObject::tr("A copy requires at least one selected non-external geometric element"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
std::string geoIdList = stream.str();
|
||||
|
||||
// remove the last added comma and brackets to make the python list
|
||||
int index = geoIdList.rfind(',');
|
||||
geoIdList.resize(index);
|
||||
geoIdList.resize(index);
|
||||
geoIdList.insert(0,1,'[');
|
||||
geoIdList.append(1,']');
|
||||
|
||||
@@ -2032,36 +2031,36 @@ CmdSketcherDeleteAllConstraints::CmdSketcherDeleteAllConstraints()
|
||||
void CmdSketcherDeleteAllConstraints::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
|
||||
|
||||
int ret = QMessageBox::question(Gui::getMainWindow(), QObject::tr("Delete All Constraints"),
|
||||
QObject::tr("Are you really sure you want to delete all the constraints?"),
|
||||
QMessageBox::Yes, QMessageBox::Cancel);
|
||||
|
||||
if (ret == QMessageBox::Yes) {
|
||||
getSelection().clearSelection();
|
||||
|
||||
|
||||
Gui::Document * doc= getActiveGuiDocument();
|
||||
|
||||
|
||||
SketcherGui::ViewProviderSketch* vp = static_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit());
|
||||
|
||||
|
||||
Sketcher::SketchObject* Obj= vp->getSketchObject();
|
||||
|
||||
|
||||
try {
|
||||
Gui::Command::openCommand("Delete All Constraints");
|
||||
Gui::Command::doCommand(Gui::Command::Doc,
|
||||
"App.ActiveDocument.%s.deleteAllConstraints()",
|
||||
Obj->getNameInDocument());
|
||||
|
||||
|
||||
Gui::Command::commitCommand();
|
||||
}
|
||||
catch (const Base::Exception& e) {
|
||||
Base::Console().Error("Failed to delete All Constraints: %s\n", e.what());
|
||||
Gui::Command::abortCommand();
|
||||
}
|
||||
|
||||
|
||||
ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher");
|
||||
bool autoRecompute = hGrp->GetBool("AutoRecompute",false);
|
||||
|
||||
|
||||
if(autoRecompute)
|
||||
Gui::Command::updateActive();
|
||||
else
|
||||
@@ -2071,7 +2070,7 @@ void CmdSketcherDeleteAllConstraints::activated(int iMsg)
|
||||
// do nothing
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
bool CmdSketcherDeleteAllConstraints::isActive(void)
|
||||
|
||||
@@ -28,9 +28,8 @@
|
||||
# include <Precision.hxx>
|
||||
# include <QApplication>
|
||||
# include <Standard_Version.hxx>
|
||||
#endif
|
||||
|
||||
# include <QMessageBox>
|
||||
#endif
|
||||
|
||||
#include <Base/Console.h>
|
||||
#include <App/Application.h>
|
||||
@@ -155,13 +154,13 @@ void CmdSketcherSwitchVirtualSpace::activated(int iMsg)
|
||||
QObject::tr("Select constraint(s) from the sketch."));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
SketcherGui::ViewProviderSketch* sketchgui = static_cast<SketcherGui::ViewProviderSketch*>(getActiveGuiDocument()->getInEdit());
|
||||
Sketcher::SketchObject* Obj = sketchgui->getSketchObject();
|
||||
|
||||
|
||||
// undo command open
|
||||
openCommand("Toggle constraints to the other virtual space");
|
||||
|
||||
|
||||
int successful=SubNames.size();
|
||||
// go through the selected subelements
|
||||
for (std::vector<std::string>::const_iterator it=SubNames.begin();it!=SubNames.end();++it){
|
||||
|
||||
@@ -27,9 +27,8 @@
|
||||
# include <QApplication>
|
||||
# include <QDialog>
|
||||
# include <QMessageBox>
|
||||
#endif
|
||||
|
||||
# include <Inventor/sensors/SoSensor.h>
|
||||
#endif
|
||||
|
||||
#include <Base/Tools.h>
|
||||
#include <Gui/Application.h>
|
||||
@@ -141,7 +140,7 @@ void EditDatumDialog::exec(bool atCursor)
|
||||
if (dlg.exec()) {
|
||||
Base::Quantity newQuant = ui_ins_datum.labelEdit->value();
|
||||
if (newQuant.isQuantity() || (Constr->Type == Sketcher::SnellsLaw && newQuant.isDimensionless())) {
|
||||
// save the value for the history
|
||||
// save the value for the history
|
||||
ui_ins_datum.labelEdit->pushToHistory();
|
||||
|
||||
double newDatum = newQuant.getValue();
|
||||
|
||||
@@ -33,11 +33,11 @@
|
||||
# define PartGuiExport __declspec(dllimport)
|
||||
# define SketcherGuiExport __declspec(dllexport)
|
||||
#else // for Linux
|
||||
# define SketcherExport
|
||||
# define SketcherExport
|
||||
# define PartExport
|
||||
# define PartAppExport
|
||||
# define PartGuiExport
|
||||
# define SketcherGuiExport
|
||||
# define PartAppExport
|
||||
# define PartGuiExport
|
||||
# define SketcherGuiExport
|
||||
#endif
|
||||
|
||||
|
||||
@@ -52,6 +52,8 @@
|
||||
#include <cassert>
|
||||
#include <cmath>
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
// STL
|
||||
#include <vector>
|
||||
#include <map>
|
||||
@@ -63,6 +65,11 @@
|
||||
#include <queue>
|
||||
#include <bitset>
|
||||
|
||||
// Boost
|
||||
#include <boost/math/special_functions/fpclassify.hpp>
|
||||
#include <boost/bind.hpp>
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
#ifdef FC_OS_WIN32
|
||||
# define NOMINMAX
|
||||
# include <windows.h>
|
||||
@@ -70,15 +77,50 @@
|
||||
|
||||
// OCC
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <GC_MakeEllipse.hxx>
|
||||
#include <BRep_Tool.hxx>
|
||||
#include <gp_Pnt.hxx>
|
||||
#include <Precision.hxx>
|
||||
#include <TopTools_IndexedMapOfShape.hxx>
|
||||
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
|
||||
#include <TopExp.hxx>
|
||||
#include <TopExp_Explorer.hxx>
|
||||
#include <TopoDS.hxx>
|
||||
#include <TopoDS_Edge.hxx>
|
||||
#include <TopoDS_Vertex.hxx>
|
||||
|
||||
// Qt Toolkit
|
||||
#ifndef __Qt4All__
|
||||
# include <Gui/Qt4All.h>
|
||||
#endif
|
||||
|
||||
# include <QMessageBox>
|
||||
#include <qdebug.h>
|
||||
#include <QString>
|
||||
|
||||
// all of Inventor
|
||||
#ifndef __InventorAll__
|
||||
# include <Gui/InventorAll.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <Inventor/sensors/SoSensor.h>
|
||||
#include <Inventor/actions/SoGetMatrixAction.h>
|
||||
#include <Inventor/elements/SoFontNameElement.h>
|
||||
#include <Inventor/elements/SoFontSizeElement.h>
|
||||
#include <Inventor/elements/SoModelMatrixElement.h>
|
||||
#include <Inventor/elements/SoProjectionMatrixElement.h>
|
||||
#include <Inventor/elements/SoViewingMatrixElement.h>
|
||||
#include <Inventor/elements/SoViewVolumeElement.h>
|
||||
#include <Inventor/elements/SoViewportRegionElement.h>
|
||||
#include <Inventor/actions/SoGetMatrixAction.h>
|
||||
#include <Inventor/actions/SoGLRenderAction.h>
|
||||
#include <Inventor/elements/SoModelMatrixElement.h>
|
||||
#include <Inventor/elements/SoProjectionMatrixElement.h>
|
||||
#include <Inventor/elements/SoViewingMatrixElement.h>
|
||||
#include <Inventor/elements/SoViewVolumeElement.h>
|
||||
#include <Inventor/elements/SoViewportRegionElement.h>
|
||||
#include <Inventor/nodes/SoCamera.h>
|
||||
#include <Inventor/SbTime.h>
|
||||
|
||||
// Python
|
||||
#include <Python.h>
|
||||
|
||||
@@ -43,15 +43,16 @@
|
||||
# include <Inventor/actions/SoGLRenderAction.h>
|
||||
# include <Inventor/misc/SoState.h>
|
||||
# include <cmath>
|
||||
#endif
|
||||
#include <Inventor/actions/SoGetMatrixAction.h>
|
||||
#include <Inventor/elements/SoFontNameElement.h>
|
||||
#include <Inventor/elements/SoFontSizeElement.h>
|
||||
#include <Inventor/elements/SoModelMatrixElement.h>
|
||||
#include <Inventor/elements/SoProjectionMatrixElement.h>
|
||||
#include <Inventor/elements/SoViewingMatrixElement.h>
|
||||
#include <Inventor/elements/SoViewVolumeElement.h>
|
||||
#include <Inventor/elements/SoViewportRegionElement.h>
|
||||
# include <Inventor/actions/SoGetMatrixAction.h>
|
||||
# include <Inventor/elements/SoFontNameElement.h>
|
||||
# include <Inventor/elements/SoFontSizeElement.h>
|
||||
# include <Inventor/elements/SoModelMatrixElement.h>
|
||||
# include <Inventor/elements/SoProjectionMatrixElement.h>
|
||||
# include <Inventor/elements/SoViewingMatrixElement.h>
|
||||
# include <Inventor/elements/SoViewVolumeElement.h>
|
||||
# include <Inventor/elements/SoViewportRegionElement.h>
|
||||
#endif // _PreComp_
|
||||
|
||||
|
||||
#include "SoDatumLabel.h"
|
||||
#include <Gui/BitmapFactory.h>
|
||||
@@ -424,7 +425,7 @@ void SoDatumLabel::GLRender(SoGLRenderAction * action)
|
||||
if (action->handleTransparency(true))
|
||||
return;
|
||||
|
||||
/**Remark from Stefan Tröger:
|
||||
/**Remark from Stefan Tröger:
|
||||
* The scale calculation is based on knowledge of SbViewVolume::getWorldToScreenScale
|
||||
* implementation internals. The factor returned from this function is calculated from the view frustums
|
||||
* nearplane width, height is not taken into account, and hence we divide it with the viewport width
|
||||
@@ -465,7 +466,7 @@ void SoDatumLabel::GLRender(SoGLRenderAction * action)
|
||||
this->imgHeight = scale * (float) (srch);
|
||||
this->imgWidth = aspectRatio * (float) this->imgHeight;
|
||||
}
|
||||
|
||||
|
||||
if (this->datumtype.getValue() == SYMMETRIC) {
|
||||
// For the symmetry constraint that does not have text, but does have arrows
|
||||
//this->imgHeight = 3.36f;
|
||||
@@ -474,7 +475,7 @@ void SoDatumLabel::GLRender(SoGLRenderAction * action)
|
||||
this->imgHeight = scale*25.0f;
|
||||
this->imgWidth = scale*25.0f;
|
||||
}
|
||||
|
||||
|
||||
// Get the points stored in the pnt field
|
||||
const SbVec3f *points = this->pnts.getValues(0);
|
||||
|
||||
@@ -694,7 +695,7 @@ void SoDatumLabel::GLRender(SoGLRenderAction * action)
|
||||
glVertex2f(ar1[0], ar1[1]);
|
||||
glVertex2f(ar2[0], ar2[1]);
|
||||
glEnd();
|
||||
|
||||
|
||||
if (this->datumtype.getValue() == DIAMETER) {
|
||||
// create second arrowhead
|
||||
SbVec3f ar0_1 = p1;
|
||||
@@ -849,9 +850,9 @@ void SoDatumLabel::GLRender(SoGLRenderAction * action)
|
||||
ar1 = ar0 - dir * 0.866f * 2 * margin;
|
||||
ar2 = ar1 + normal * margin;
|
||||
ar1 -= normal * margin;
|
||||
|
||||
|
||||
glBegin(GL_LINES);
|
||||
glVertex3f(p1[0], p1[1], ZCONSTR);
|
||||
glVertex3f(p1[0], p1[1], ZCONSTR);
|
||||
glVertex3f(ar0[0], ar0[1], ZCONSTR);
|
||||
glVertex3f(ar0[0], ar0[1], ZCONSTR);
|
||||
glVertex3f(ar1[0], ar1[1], ZCONSTR);
|
||||
@@ -867,12 +868,12 @@ void SoDatumLabel::GLRender(SoGLRenderAction * action)
|
||||
ar4 -= normal * margin;
|
||||
|
||||
glBegin(GL_LINES);
|
||||
glVertex3f(p2[0], p2[1], ZCONSTR);
|
||||
glVertex3f(ar3[0], ar3[1], ZCONSTR);
|
||||
glVertex3f(ar3[0], ar3[1], ZCONSTR);
|
||||
glVertex3f(ar4[0], ar4[1], ZCONSTR);
|
||||
glVertex3f(ar3[0], ar3[1], ZCONSTR);
|
||||
glVertex3f(ar5[0], ar5[1], ZCONSTR);
|
||||
glVertex3f(p2[0], p2[1], ZCONSTR);
|
||||
glVertex3f(ar3[0], ar3[1], ZCONSTR);
|
||||
glVertex3f(ar3[0], ar3[1], ZCONSTR);
|
||||
glVertex3f(ar4[0], ar4[1], ZCONSTR);
|
||||
glVertex3f(ar3[0], ar3[1], ZCONSTR);
|
||||
glVertex3f(ar5[0], ar5[1], ZCONSTR);
|
||||
glEnd();
|
||||
|
||||
// BOUNDING BOX CALCULATION - IMPORTANT
|
||||
|
||||
@@ -27,17 +27,16 @@
|
||||
# include <Inventor/misc/SoState.h>
|
||||
# include <cmath>
|
||||
# include <cfloat>
|
||||
# include <Inventor/actions/SoGetMatrixAction.h>
|
||||
# include <Inventor/actions/SoGLRenderAction.h>
|
||||
# include <Inventor/elements/SoModelMatrixElement.h>
|
||||
# include <Inventor/elements/SoProjectionMatrixElement.h>
|
||||
# include <Inventor/elements/SoViewingMatrixElement.h>
|
||||
# include <Inventor/elements/SoViewVolumeElement.h>
|
||||
# include <Inventor/elements/SoViewportRegionElement.h>
|
||||
# include <Inventor/nodes/SoCamera.h>
|
||||
#endif
|
||||
|
||||
#include <Inventor/actions/SoGetMatrixAction.h>
|
||||
#include <Inventor/actions/SoGLRenderAction.h>
|
||||
#include <Inventor/elements/SoModelMatrixElement.h>
|
||||
#include <Inventor/elements/SoProjectionMatrixElement.h>
|
||||
#include <Inventor/elements/SoViewingMatrixElement.h>
|
||||
#include <Inventor/elements/SoViewVolumeElement.h>
|
||||
#include <Inventor/elements/SoViewportRegionElement.h>
|
||||
#include <Inventor/nodes/SoCamera.h>
|
||||
|
||||
#include <Gui/Application.h>
|
||||
#include <Gui/Document.h>
|
||||
#include <Gui/MainWindow.h>
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
# include <QStyledItemDelegate>
|
||||
# include <QPainter>
|
||||
# include <QPixmapCache>
|
||||
# include <boost/bind.hpp>
|
||||
#endif
|
||||
|
||||
#include "TaskSketcherConstrains.h"
|
||||
@@ -50,7 +51,6 @@
|
||||
#include <Gui/Selection.h>
|
||||
#include <Gui/BitmapFactory.h>
|
||||
#include <Gui/ViewProvider.h>
|
||||
#include <boost/bind.hpp>
|
||||
#include <Gui/Command.h>
|
||||
#include <Gui/MainWindow.h>
|
||||
#include <Gui/PrefWidgets.h>
|
||||
@@ -242,7 +242,7 @@ public:
|
||||
case Sketcher::Radius:
|
||||
return constraint->isDriving ? radi : radi_driven;
|
||||
case Sketcher::Diameter:
|
||||
return constraint->isDriving ? dia : dia_driven;
|
||||
return constraint->isDriving ? dia : dia_driven;
|
||||
case Sketcher::Angle:
|
||||
return constraint->isDriving ? angl : angl_driven;
|
||||
case Sketcher::SnellsLaw:
|
||||
@@ -335,7 +335,7 @@ public:
|
||||
|
||||
return sketch->Constraints[ConstraintNbr]->isInVirtualSpace;
|
||||
}
|
||||
|
||||
|
||||
void updateVirtualSpaceStatus() {
|
||||
this->setCheckState((this->isInVirtualSpace() != sketchView->getIsShownVirtualSpace())?Qt::Unchecked:Qt::Checked);
|
||||
}
|
||||
@@ -478,7 +478,7 @@ CONTEXT_MEMBER_DEF("Sketcher_SelectElementsAssociatedWithConstraints",doSelectCo
|
||||
void ConstraintView::updateDrivingStatus()
|
||||
{
|
||||
QListWidgetItem* item = currentItem();
|
||||
|
||||
|
||||
ConstraintItem *it = dynamic_cast<ConstraintItem*>(item);
|
||||
if (it) {
|
||||
onUpdateDrivingStatus(item, !it->isDriving());
|
||||
@@ -757,7 +757,7 @@ void TaskSketcherConstrains::on_listWidgetConstraints_itemChanged(QListWidgetIte
|
||||
return;
|
||||
|
||||
inEditMode = true;
|
||||
|
||||
|
||||
assert(sketchView);
|
||||
|
||||
const Sketcher::SketchObject * sketch = sketchView->getSketchObject();
|
||||
@@ -766,7 +766,7 @@ void TaskSketcherConstrains::on_listWidgetConstraints_itemChanged(QListWidgetIte
|
||||
const std::string currConstraintName = v->Name;
|
||||
|
||||
const std::string basename = Base::Tools::toStdString(it->data(Qt::EditRole).toString());
|
||||
|
||||
|
||||
std::string newName(Sketcher::PropertyConstraintList::getConstraintName(basename, it->ConstraintNbr));
|
||||
|
||||
// we only start a rename if we are really sure the name has changed, which is:
|
||||
@@ -797,13 +797,13 @@ void TaskSketcherConstrains::on_listWidgetConstraints_itemChanged(QListWidgetIte
|
||||
try {
|
||||
Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.setVirtualSpace(%d, %s)",
|
||||
sketch->getNameInDocument(),
|
||||
it->ConstraintNbr,
|
||||
it->ConstraintNbr,
|
||||
((item->checkState() == Qt::Checked) != sketchView->getIsShownVirtualSpace())?"False":"True");
|
||||
Gui::Command::commitCommand();
|
||||
}
|
||||
catch (const Base::Exception & e) {
|
||||
Gui::Command::abortCommand();
|
||||
|
||||
|
||||
QMessageBox::critical(Gui::MainWindow::getInstance(), tr("Error"),
|
||||
QString::fromLatin1(e.what()), QMessageBox::Ok, QMessageBox::Ok);
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
# include <QRegExp>
|
||||
# include <QShortcut>
|
||||
# include <QString>
|
||||
# include <boost/bind.hpp>
|
||||
#endif
|
||||
|
||||
#include "TaskSketcherElements.h"
|
||||
@@ -48,7 +49,7 @@
|
||||
#include <Gui/BitmapFactory.h>
|
||||
#include <Gui/ViewProvider.h>
|
||||
#include <Gui/BitmapFactory.h>
|
||||
#include <boost/bind.hpp>
|
||||
|
||||
#include <Gui/Command.h>
|
||||
|
||||
using namespace SketcherGui;
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "PreCompiled.h"
|
||||
|
||||
#ifndef _PreComp_
|
||||
# include <boost/bind.hpp>
|
||||
#endif
|
||||
|
||||
#include "ui_TaskSketcherMessages.h"
|
||||
@@ -36,7 +37,7 @@
|
||||
#include <Gui/Selection.h>
|
||||
#include <Gui/Command.h>
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
|
||||
|
||||
#include <Mod/Sketcher/App/SketchObject.h>
|
||||
|
||||
@@ -81,7 +82,7 @@ TaskSketcherMessages::TaskSketcherMessages(ViewProviderSketch *sketchView)
|
||||
QObject::connect(
|
||||
ui->manualUpdate, SIGNAL(clicked(bool)),
|
||||
this , SLOT (on_manualUpdate_clicked(bool))
|
||||
);*/
|
||||
);*/
|
||||
}
|
||||
|
||||
TaskSketcherMessages::~TaskSketcherMessages()
|
||||
@@ -105,13 +106,13 @@ void TaskSketcherMessages::on_labelConstrainStatus_linkActivated(const QString &
|
||||
{
|
||||
if( str == QString::fromLatin1("#conflicting"))
|
||||
Gui::Application::Instance->commandManager().runCommandByName("Sketcher_SelectConflictingConstraints");
|
||||
|
||||
|
||||
if( str == QString::fromLatin1("#redundant"))
|
||||
Gui::Application::Instance->commandManager().runCommandByName("Sketcher_SelectRedundantConstraints");
|
||||
|
||||
|
||||
if( str == QString::fromLatin1("#dofs"))
|
||||
Gui::Application::Instance->commandManager().runCommandByName("Sketcher_SelectElementsWithDoFs");
|
||||
|
||||
|
||||
}
|
||||
|
||||
void TaskSketcherMessages::on_autoUpdate_stateChanged(int state)
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
#include "PreCompiled.h"
|
||||
|
||||
#ifndef _PreComp_
|
||||
# include <boost/bind.hpp>
|
||||
# include <QString>
|
||||
#endif
|
||||
|
||||
#include "ui_TaskSketcherSolverAdvanced.h"
|
||||
@@ -36,12 +38,8 @@
|
||||
#include <Gui/Selection.h>
|
||||
#include <Gui/Command.h>
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
|
||||
#include <Mod/Sketcher/App/SketchObject.h>
|
||||
|
||||
#include <QString>
|
||||
|
||||
#include "ViewProviderSketch.h"
|
||||
|
||||
#define LM_EPS 1E-10
|
||||
@@ -102,12 +100,12 @@ void TaskSketcherSolverAdvanced::updateDefaultMethodParameters(void)
|
||||
|
||||
int currentindex = ui->comboBoxDefaultSolver->currentIndex();
|
||||
int redundantcurrentindex = ui->comboBoxRedundantDefaultSolver->currentIndex();
|
||||
|
||||
|
||||
if(redundantcurrentindex == 2 || currentindex == 2)
|
||||
ui->comboBoxDogLegGaussStep->setEnabled(true);
|
||||
else
|
||||
ui->comboBoxDogLegGaussStep->setEnabled(false);
|
||||
|
||||
ui->comboBoxDogLegGaussStep->setEnabled(false);
|
||||
|
||||
switch(currentindex)
|
||||
{
|
||||
case 0: // BFGS
|
||||
@@ -128,11 +126,11 @@ void TaskSketcherSolverAdvanced::updateDefaultMethodParameters(void)
|
||||
ui->labelSolverParam3->setText(QString::fromLatin1("Tau"));
|
||||
ui->lineEditSolverParam1->setEnabled(true);
|
||||
ui->lineEditSolverParam2->setEnabled(true);
|
||||
ui->lineEditSolverParam3->setEnabled(true);
|
||||
ui->lineEditSolverParam3->setEnabled(true);
|
||||
double eps = ::atof(hGrp->GetASCII("LM_eps",QString::number(LM_EPS).toUtf8()).c_str());
|
||||
double eps1 = ::atof(hGrp->GetASCII("LM_eps1",QString::number(LM_EPS1).toUtf8()).c_str());
|
||||
double eps1 = ::atof(hGrp->GetASCII("LM_eps1",QString::number(LM_EPS1).toUtf8()).c_str());
|
||||
double tau = ::atof(hGrp->GetASCII("LM_tau",QString::number(LM_TAU).toUtf8()).c_str());
|
||||
ui->lineEditSolverParam1->setText(QString::number(eps).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
ui->lineEditSolverParam1->setText(QString::number(eps).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
ui->lineEditSolverParam2->setText(QString::number(eps1).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
ui->lineEditSolverParam3->setText(QString::number(tau).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
sketchView->getSketchObject()->getSolvedSketch().setLM_eps(eps);
|
||||
@@ -149,9 +147,9 @@ void TaskSketcherSolverAdvanced::updateDefaultMethodParameters(void)
|
||||
ui->lineEditSolverParam2->setEnabled(true);
|
||||
ui->lineEditSolverParam3->setEnabled(true);
|
||||
double tolg = ::atof(hGrp->GetASCII("DL_tolg",QString::number(DL_TOLG).toUtf8()).c_str());
|
||||
double tolx = ::atof(hGrp->GetASCII("DL_tolx",QString::number(DL_TOLX).toUtf8()).c_str());
|
||||
double tolx = ::atof(hGrp->GetASCII("DL_tolx",QString::number(DL_TOLX).toUtf8()).c_str());
|
||||
double tolf = ::atof(hGrp->GetASCII("DL_tolf",QString::number(DL_TOLF).toUtf8()).c_str());
|
||||
ui->lineEditSolverParam1->setText(QString::number(tolg).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
ui->lineEditSolverParam1->setText(QString::number(tolg).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
ui->lineEditSolverParam2->setText(QString::number(tolx).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
ui->lineEditSolverParam3->setText(QString::number(tolf).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
sketchView->getSketchObject()->getSolvedSketch().setDL_tolg(tolg);
|
||||
@@ -168,12 +166,12 @@ void TaskSketcherSolverAdvanced::updateRedundantMethodParameters(void)
|
||||
|
||||
int currentindex = ui->comboBoxDefaultSolver->currentIndex();
|
||||
int redundantcurrentindex = ui->comboBoxRedundantDefaultSolver->currentIndex();
|
||||
|
||||
|
||||
if(redundantcurrentindex == 2 || currentindex == 2)
|
||||
ui->comboBoxDogLegGaussStep->setEnabled(true);
|
||||
else
|
||||
ui->comboBoxDogLegGaussStep->setEnabled(false);
|
||||
|
||||
ui->comboBoxDogLegGaussStep->setEnabled(false);
|
||||
|
||||
switch(redundantcurrentindex)
|
||||
{
|
||||
case 0: // BFGS
|
||||
@@ -182,7 +180,7 @@ void TaskSketcherSolverAdvanced::updateRedundantMethodParameters(void)
|
||||
ui->labelRedundantSolverParam3->setText(QString::fromLatin1(""));
|
||||
ui->lineEditRedundantSolverParam1->clear();
|
||||
ui->lineEditRedundantSolverParam2->clear();
|
||||
ui->lineEditRedundantSolverParam3->clear();
|
||||
ui->lineEditRedundantSolverParam3->clear();
|
||||
ui->lineEditRedundantSolverParam1->setDisabled(true);
|
||||
ui->lineEditRedundantSolverParam2->setDisabled(true);
|
||||
ui->lineEditRedundantSolverParam3->setDisabled(true);
|
||||
@@ -194,11 +192,11 @@ void TaskSketcherSolverAdvanced::updateRedundantMethodParameters(void)
|
||||
ui->labelRedundantSolverParam3->setText(QString::fromLatin1("R.Tau"));
|
||||
ui->lineEditRedundantSolverParam1->setEnabled(true);
|
||||
ui->lineEditRedundantSolverParam2->setEnabled(true);
|
||||
ui->lineEditRedundantSolverParam3->setEnabled(true);
|
||||
ui->lineEditRedundantSolverParam3->setEnabled(true);
|
||||
double eps = ::atof(hGrp->GetASCII("Redundant_LM_eps",QString::number(LM_EPS).toUtf8()).c_str());
|
||||
double eps1 = ::atof(hGrp->GetASCII("Redundant_LM_eps1",QString::number(LM_EPS1).toUtf8()).c_str());
|
||||
double eps1 = ::atof(hGrp->GetASCII("Redundant_LM_eps1",QString::number(LM_EPS1).toUtf8()).c_str());
|
||||
double tau = ::atof(hGrp->GetASCII("Redundant_LM_tau",QString::number(LM_TAU).toUtf8()).c_str());
|
||||
ui->lineEditRedundantSolverParam1->setText(QString::number(eps).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
ui->lineEditRedundantSolverParam1->setText(QString::number(eps).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
ui->lineEditRedundantSolverParam2->setText(QString::number(eps1).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
ui->lineEditRedundantSolverParam3->setText(QString::number(tau).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
sketchView->getSketchObject()->getSolvedSketch().setLM_epsRedundant(eps);
|
||||
@@ -215,9 +213,9 @@ void TaskSketcherSolverAdvanced::updateRedundantMethodParameters(void)
|
||||
ui->lineEditRedundantSolverParam2->setEnabled(true);
|
||||
ui->lineEditRedundantSolverParam3->setEnabled(true);
|
||||
double tolg = ::atof(hGrp->GetASCII("Redundant_DL_tolg",QString::number(DL_TOLG).toUtf8()).c_str());
|
||||
double tolx = ::atof(hGrp->GetASCII("Redundant_DL_tolx",QString::number(DL_TOLX).toUtf8()).c_str());
|
||||
double tolx = ::atof(hGrp->GetASCII("Redundant_DL_tolx",QString::number(DL_TOLX).toUtf8()).c_str());
|
||||
double tolf = ::atof(hGrp->GetASCII("Redundant_DL_tolf",QString::number(DL_TOLF).toUtf8()).c_str());
|
||||
ui->lineEditRedundantSolverParam1->setText(QString::number(tolg).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
ui->lineEditRedundantSolverParam1->setText(QString::number(tolg).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
ui->lineEditRedundantSolverParam2->setText(QString::number(tolx).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
ui->lineEditRedundantSolverParam3->setText(QString::number(tolf).remove(QString::fromLatin1("+").replace(QString::fromLatin1("e0"),QString::fromLatin1("E")).toUpper()));
|
||||
sketchView->getSketchObject()->getSolvedSketch().setDL_tolgRedundant(tolg);
|
||||
@@ -517,23 +515,23 @@ void TaskSketcherSolverAdvanced::on_pushButtonDefaults_clicked(bool checked/* =
|
||||
{
|
||||
Q_UNUSED(checked);
|
||||
// Algorithm params for default solvers
|
||||
ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher/SolverAdvanced");
|
||||
ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher/SolverAdvanced");
|
||||
hGrp->SetASCII("LM_eps",QString::number(LM_EPS).toUtf8());
|
||||
hGrp->SetASCII("LM_eps1",QString::number(LM_EPS1).toUtf8());
|
||||
hGrp->SetASCII("LM_eps1",QString::number(LM_EPS1).toUtf8());
|
||||
hGrp->SetASCII("LM_tau",QString::number(LM_TAU).toUtf8());
|
||||
hGrp->SetASCII("DL_tolg",QString::number(DL_TOLG).toUtf8());
|
||||
hGrp->SetASCII("DL_tolx",QString::number(DL_TOLX).toUtf8());
|
||||
hGrp->SetASCII("DL_tolx",QString::number(DL_TOLX).toUtf8());
|
||||
hGrp->SetASCII("DL_tolf",QString::number(DL_TOLF).toUtf8());
|
||||
hGrp->SetASCII("Redundant_LM_eps",QString::number(LM_EPS).toUtf8());
|
||||
hGrp->SetASCII("Redundant_LM_eps1",QString::number(LM_EPS1).toUtf8());
|
||||
hGrp->SetASCII("Redundant_LM_tau",QString::number(LM_TAU).toUtf8());
|
||||
hGrp->SetASCII("Redundant_DL_tolg",QString::number(DL_TOLG).toUtf8());
|
||||
hGrp->SetASCII("Redundant_DL_tolx",QString::number(DL_TOLX).toUtf8());
|
||||
hGrp->SetASCII("Redundant_DL_tolf",QString::number(DL_TOLF).toUtf8());
|
||||
hGrp->SetASCII("Redundant_LM_eps1",QString::number(LM_EPS1).toUtf8());
|
||||
hGrp->SetASCII("Redundant_LM_tau",QString::number(LM_TAU).toUtf8());
|
||||
hGrp->SetASCII("Redundant_DL_tolg",QString::number(DL_TOLG).toUtf8());
|
||||
hGrp->SetASCII("Redundant_DL_tolx",QString::number(DL_TOLX).toUtf8());
|
||||
hGrp->SetASCII("Redundant_DL_tolf",QString::number(DL_TOLF).toUtf8());
|
||||
// Set other settings
|
||||
hGrp->SetInt("DefaultSolver",DEFAULT_SOLVER);
|
||||
hGrp->SetInt("DogLegGaussStep",DEFAULT_DOGLEG_GAUSS_STEP);
|
||||
|
||||
|
||||
hGrp->SetInt("RedundantDefaultSolver",DEFAULT_RSOLVER);
|
||||
hGrp->SetInt("MaxIter",MAX_ITER);
|
||||
hGrp->SetInt("RedundantSolverMaxIterations",MAX_ITER);
|
||||
|
||||
@@ -34,20 +34,19 @@
|
||||
# include <Inventor/nodes/SoMarkerSet.h>
|
||||
# include <Inventor/nodes/SoSeparator.h>
|
||||
# include <Inventor/nodes/SoShapeHints.h>
|
||||
# include <BRep_Tool.hxx>
|
||||
# include <gp_Pnt.hxx>
|
||||
# include <Precision.hxx>
|
||||
# include <TopTools_IndexedMapOfShape.hxx>
|
||||
# include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
|
||||
# include <TopExp.hxx>
|
||||
# include <TopExp_Explorer.hxx>
|
||||
# include <TopoDS.hxx>
|
||||
# include <TopoDS_Edge.hxx>
|
||||
# include <TopoDS_Vertex.hxx>
|
||||
# include <algorithm>
|
||||
#endif
|
||||
|
||||
#include <BRep_Tool.hxx>
|
||||
#include <gp_Pnt.hxx>
|
||||
#include <Precision.hxx>
|
||||
#include <TopTools_IndexedMapOfShape.hxx>
|
||||
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
|
||||
#include <TopExp.hxx>
|
||||
#include <TopExp_Explorer.hxx>
|
||||
#include <TopoDS.hxx>
|
||||
#include <TopoDS_Edge.hxx>
|
||||
#include <TopoDS_Vertex.hxx>
|
||||
#include <algorithm>
|
||||
|
||||
#include "ui_TaskSketcherValidation.h"
|
||||
#include "TaskSketcherValidation.h"
|
||||
#include <Mod/Sketcher/App/SketchObject.h>
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
# include <Inventor/nodes/SoFont.h>
|
||||
# include <Inventor/nodes/SoPickStyle.h>
|
||||
# include <Inventor/nodes/SoCamera.h>
|
||||
# include <Inventor/SbTime.h>
|
||||
# include <Gui/Inventor/SmSwitchboard.h>
|
||||
|
||||
/// Qt Include Files
|
||||
@@ -70,14 +71,14 @@
|
||||
# include <QPainter>
|
||||
# include <QTextStream>
|
||||
# include <QKeyEvent>
|
||||
#endif
|
||||
|
||||
#ifndef _PreComp_
|
||||
# include <boost/bind.hpp>
|
||||
# include <boost/scoped_ptr.hpp>
|
||||
#endif
|
||||
|
||||
#include <Inventor/SbTime.h>
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
|
||||
|
||||
|
||||
/// Here the FreeCAD includes sorted by Base,App,Gui......
|
||||
#include <Base/Tools.h>
|
||||
|
||||
@@ -80,11 +80,11 @@ Gui::MenuItem* Workbench::setupMenuBar() const
|
||||
Gui::MenuItem* consaccel = new Gui::MenuItem();
|
||||
consaccel->setCommand("Sketcher tools");
|
||||
addSketcherWorkbenchTools(*consaccel);
|
||||
|
||||
|
||||
Gui::MenuItem* bsplines = new Gui::MenuItem();
|
||||
bsplines->setCommand("Sketcher B-spline tools");
|
||||
addSketcherWorkbenchBSplines(*bsplines);
|
||||
|
||||
|
||||
Gui::MenuItem* virtualspace = new Gui::MenuItem();
|
||||
virtualspace->setCommand("Sketcher virtual space");
|
||||
addSketcherWorkbenchVirtualSpace(*virtualspace);
|
||||
@@ -118,11 +118,11 @@ Gui::ToolBarItem* Workbench::setupToolBars() const
|
||||
Gui::ToolBarItem* consaccel = new Gui::ToolBarItem(root);
|
||||
consaccel->setCommand("Sketcher tools");
|
||||
addSketcherWorkbenchTools( *consaccel );
|
||||
|
||||
|
||||
Gui::ToolBarItem* bspline = new Gui::ToolBarItem(root);
|
||||
bspline->setCommand("Sketcher B-spline tools");
|
||||
addSketcherWorkbenchBSplines( *bspline );
|
||||
|
||||
|
||||
Gui::ToolBarItem* virtualspace = new Gui::ToolBarItem(root);
|
||||
virtualspace->setCommand("Sketcher virtual space");
|
||||
addSketcherWorkbenchVirtualSpace( *virtualspace );
|
||||
|
||||
Reference in New Issue
Block a user