X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_OperationPrs.cpp;h=58b5a53f50a2d1d93972b8bb9adc0cc63b19a013;hb=d9aad73be5a44ff8e42162a30a0d9045df7f3837;hp=d82056999f572f2dea2887eef049b1fad3b3ba78;hpb=32442a4f43da44e368f092d64e4004e020c5bfba;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_OperationPrs.cpp b/src/PartSet/PartSet_OperationPrs.cpp index d82056999..58b5a53f5 100755 --- a/src/PartSet/PartSet_OperationPrs.cpp +++ b/src/PartSet/PartSet_OperationPrs.cpp @@ -12,6 +12,7 @@ #include "XGUI_Displayer.h" #include "ModuleBase_Tools.h" +#include "ModuleBase_IModule.h" #include #include @@ -22,6 +23,7 @@ #include #include #include +#include #include @@ -37,6 +39,8 @@ IMPLEMENT_STANDARD_RTTIEXT(PartSet_OperationPrs, ViewerData_AISShape); PartSet_OperationPrs::PartSet_OperationPrs(ModuleBase_IWorkshop* theWorkshop) : ViewerData_AISShape(TopoDS_Shape()), myFeature(FeaturePtr()), myWorkshop(theWorkshop) { + myShapeColor = ModuleBase_Tools::color("Visualization", "construction_plane_color", "1,1,0"); + myResultColor = ModuleBase_Tools::color("Visualization", "construction_plane_color", "0,1,0"); } bool PartSet_OperationPrs::canActivate(const FeaturePtr& theFeature) @@ -72,10 +76,22 @@ void PartSet_OperationPrs::updateShapes() myFeatureResults = myFeature->results(); } +bool PartSet_OperationPrs::hasShapes() +{ + return !myFeatureShapes.empty() || !myFeatureResults.empty(); +} + void PartSet_OperationPrs::Compute(const Handle(PrsMgr_PresentationManager3d)& thePresentationManager, const Handle(Prs3d_Presentation)& thePresentation, const Standard_Integer theMode) { + if (!hasShapes()) + return; + // when the feature can not be visualized in the module, the operation preview should not + // be visualized also + if (!myWorkshop->module()->canDisplayObject(myFeature)) + return; + Quantity_Color aColor(1., 1., 0., Quantity_TOC_RGB); // yellow SetColor(aColor); @@ -163,6 +179,22 @@ void addValue(const ObjectPtr& theObject, const GeomShapePtr& theShape, QMap >& theObjectShapes) { if (theObject.get()) { + ResultPtr aResult = std::dynamic_pointer_cast(theObject); + if (aResult.get()) { + ResultCompSolidPtr aCompsolidResult = std::dynamic_pointer_cast(theObject); + if (aCompsolidResult.get()) { + for(int i = 0; i < aCompsolidResult->numberOfSubs(); i++) { + ResultPtr aSubResult = aCompsolidResult->subResult(i); + if (aSubResult.get()) { + GeomShapePtr aShape; + addValue(aSubResult, aShape, theFeature, theObjectShapes); + } + } + return; + } + } + + GeomShapePtr aShape = theShape; if (!aShape.get()) { ResultPtr aResult = std::dynamic_pointer_cast(theObject);