-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
-
-// File: PartSet_ResultSketchPrs.h
-// Created: 25 March 2015
-// Author: Natalia ERMOLAEVA
+// Copyright (C) 2014-2017 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
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// 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
+//
+// See http://www.salome-platform.org/ or
+// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+//
#include "PartSet_ResultSketchPrs.h"
#include "PartSet_Tools.h"
#include <ModelAPI_Events.h>
#include <ModelAPI_Tools.h>
#include <ModelAPI_ResultConstruction.h>
+#include <ModelAPI_ResultCompSolid.h>
#include <GeomAPI_PlanarEdges.h>
#include <Events_InfoMessage.h>
#include <Prs3d_PointAspect.hxx>
#include <TopoDS_Builder.hxx>
#include <SelectMgr_SelectionManager.hxx>
-#include <StdPrs_WFDeflectionShape.hxx>
+#include <StdPrs_WFShape.hxx>
#include <StdSelect_BRepSelectionTool.hxx>
#include <Graphic3d_AspectLine3d.hxx>
#include <Prs3d_LineAspect.hxx>
//*******************************************************************************************
-IMPLEMENT_STANDARD_HANDLE(PartSet_ResultSketchPrs, ViewerData_AISShape);
IMPLEMENT_STANDARD_RTTIEXT(PartSet_ResultSketchPrs, ViewerData_AISShape);
PartSet_ResultSketchPrs::PartSet_ResultSketchPrs(ResultPtr theResult)
TopoDS_Shape aShape = aShapePtr->impl<TopoDS_Shape>();
Set(aShape);
Handle(Prs3d_Drawer) aDrawer = Attributes();
- if (aDrawer->HasOwnPointAspect())
+ if (aDrawer->HasOwnPointAspect())
aDrawer->PointAspect()->SetTypeOfMarker(Aspect_TOM_PLUS);
else
aDrawer->SetPointAspect(new Prs3d_PointAspect(Aspect_TOM_PLUS, Quantity_NOC_YELLOW, 1.));
ModuleBase_Tools::setPointBallHighlighting(this);
}
-void PartSet_ResultSketchPrs::Compute(const Handle(PrsMgr_PresentationManager3d)& thePresentationManager,
- const Handle(Prs3d_Presentation)& thePresentation,
- const Standard_Integer theMode)
+void PartSet_ResultSketchPrs::Compute(
+ const Handle(PrsMgr_PresentationManager3d)& thePresentationManager,
+ const Handle(Prs3d_Presentation)& thePresentation,
+ const Standard_Integer theMode)
{
thePresentation->Clear();
setAuxiliaryPresentationStyle(false);
// change deviation coefficient to provide more precise circle
- ModuleBase_Tools::setDefaultDeviationCoefficient(myResult, Attributes());
+ //ModuleBase_Tools::setDefaultDeviationCoefficient(myResult, Attributes());
AIS_Shape::Compute(thePresentationManager, thePresentation, theMode);
if (!myAuxiliaryCompound.IsNull()) {
setAuxiliaryPresentationStyle(true);
Handle(Prs3d_Drawer) aDrawer = Attributes();
- StdPrs_WFDeflectionShape::Add(thePresentation, myAuxiliaryCompound, aDrawer);
+ StdPrs_WFShape::Add(thePresentation, myAuxiliaryCompound, aDrawer);
}
if (!aReadyToDisplay) {
- Events_InfoMessage("PartSet_ResultSketchPrs", "An empty AIS presentation: PartSet_ResultSketchPrs").send();
+ Events_InfoMessage("PartSet_ResultSketchPrs",
+ "An empty AIS presentation: PartSet_ResultSketchPrs").send();
static const Events_ID anEvent = Events_Loop::eventByName(EVENT_EMPTY_AIS_PRESENTATION);
ModelAPI_EventCreator::get()->sendUpdated(myResult, anEvent);
}
TopTools_IndexedMapOfShape aSubShapes;
TopExp::MapShapes (theShape, theType, aSubShapes);
- Standard_Boolean isComesFromDecomposition = !((aSubShapes.Extent() == 1) && (theShape == aSubShapes (1)));
+ Standard_Boolean
+ isComesFromDecomposition = !((aSubShapes.Extent() == 1) && (theShape == aSubShapes (1)));
int anExtent = aSubShapes.Extent();
for (Standard_Integer aShIndex = 1; aShIndex <= aSubShapes.Extent(); ++aShIndex)
{
return;
bool aShapeIsChanged = false;
+ double aPrevDeviation = Attributes()->DeviationCoefficient();
if (aMode == SketcherPrs_Tools::Sel_Sketch_Face ||
aMode == SketcherPrs_Tools::Sel_Sketch_Wire) {
aMode = (aMode == SketcherPrs_Tools::Sel_Sketch_Face) ? AIS_Shape::SelectionMode(TopAbs_FACE)
TopoDS_Compound aComp;
aBuilder.MakeCompound(aComp);
aBuilder.Add(aComp, myOriginalShape);
-
+
for(NCollection_List<TopoDS_Shape>::Iterator anIt(mySketchFaceList); anIt.More(); anIt.Next()) {
const TopoDS_Shape& aFace = anIt.Value();
aBuilder.Add(aComp, aFace);
debugInfo(aComp, TopAbs_FACE); // 2
#endif
Set(aComp);
+ double aBodyDefDeflection = Config_PropManager::real("Visualization", "body_deflection");
+ Attributes()->SetDeviationCoefficient(aBodyDefDeflection);
aShapeIsChanged = true;
}
else
AIS_Shape::ComputeSelection(aSelection, aMode);
- if (aShapeIsChanged)
+ if (aShapeIsChanged) {
+ Attributes()->SetDeviationCoefficient(aPrevDeviation);
Set(myOriginalShape);
+ }
}
void PartSet_ResultSketchPrs::appendShapeSelection(const Handle(SelectMgr_Selection)& theSelection,
void PartSet_ResultSketchPrs::setAuxiliaryPresentationStyle(const bool isAuxiliary)
{
- std::vector<int> aColor;
- Standard_Real aWidth;
- Standard_Integer aLineStyle;
-
- if (!isAuxiliary) {
- aColor = Config_PropManager::color("Visualization", "result_construction_color",
- ModelAPI_ResultConstruction::DEFAULT_COLOR());
- aWidth = PartSet_Tools::getAISDefaultWidth();// default width value
- aLineStyle = SketchPlugin_SketchEntity::SKETCH_LINE_STYLE();
- }
- else {
- aColor = Config_PropManager::color("Visualization", "result_construction_color",
- ModelAPI_ResultConstruction::DEFAULT_COLOR());
- aWidth = PartSet_Tools::getAISDefaultWidth();// default width value
- aLineStyle = SketchPlugin_SketchEntity::SKETCH_LINE_STYLE_AUXILIARY();
- }
+ Standard_Integer aLineStyle = isAuxiliary?
+ SketchPlugin_SketchEntity::SKETCH_LINE_STYLE_AUXILIARY() :
+ SketchPlugin_SketchEntity::SKETCH_LINE_STYLE();
Handle(Prs3d_Drawer) aDrawer = Attributes();
- setColor(aDrawer, Quantity_Color(aColor[0] / 255., aColor[1] / 255., aColor[2] / 255.,
- Quantity_TOC_RGB));
- setWidth(aDrawer, aWidth);
// set line style
Handle(Prs3d_LineAspect) aLineAspect;
if (aDrawer->HasOwnWireAspect()) {
aLineAspect = aDrawer->WireAspect();
}
- Quantity_Color aCurrentColor;
- Aspect_TypeOfLine aPrevLineType;
- Standard_Real aCurrentWidth;
- aLineAspect->Aspect()->Values(aCurrentColor, aPrevLineType, aCurrentWidth);
+ Quantity_Color aCurrentColor = aLineAspect->Aspect()->Color();
+ Aspect_TypeOfLine aPrevLineType = aLineAspect->Aspect()->Type();
+ Standard_Real aCurrentWidth = aLineAspect->Aspect()->Width();
bool isChangedLineType = aType != aPrevLineType;
if (isChangedLineType) {
- aLineAspect->SetTypeOfLine(aType);
+ Handle(Prs3d_LineAspect) aAspect = new Prs3d_LineAspect(aCurrentColor, aType, aCurrentWidth);
+ aDrawer->SetLineAspect(aAspect);
+ aDrawer->SetWireAspect(aAspect);
+ SetAttributes(aDrawer);
}
}
return;
theFaceList.Clear();
- ResultConstructionPtr aConstruction =
+ ResultConstructionPtr aConstruction =
std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(myResult);
if (aConstruction.get()) {
int aFacesNum = aConstruction->facesNum();