X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSVTK%2FSALOME_Actor.cxx;h=b0741a5f20ee08992cc75744ac177b276c47a031;hb=e6caa123c65e3c4a3017364ec5bb4225fd898465;hp=6a229199621a2194e0accd14d9d935c029fb2e64;hpb=8d973f87a441c75acab8b1cf0d3f54434735008e;p=modules%2Fgui.git diff --git a/src/SVTK/SALOME_Actor.cxx b/src/SVTK/SALOME_Actor.cxx index 6a2291996..b0741a5f2 100644 --- a/src/SVTK/SALOME_Actor.cxx +++ b/src/SVTK/SALOME_Actor.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 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 @@ -6,7 +6,7 @@ // 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. +// 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 @@ -500,7 +500,7 @@ SALOME_Actor SVTK_SelectionEvent* theSelectionEvent, bool theIsHighlight) { - if ( !GetPickable() || !mySelector->IsPreSelectionEnabled() ) + if ( !GetPickable() || !mySelector || !mySelector->IsPreSelectionEnabled() ) return false; vtkRenderer *aRenderer = theInteractorStyle->GetCurrentRenderer(); @@ -924,7 +924,7 @@ SALOME_Actor */ void SALOME_Actor -::SetNameActorOffset(int theOffset[2]) +::SetNameActorOffset(double theOffset[2]) { myNameActor->SetOffset(theOffset); } @@ -936,7 +936,7 @@ SALOME_Actor */ void SALOME_Actor -::GetNameActorSize(vtkRenderer* theRenderer, int theSize[2]) const +::GetNameActorSize(vtkRenderer* theRenderer, double theSize[2]) const { myNameActor->GetSize(theRenderer, theSize); } @@ -950,7 +950,7 @@ SALOME_Actor { if( vtkRenderer* aRenderer = GetRenderer() ) { - int anOffset[2] = { 0, 0 }; + double anOffset[2] = { 0, 0 }; VTK::ActorCollectionCopy aCopy(aRenderer->GetActors()); vtkActorCollection* aCollection = aCopy.GetActors(); for( int anIndex = 0, aNbItems = aCollection->GetNumberOfItems(); anIndex < aNbItems; anIndex++ ) @@ -962,7 +962,7 @@ SALOME_Actor anActor->SetNameActorOffset( anOffset ); if( anActor->GetVisibility() ) { - int aSize[2]; + double aSize[2]; anActor->GetNameActorSize( aRenderer, aSize ); anOffset[0] = anOffset[0] + aSize[0]; anOffset[1] = anOffset[1] + aSize[1]; @@ -1018,6 +1018,38 @@ SALOME_Actor myCellAreaPicker = theAreaPicker; } +/*! + To find a gravity center of object + \param theObjId - identification of object +*/ +double* +SALOME_Actor +::GetGravityCenter( int theObjId ) +{ + double* result = new double[3]; + for( int i = 0; i < 3; i++ ) + result[i]= 0.0; + + vtkPoints* points = GetElemCell( theObjId )->GetPoints(); + int nbPoints = points->GetNumberOfPoints(); + + if( nbPoints <= 0 ) + return NULL; + + for( int i = 0; i < nbPoints; i++ ) + { + double* aPoint = points->GetPoint(i); + result[0] += aPoint[0]; + result[1] += aPoint[1]; + result[2] += aPoint[2]; + } + result[0] = result[0] / nbPoints; + result[1] = result[1] / nbPoints; + result[2] = result[2] / nbPoints; + + return result; +} + /*! To set up a prehighlight property (initialized by SVTK_Renderer::AddActor) */