#include "PartSet_SketcherMgr.h"
#include "PartSet_Tools.h"
+#include <PartSetPlugin_Part.h>
+
#include <GeomAPI_Pnt2d.h>
#include <GeomDataAPI_Point2D.h>
bool hasAttribute = false;
bool hasFeature = false;
- QList<ModuleBase_ViewerPrs> aPrsList = aSelection->getSelected();
+ QList<ModuleBase_ViewerPrs> aPrsList = aSelection->getSelected(ModuleBase_ISelection::AllControls);
TopoDS_Shape aShape;
ResultPtr aResult;
FeaturePtr aFeature;
{
QObjectPtrList aObjects = myModule->workshop()->selection()->selectedObjects();
if (aObjects.size() > 0) {
- ResultPartPtr aPart = std::dynamic_pointer_cast<ModelAPI_ResultPart>(aObjects.first());
- if (aPart) {
- aPart->activate();
+ ObjectPtr aObj = aObjects.first();
+ ResultPartPtr aPart = std::dynamic_pointer_cast<ModelAPI_ResultPart>(aObj);
+ if (!aPart.get()) {
+ FeaturePtr aPartFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(aObj);
+ if (aPartFeature.get() && (aPartFeature->getKind() == PartSetPlugin_Part::ID())) {
+ aPart = std::dynamic_pointer_cast<ModelAPI_ResultPart>(aPartFeature->firstResult());
+ }
}
+ if (aPart.get())
+ aPart->activate();
}
}
void PartSet_MenuMgr::onActivatePartSet(bool)
{
SessionPtr aMgr = ModelAPI_Session::get();
+ bool isNewTransaction = !aMgr->isOperation();
+ // activation may cause changes in current features in document, so it must be in transaction
+ if (isNewTransaction) {
+ aMgr->startOperation("Activation");
+ }
aMgr->setActiveDocument(aMgr->moduleDocument());
+ if (isNewTransaction) {
+ aMgr->finishOperation();
+ }
}
void PartSet_MenuMgr::onEdit(bool)