From c1f71fb702301ee1709a0469c67192ee6291124b Mon Sep 17 00:00:00 2001 From: nds Date: Fri, 25 Mar 2016 19:37:40 +0300 Subject: [PATCH] #1371 Using auxilliary Sketch elements in any Feature --- src/PartSet/PartSet_ResultSketchPrs.cpp | 54 +++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/src/PartSet/PartSet_ResultSketchPrs.cpp b/src/PartSet/PartSet_ResultSketchPrs.cpp index 956e60cd9..c43fa452c 100755 --- a/src/PartSet/PartSet_ResultSketchPrs.cpp +++ b/src/PartSet/PartSet_ResultSketchPrs.cpp @@ -76,12 +76,47 @@ void PartSet_ResultSketchPrs::Compute(const Handle(PrsMgr_PresentationManager3d) const Handle(Prs3d_Presentation)& thePresentation, const Standard_Integer theMode) { + thePresentation->Clear(); + std::shared_ptr aShapePtr = ModelAPI_Tools::shape(myResult); if (!aShapePtr) { Events_Error::throwException("An empty AIS presentation: PartSet_ResultSketchPrs"); return; } + { + std::vector aColor; + aColor = Config_PropManager::color("Visualization", "result_body_color", + SKETCH_AUXILIARY_COLOR); + Standard_Real anAuxiliaryWidth = 3.; + Standard_Integer anAuxiliaryLineStyle = 0; + + SetColor(Quantity_Color(aColor[0] / 255., aColor[1] / 255., aColor[2] / 255., Quantity_TOC_RGB)); + + //thePresentation->Clear(); + Handle(Prs3d_Drawer) aDrawer = Attributes(); + setWidth(aDrawer, anAuxiliaryWidth); + // set line style + Handle(Prs3d_LineAspect) aLineAspect; + + Aspect_TypeOfLine aType = (Aspect_TypeOfLine)anAuxiliaryLineStyle; + if (aDrawer->HasOwnLineAspect()) { + aLineAspect = aDrawer->LineAspect(); + } + if (aDrawer->HasOwnWireAspect()) { + aLineAspect = aDrawer->WireAspect(); + } + Quantity_Color aCurrentColor; + Aspect_TypeOfLine aPrevLineType; + Standard_Real aCurrentWidth; + aLineAspect->Aspect()->Values(aCurrentColor, aPrevLineType, aCurrentWidth); + bool isChangedLineType = aType != aPrevLineType; + if (isChangedLineType) { + aLineAspect->SetTypeOfLine(aType); + } + // end of set line style + } + myFacesList.clear(); ResultConstructionPtr aConstruction = std::dynamic_pointer_cast(myResult); @@ -122,6 +157,10 @@ void PartSet_ResultSketchPrs::Compute(const Handle(PrsMgr_PresentationManager3d) } } if (anAuxiliaryResults.size() > 0) { + Quantity_Color aPrevColor; + Color(aPrevColor); + Standard_Real aPrevWidth = Width(); + std::vector aColor; aColor = Config_PropManager::color("Visualization", "sketch_auxiliary_color", SKETCH_AUXILIARY_COLOR); @@ -144,11 +183,11 @@ void PartSet_ResultSketchPrs::Compute(const Handle(PrsMgr_PresentationManager3d) aLineAspect = aDrawer->WireAspect(); } Quantity_Color aCurrentColor; - Aspect_TypeOfLine aCurrentType; + Aspect_TypeOfLine aPrevLineType; Standard_Real aCurrentWidth; - aLineAspect->Aspect()->Values(aCurrentColor, aCurrentType, aCurrentWidth); - bool isChanged = aType != aCurrentType; - if (isChanged) { + aLineAspect->Aspect()->Values(aCurrentColor, aPrevLineType, aCurrentWidth); + bool isChangedLineType = aType != aPrevLineType; + if (isChangedLineType) { aLineAspect->SetTypeOfLine(aType); } // end of set line style @@ -172,6 +211,13 @@ void PartSet_ResultSketchPrs::Compute(const Handle(PrsMgr_PresentationManager3d) } myAuxiliaryCompound = aComp; StdPrs_WFDeflectionShape::Add(thePresentation, aComp, aDrawer); + + // restore presentation properties + //SetColor(aPrevColor); + //setWidth(aDrawer, aPrevWidth); + //if (isChangedLineType) { + // aLineAspect->SetTypeOfLine(aPrevLineType); + //} } } -- 2.39.2