X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMGUI%2FGEOM_Displayer.cxx;h=82853c712ff04441591de18bf7fd9352b4790a13;hb=32e56a241f21859130edcfcc7a9d9c452c8d00d4;hp=83a3c083b07a22022c3161fa0cc9e0c859daec6a;hpb=0b6826bc5f36b5420f41af1475e1a79371a25323;p=modules%2Fgeom.git diff --git a/src/GEOMGUI/GEOM_Displayer.cxx b/src/GEOMGUI/GEOM_Displayer.cxx index 83a3c083b..82853c712 100644 --- a/src/GEOMGUI/GEOM_Displayer.cxx +++ b/src/GEOMGUI/GEOM_Displayer.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -19,6 +19,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // + // GEOM GEOMGUI : GUI for Geometry component // File : GEOM_Displayer.cxx // Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com) @@ -91,7 +92,6 @@ #include #include -using namespace std; //================================================================ // Function : getActiveStudy @@ -190,7 +190,7 @@ SUIT_SelectionFilter* GEOM_Displayer::getComplexFilter( const QList* aSubSh // Function : getEntry // Purpose : //================================================================ -static string getEntry( GEOM::GEOM_Object_ptr object ) +static std::string getEntry( GEOM::GEOM_Object_ptr object ) { SUIT_Session* session = SUIT_Session::session(); SalomeApp_Application* app = dynamic_cast( session->activeApplication() ); @@ -200,7 +200,7 @@ static string getEntry( GEOM::GEOM_Object_ptr object ) if ( strcmp(IOR.in(), "") != 0 ) { SalomeApp_Study* study = ( SalomeApp_Study* )app->activeStudy(); - _PTR(SObject) SO ( study->studyDS()->FindObjectIOR( string(IOR) ) ); + _PTR(SObject) SO ( study->studyDS()->FindObjectIOR( std::string(IOR) ) ); if ( SO ) return SO->GetID(); } @@ -212,7 +212,7 @@ static string getEntry( GEOM::GEOM_Object_ptr object ) // Function : getName // Purpose : //================================================================ -static string getName( GEOM::GEOM_Object_ptr object ) +static std::string getName( GEOM::GEOM_Object_ptr object ) { SUIT_Session* session = SUIT_Session::session(); SalomeApp_Application* app = dynamic_cast( session->activeApplication() ); @@ -222,7 +222,7 @@ static string getName( GEOM::GEOM_Object_ptr object ) if ( strcmp(IOR.in(), "") != 0 ) { SalomeApp_Study* study = ( SalomeApp_Study* )app->activeStudy(); - _PTR(SObject) aSObj ( study->studyDS()->FindObjectIOR( string(IOR) ) ); + _PTR(SObject) aSObj ( study->studyDS()->FindObjectIOR( std::string(IOR) ) ); _PTR(GenericAttribute) anAttr; @@ -327,7 +327,7 @@ void GEOM_Displayer::Display( GEOM::GEOM_Object_ptr theObj, const bool updateVie if ( theObj->_is_nil() ) return; - string entry = getEntry( theObj ); + std::string entry = getEntry( theObj ); if ( entry != "" ) { Display(new SALOME_InteractiveObject(entry.c_str(), "GEOM", getName(theObj).c_str()), updateViewer); @@ -371,7 +371,7 @@ void GEOM_Displayer::Erase( GEOM::GEOM_Object_ptr theObj, const bool forced, const bool updateViewer ) { - string entry = getEntry( theObj ); + std::string entry = getEntry( theObj ); if ( entry != "" ) { Erase(new SALOME_InteractiveObject(entry.c_str(), "GEOM", getName(theObj).c_str()), @@ -550,7 +550,7 @@ void GEOM_Displayer::Update( SALOME_OCCPrs* prs ) AISShape = new GEOM_AISShape (myShape, ""); } // Temporary staff: vertex must be infinite for correct visualization - AISShape->SetInfiniteState( myShape.Infinite() || myShape.ShapeType() == TopAbs_VERTEX ); + AISShape->SetInfiniteState( myShape.Infinite() ); // || myShape.ShapeType() == TopAbs_VERTEX // VSR: 05/04/2010: Fix 20668 (Fit All for points & lines) // Setup shape properties here ..., e.g. display mode, color, transparency, etc AISShape->SetDisplayMode( myDisplayMode ); @@ -577,14 +577,14 @@ void GEOM_Displayer::Update( SALOME_OCCPrs* prs ) if ( HasColor() ) { AISShape->SetColor( (Quantity_NameOfColor)GetColor() ); + Handle(Prs3d_PointAspect) anAspect = AISShape->Attributes()->PointAspect(); + anAspect->SetColor( (Quantity_NameOfColor)GetColor() ); if ( myShape.ShapeType() == TopAbs_VERTEX ) { - Handle(Prs3d_PointAspect) anAspect = AISShape->Attributes()->PointAspect(); - anAspect->SetColor( (Quantity_NameOfColor)GetColor() ); anAspect->SetScale( myScaleOfMarker ); anAspect->SetTypeOfMarker( myTypeOfMarker ); - AISShape->Attributes()->SetPointAspect( anAspect ); } + AISShape->Attributes()->SetPointAspect( anAspect ); } else { @@ -632,7 +632,12 @@ void GEOM_Displayer::Update( SALOME_OCCPrs* prs ) // bug [SALOME platform 0019868] // Set deviation angle. Default one is 12 degrees (Prs3d_Drawer.cxx:18) - AISShape->SetOwnDeviationAngle( 10*PI/180 ); + //AISShape->SetOwnDeviationAngle( 10*PI/180 ); + + // IMP 0020626 + double aDC = aResMgr->doubleValue("Geometry", "deflection_coeff", 0.001); + aDC = std::max( aDC, DEFLECTION_MIN ); // to avoid to small values of the coefficient + AISShape->SetOwnDeviationCoefficient(aDC); } } @@ -694,7 +699,7 @@ void GEOM_Displayer::Update( SALOME_OCCPrs* prs ) if ( strcmp(IOR.in(), "") != 0 ) { _PTR(Study) aStudy = study->studyDS(); - _PTR(SObject) aMainSObject( aStudy->FindObjectIOR( string(IOR) ) ); + _PTR(SObject) aMainSObject( aStudy->FindObjectIOR( std::string(IOR) ) ); _PTR(ChildIterator) it( aStudy->NewChildIterator( aMainSObject ) ); for( ; it->More(); it->Next() ) { @@ -1421,12 +1426,12 @@ SALOMEDS::Color GEOM_Displayer::getUniqueColor( const QList& th if( aTolerance < 1 ) break; } - //cout << "Iteration N" << anIterations << " (tolerance=" << aTolerance << ")"<< endl; + //std::cout << "Iteration N" << anIterations << " (tolerance=" << aTolerance << ")"<< std::endl; aHue = (int)( 360.0 * rand() / RAND_MAX ); - //cout << "Hue = " << aHue << endl; + //std::cout << "Hue = " << aHue << std::endl; - //cout << "Auto colors : "; + //std::cout << "Auto colors : "; bool ok = true; QList::const_iterator it = theReservedColors.constBegin(); QList::const_iterator itEnd = theReservedColors.constEnd(); @@ -1437,21 +1442,21 @@ SALOMEDS::Color GEOM_Displayer::getUniqueColor( const QList& th int h, s, v; aQColor.getHsv( &h, &s, &v ); - //cout << h << " "; + //std::cout << h << " "; if( abs( h - aHue ) < aTolerance ) { ok = false; - //cout << "break (diff = " << abs( h - aHue ) << ")"; + //std::cout << "break (diff = " << abs( h - aHue ) << ")"; break; } } - //cout << endl; + //std::cout << std::endl; if( ok ) break; } - //cout << "Hue of the returned color = " << aHue << endl; + //std::cout << "Hue of the returned color = " << aHue << std::endl; QColor aColor; aColor.setHsv( aHue, 255, 255 );