-// SMESH SMESHGUI : GUI for SMESH component
+// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
//
-// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
-// 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.
+// 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.
//
-// 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.
+// 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
+// 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
//
-//
-//
-// File : SMESHGUI_MeshEditPreview.cxx
-// Module : SMESH
-// $Header:
+// SMESH SMESHGUI : GUI for SMESH component
+// File : SMESHGUI_MeshEditPreview.cxx
+// Author : Open CASCADE S.A.S.
+// SMESH includes
+//
#include "SMESHGUI_MeshEditPreview.h"
-#include "VTKViewer_CellLocationsArray.h"
-#include "SVTK_ViewWindow.h"
-
-#include "SMESH_Actor.h"
-#include "SMESH_ActorUtils.h"
#include "SMESHGUI_VTKUtils.h"
-// VTK Includes
+#include <SMESH_Actor.h>
+#include <SMESH_ActorUtils.h>
+
+// SALOME GUI includes
+#include <VTKViewer_CellLocationsArray.h>
+#include <SVTK_ViewWindow.h>
+
+// VTK includes
#include <vtkPoints.h>
#include <vtkIdList.h>
#include <vtkCellArray.h>
#include <vtkDataSetMapper.h>
#include <vtkProperty.h>
-// QT Includes
-#include <qcolor.h>
+// Qt includes
+#include <QColor>
-// IDL Headers
-#include "SALOMEconfig.h"
+// IDL includes
+#include <SALOMEconfig.h>
#include CORBA_SERVER_HEADER(SMESH_MeshEditor)
-using namespace SMESH;
-
//================================================================================
/*!
* \brief Constructor
// Create and display actor
vtkDataSetMapper* aMapper = vtkDataSetMapper::New();
- aMapper->SetInput( myGrid );
+ aMapper->SetInputData( myGrid );
myPreviewActor = SALOME_Actor::New();
myPreviewActor->SetInfinitive(true);
myPreviewActor->VisibilityOn();
myPreviewActor->PickableOff();
- vtkFloatingPointType anRGB[3];
- GetColor( "SMESH", "selection_element_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 170, 255 ) );
+ double aFactor,aUnits;
+ myPreviewActor->SetResolveCoincidentTopology(true);
+ myPreviewActor->GetPolygonOffsetParameters(aFactor,aUnits);
+ myPreviewActor->SetPolygonOffsetParameters(aFactor,0.2*aUnits);
+
+ double anRGB[3];
+ SMESH::GetColor( "SMESH", "selection_element_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 170, 255 ) );
SetColor( anRGB[0], anRGB[1], anRGB[2] );
myPreviewActor->SetMapper( aMapper );
//================================================================================
vtkIdType getCellType( const SMDSAbs_ElementType theType,
- const bool thePoly,
- const int theNbNodes )
+ const bool thePoly,
+ const int theNbNodes )
{
switch( theType )
{
else if ( theNbNodes == 3 ) return VTK_TRIANGLE;
else if ( theNbNodes == 4 ) return VTK_QUAD;
else if ( theNbNodes == 6 ) return VTK_QUADRATIC_TRIANGLE;
+ else if ( theNbNodes == 7 ) return VTK_BIQUADRATIC_TRIANGLE;
else if ( theNbNodes == 8 ) return VTK_QUADRATIC_QUAD;
+ else if ( theNbNodes == 9 ) return VTK_BIQUADRATIC_QUAD;
else return VTK_EMPTY_CELL;
case SMDSAbs_Volume:
else if ( theNbNodes == 5 ) return VTK_PYRAMID;
else if ( theNbNodes == 6 ) return VTK_WEDGE;
else if ( theNbNodes == 8 ) return VTK_HEXAHEDRON;
- else if ( theNbNodes == 10 ) {
- return VTK_QUADRATIC_TETRA;
- }
- else if ( theNbNodes == 20 ) {
- return VTK_QUADRATIC_HEXAHEDRON;
- }
- else if ( theNbNodes==13 || theNbNodes==15 ) {
- return VTK_CONVEX_POINT_SET;
- }
+ else if ( theNbNodes == 10 ) return VTK_QUADRATIC_TETRA;
+ else if ( theNbNodes == 20 ) return VTK_QUADRATIC_HEXAHEDRON;
+ else if ( theNbNodes == 27 ) return VTK_TRIQUADRATIC_HEXAHEDRON;
+ else if ( theNbNodes == 15 ) return VTK_QUADRATIC_WEDGE;
+ else if ( theNbNodes == 13 ) return VTK_QUADRATIC_PYRAMID;//VTK_CONVEX_POINT_SET;
else return VTK_EMPTY_CELL;
default: return VTK_EMPTY_CELL;
int aNodePos = 0;
for ( int i = 0; i < anElemTypes.length(); i++ ) {
- const ElementSubType& anElementSubType = anElemTypes[i];
+ const SMESH::ElementSubType& anElementSubType = anElemTypes[i];
SMDSAbs_ElementType aType = SMDSAbs_ElementType(anElementSubType.SMDS_ElementType);
vtkIdType aNbNodes = anElementSubType.nbNodesInElement;
anIdList->SetNumberOfIds( aNbNodes );
void SMESHGUI_MeshEditPreview::SetVisibility (bool theVisibility)
{
myPreviewActor->SetVisibility(theVisibility);
- RepaintCurrentView();
+ SMESH::RepaintCurrentView();
}
//================================================================================
{
myPreviewActor->SetColor( R, G, B );
}
+
+//================================================================================
+/*!
+ * \brief Get preview actor
+ */
+//================================================================================
+SALOME_Actor* SMESHGUI_MeshEditPreview::GetActor() const
+{
+ return myPreviewActor;
+}