-// Copyright (C) 2014-2020 CEA/DEN, EDF R&D
+// Copyright (C) 2014-2023 CEA, EDF
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include <gp_Pnt.hxx>
#include <gp_Dir.hxx>
#include <AIS_Shape.hxx>
-#include <AIS_DimensionSelectionMode.hxx>
#include <Bnd_Box.hxx>
#include <Config_WidgetAPI.h>
#include <QDialog>
#include <QTimer>
+#ifdef WIN32
+#pragma warning(disable : 4456) // for nested foreach
+#endif
+
#ifndef DBL_MAX
#define DBL_MAX 1.7976931348623158e+308
#endif
myViewInverted = new QCheckBox(tr("Reversed"), aViewBox);
aViewLayout->addWidget(myViewInverted, 0, 0);
+ // Sketch plane visibility
myViewVisible = new QCheckBox(tr("Visible"), aViewBox);
- myViewVisible->setChecked(true);
+ PartSet_Module* aModule = dynamic_cast<PartSet_Module*>(myWorkshop->module());
+ PartSet_PreviewSketchPlane* aPreviewPlane = aModule->sketchMgr()->previewSketchPlane();
+ if (aPreviewPlane->isPlaneCreated())
+ // init with current state
+ myViewVisible->setChecked(aPreviewPlane->isDisplayed());
+ else
+ // true by default (at start of sketch creation)
+ myViewVisible->setChecked(true);
+
aViewLayout->addWidget(myViewVisible, 0, 1, Qt::AlignRight);
connect(myViewVisible, SIGNAL(toggled(bool)), this, SLOT(onShowViewPlane(bool)));
aModule->sketchMgr()->previewSketchPlane()->setSizeOfView(aSizeOfView, isSetSizeOfView);
if (myViewVisible->isChecked())
aModule->sketchMgr()->previewSketchPlane()->createSketchPlane(aSketch, myWorkshop);
+ else
+ aModule->sketchMgr()->previewSketchPlane()->clearPlanePreview();
}
// 2. if the planes were displayed, change the view projection
void PartSet_WidgetSketchLabel::onShowViewPlane(bool toShow)
{
PartSet_Module* aModule = dynamic_cast<PartSet_Module*>(myWorkshop->module());
+ PartSet_PreviewSketchPlane* aPreviewPlane = aModule->sketchMgr()->previewSketchPlane();
if (toShow) {
CompositeFeaturePtr aSketch = std::dynamic_pointer_cast<ModelAPI_CompositeFeature>(myFeature);
- aModule->sketchMgr()->previewSketchPlane()->createSketchPlane(aSketch, myWorkshop);
+ if (aPreviewPlane->isPlaneCreated())
+ aPreviewPlane->displaySketchPlane(myWorkshop);
+ else
+ aPreviewPlane->createSketchPlane(aSketch, myWorkshop);
}
else {
- aModule->sketchMgr()->previewSketchPlane()->eraseSketchPlane(myWorkshop, false);
+ aPreviewPlane->eraseSketchPlane(myWorkshop, false);
}
myWorkshop->viewer()->update();
}