X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_OperationPrs.cpp;h=5c2d2ae1135a92aa30c527495910ad23f6c88fa0;hb=ccebb4b23e0354829c9636110b903c59923d8e30;hp=720a0ea9c763a169456ffc8677395a8e3a22c595;hpb=a94fc319f2aa64b43c9a73b5ff7063923648faec;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_OperationPrs.cpp b/src/PartSet/PartSet_OperationPrs.cpp old mode 100755 new mode 100644 index 720a0ea9c..5c2d2ae11 --- a/src/PartSet/PartSet_OperationPrs.cpp +++ b/src/PartSet/PartSet_OperationPrs.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2019 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -12,10 +12,9 @@ // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or -// email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "PartSet_OperationPrs.h" @@ -42,7 +41,7 @@ #include #include #include -#include +#include #include #include @@ -59,6 +58,7 @@ #include #include #include +#include //#define DEBUG_EMPTY_SHAPE //#define DEBUG_OPERATION_PRS @@ -85,6 +85,13 @@ PartSet_OperationPrs::PartSet_OperationPrs(ModuleBase_IWorkshop* theWorkshop) BRepBuilderAPI_MakeVertex aMaker(aPnt); TopoDS_Vertex aVertex = aMaker.Vertex(); myShapeToPrsMap.Bind(aVertex, NULL); + + Handle(Prs3d_Drawer) aDrawer = Attributes(); + Handle(Prs3d_IsoAspect) aUIsoAspect = new Prs3d_IsoAspect(myShapeColor, Aspect_TOL_SOLID, 1, 0); + Handle(Prs3d_IsoAspect) aVIsoAspect = new Prs3d_IsoAspect(myShapeColor, Aspect_TOL_SOLID, 1, 0); + aDrawer->SetUIsoAspect(aUIsoAspect); + aDrawer->SetVIsoAspect(aVIsoAspect); + aDrawer->SetIsoOnPlane(false); } bool PartSet_OperationPrs::hasShapes() @@ -128,6 +135,9 @@ void PartSet_OperationPrs::Compute( // change deviation coefficient to provide more precise circle // as there is no result, the shape is processed to correct deviation. To be unified ModuleBase_Tools::setDefaultDeviationCoefficient(aShape, aDrawer); + Handle(Prs3d_Drawer) aHighlightDrawer = DynamicHilightAttributes(); + if (!aHighlightDrawer.IsNull()) + ModuleBase_Tools::setDefaultDeviationCoefficient(aShape, aHighlightDrawer); if (myUseAISWidth) { Handle(AIS_InteractiveObject) anIO = anIter.Value(); @@ -141,7 +151,12 @@ void PartSet_OperationPrs::Compute( setWidth(aDrawer, aWidth); } } - StdPrs_WFShape::Add(thePresentation, aShape, aDrawer); + try { + StdPrs_WFShape::Add(thePresentation, aShape, aDrawer); + } + catch (...) { + return; + } } Set(aComp); if (!aReadyToDisplay) { @@ -184,12 +199,12 @@ void PartSet_OperationPrs::addValue(const ObjectPtr& theObject, const GeomShapeP if (theObject.get()) { ResultPtr aResult = std::dynamic_pointer_cast(theObject); if (aResult.get()) { - ResultCompSolidPtr aCompsolidResult = - std::dynamic_pointer_cast(theObject); - if (aCompsolidResult.get()) { - if (aCompsolidResult->numberOfSubs() > 0) { - for(int i = 0; i < aCompsolidResult->numberOfSubs(); i++) { - ResultPtr aSubResult = aCompsolidResult->subResult(i); + ResultBodyPtr aBodyResult = + std::dynamic_pointer_cast(theObject); + if (aBodyResult.get()) { + if (aBodyResult->numberOfSubs() > 0) { + for(int i = 0; i < aBodyResult->numberOfSubs(); i++) { + ResultPtr aSubResult = aBodyResult->subResult(i); if (aSubResult.get()) { GeomShapePtr aShape; addValue(aSubResult, aShape, theFeature, theWorkshop, theObjectShapes); @@ -231,7 +246,8 @@ void PartSet_OperationPrs::appendShapeIfVisible(ModuleBase_IWorkshop* theWorksho QMap >& theObjectShapes) { XGUI_Displayer* aDisplayer = XGUI_Tools::workshop(theWorkshop)->displayer(); - if (XGUI_Displayer::isVisible(aDisplayer, theObject)) { + // VSV: Do not use isVisible checking because it can be used when state "Show Only" is ON + //if (XGUI_Displayer::isVisible(aDisplayer, theObject)) { if (theGeomShape.get()) { if (theObjectShapes.contains(theObject)) theObjectShapes[theObject].append(theGeomShape); @@ -246,7 +262,7 @@ void PartSet_OperationPrs::appendShapeIfVisible(ModuleBase_IWorkshop* theWorksho .arg(ModuleBase_Tools::objectInfo(theObject)).toStdString().c_str()); #endif } - } + //} } void PartSet_OperationPrs::getFeatureShapes(const FeaturePtr& theFeature,