-// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2022 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
#include "SMESH_ActorDef.h"
#include "SMDS_UnstructuredGrid.hxx"
+#include "SMESH_ActorProps.h"
#include "SMESH_ActorUtils.h"
#include "SMESH_CellLabelActor.h"
#include "SMESH_ControlsDef.hxx"
static int MYDEBUG = 0;
#endif
-static int aLineWidthInc = 2;
-
-
SMESH_ActorDef* SMESH_ActorDef::New(){
return new SMESH_ActorDef();
}
myIsFacesOriented = false;
+ float controlsIncrement = (float) SMESH_ActorProps::props()->controlsIncrement();
+ float selectionIncrement = (float) SMESH_ActorProps::props()->selectionIncrement();
+
myControlsPrecision = -1;
SUIT_ResourceMgr* mgr = SUIT_Session::session()->resourceMgr();
if ( mgr && mgr->booleanValue( "SMESH", "use_precision", false ) )
myControlsPrecision = mgr->integerValue( "SMESH", "controls_precision", -1);
- double aElem0DSize = SMESH::GetFloat("SMESH:elem0d_size",5);
- double aBallElemSize = SMESH::GetFloat("SMESH:ball_elem_size",10);
- double aBallElemScale = SMESH::GetFloat("SMESH:ball_elem_scale",1.0);
- double aLineWidth = SMESH::GetFloat("SMESH:element_width",1);
- double aOutlineWidth = SMESH::GetFloat("SMESH:outline_width",1);
+ float aElem0DSize = (float) SMESH::GetFloat("SMESH:elem0d_size",5);
+ float aBallElemSize = (float) SMESH::GetFloat("SMESH:ball_elem_size",10);
+ float aBallElemScale = (float) SMESH::GetFloat("SMESH:ball_elem_scale",1.0);
+ float aLineWidth = (float) SMESH::GetFloat("SMESH:element_width",1);
+ float aOutlineWidth = (float) SMESH::GetFloat("SMESH:outline_width",1);
SMESH::LabelFont aFamilyNd = SMESH::FntTimes;
bool aBoldNd = true;
anRGB[0] = 1 - anRGB[0];
anRGB[1] = 1 - anRGB[1];
anRGB[2] = 1 - anRGB[2];
+ my2DExtProp->SetLineWidth(aLineWidth + controlsIncrement);
my2DExtProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
my2DExtActor = SMESH_DeviceActor::New();
anRGB[0] = 1 - anRGB[0];
anRGB[1] = 1 - anRGB[1];
anRGB[2] = 1 - anRGB[2];
+ my3DExtProp->SetLineWidth(aLineWidth + controlsIncrement);
my3DExtProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
my3DExtActor = SMESH_DeviceActor::New();
my1DProp = vtkProperty::New();
my1DProp->DeepCopy(myEdgeProp);
- my1DProp->SetLineWidth(aLineWidth + aLineWidthInc);
+ my1DProp->SetLineWidth(aLineWidth + controlsIncrement);
my1DProp->SetPointSize(aElem0DSize);
my1DExtProp = vtkProperty::New();
anRGB[1] = 1 - anRGB[1];
anRGB[2] = 1 - anRGB[2];
my1DExtProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
- my1DExtProp->SetLineWidth(aLineWidth + aLineWidthInc);
+ my1DExtProp->SetLineWidth(aLineWidth + controlsIncrement);
my1DExtProp->SetPointSize(aElem0DSize);
// my1DExtActor is used to show filtered edges or links between nodes
SMESH::GetColor( "SMESH", "selection_object_color", anRGB[0], anRGB[1], anRGB[2], QColor( 255, 255, 255 ) );
myHighlightProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
myHighlightProp->SetPointSize(aElem0DSize); // ??
- myHighlightProp->SetLineWidth(aLineWidth);
+ myHighlightProp->SetLineWidth(aLineWidth + selectionIncrement);
myHighlightProp->SetRepresentation(1);
myOutLineProp = vtkProperty::New();
SMESH::GetColor( "SMESH", "highlight_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 255, 255 ) );
myPreselectProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
myPreselectProp->SetPointSize(aElem0DSize); // ??
- myPreselectProp->SetLineWidth(aLineWidth);
+ myPreselectProp->SetLineWidth(aLineWidth + selectionIncrement);
myPreselectProp->SetRepresentation(1);
myHighlitableActor = SMESH_DeviceActor::New();
if(myBallActor)
myBallActor->SetCellsLabeled(theIsCellsLabeled);
+ SetRepresentation(GetRepresentation());
myTimeStamp->Modified();
}
return;
}
- int aNbCells = myFunctor ? myVisualObj->GetNbEntities( myFunctor->GetType() ) : 0;
+ smIdType aNbCells = myFunctor ? myVisualObj->GetNbEntities( myFunctor->GetType() ) : 0;
bool aShowOnlyScalarBarTitle = false;
if(aNbCells) {
//myControlMode = theMode;
}
QString aTitle = QString(myScalarBarActor->GetTitle());
aTitle.replace(QRegExp("(:\\s).*"),"\\1"+ QString::number(GetNumberControlEntities()));
- myScalarBarActor->SetTitle(aTitle.toLatin1().constData());
+ myScalarBarActor->SetTitle(aTitle.toUtf8().constData());
}
else {
//Update();
}
-int SMESH_ActorDef::GetNumberControlEntities()
+smIdType SMESH_ActorDef::GetNumberControlEntities()
{
SMESH_DeviceActor* anAct = NULL;
switch(myControlMode){
break;
default:;
}
- return (anAct) ? anAct->GetUnstructuredGrid()->GetNumberOfCells() : -1;
+ return anAct ? anAct->GetUnstructuredGrid()->GetNumberOfCells() : -1;
}
void SMESH_ActorDef::AddToRender(vtkRenderer* theRenderer)
}
-int SMESH_ActorDef::GetNodeObjId(int theVtkID)
+vtkIdType SMESH_ActorDef::GetNodeObjId(vtkIdType theVtkID)
{
return myPickableActor->GetNodeObjId(theVtkID);
}
-double* SMESH_ActorDef::GetNodeCoord(int theObjID)
+double* SMESH_ActorDef::GetNodeCoord(vtkIdType theObjID)
{
return myPickableActor->GetNodeCoord(theObjID);
}
-int SMESH_ActorDef::GetNodeVtkId(int theObjID)
+vtkIdType SMESH_ActorDef::GetNodeVtkId(vtkIdType theObjID)
{
return myPickableActor->GetNodeVtkId(theObjID);
}
-int SMESH_ActorDef::GetElemObjId(int theVtkID)
+vtkIdType SMESH_ActorDef::GetElemObjId(vtkIdType theVtkID)
{
return myPickableActor->GetElemObjId(theVtkID);
}
-vtkCell* SMESH_ActorDef::GetElemCell(int theObjID)
+vtkCell* SMESH_ActorDef::GetElemCell(vtkIdType theObjID)
{
return myPickableActor->GetElemCell(theObjID);
}
myScalarBarActor->VisibilityOn();
}
- myPickableActor->VisibilityOn();
+ if ( GetPickable( ))
+ myPickableActor->VisibilityOn();
if ( GetRepresentation() != ePoint )
{
if(myEntityMode & eBallElem ){
myBallActor->VisibilityOn();
}
- if(myEntityMode & eEdges && GetCellsLabeled() ){ // my1DActor shows labels only
+ if(myEntityMode & eEdges && ( GetCellsLabeled() || // my1DActor shows labels only
+ ( myControlActor == my1DActor && myControlMode != eNone ))){
my1DActor->VisibilityOn();
}
if(myEntityMode & eFaces ){
theMode |= eVolumes;
}
- myBaseActor->myGeomFilter->SetInside(myEntityMode != anObjectEntities);
+ // rnv : Fix volume selection on Display Entity
+ //myBaseActor->myGeomFilter->SetInside(myEntityMode != anObjectEntities);
if ( anObjectEntities == 0 && myRepresentation != ePoint ) // no elements, show nodes
{
myEntityMode = theMode; // entities to show
// Set cell types to extract
-
- VTKViewer_ExtractUnstructuredGrid* aFilter = myBaseActor->GetExtractUnstructuredGrid();
- VTKViewer_ExtractUnstructuredGrid* aHltFilter = myHighlitableActor->GetExtractUnstructuredGrid();
- aFilter->ClearRegisteredCellsWithType();
- aHltFilter->ClearRegisteredCellsWithType();
-
- bool isPassAll = ( myEntityMode == anObjectEntities && myEntityMode );
- if ( isPassAll )
- {
- aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::ePassAll);
- aHltFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::ePassAll);
- }
- else
- {
- aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
- aHltFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
-
- if (myEntityMode & e0DElements) {
- aFilter->RegisterCellsWithType(VTK_VERTEX);
- aHltFilter->RegisterCellsWithType(VTK_VERTEX);
- }
-
- if (myEntityMode & eBallElem) {
- aFilter->RegisterCellsWithType(VTK_POLY_VERTEX);
- }
-
- if (myEntityMode & eEdges) {
- aFilter->RegisterCellsWithType(VTK_LINE);
- aFilter->RegisterCellsWithType(VTK_QUADRATIC_EDGE);
-
- aHltFilter->RegisterCellsWithType(VTK_LINE);
- aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_EDGE);
- }
-
- if (myEntityMode & eFaces) {
- aFilter->RegisterCellsWithType(VTK_TRIANGLE);
- aFilter->RegisterCellsWithType(VTK_QUAD);
- aFilter->RegisterCellsWithType(VTK_POLYGON);
- aFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE);
- aFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD);
- aFilter->RegisterCellsWithType(VTK_QUADRATIC_POLYGON);
- aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUAD);
- aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_TRIANGLE);
-
- aHltFilter->RegisterCellsWithType(VTK_TRIANGLE);
- aHltFilter->RegisterCellsWithType(VTK_QUAD);
- aHltFilter->RegisterCellsWithType(VTK_POLYGON);
- aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE);
- aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD);
- aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_POLYGON);
- aHltFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUAD);
- aHltFilter->RegisterCellsWithType(VTK_BIQUADRATIC_TRIANGLE);
- }
-
- if (myEntityMode & eVolumes) {
- aFilter->RegisterCellsWithType(VTK_TETRA);
- aFilter->RegisterCellsWithType(VTK_VOXEL);
- aFilter->RegisterCellsWithType(VTK_HEXAHEDRON);
- aFilter->RegisterCellsWithType(VTK_WEDGE);
- aFilter->RegisterCellsWithType(VTK_PYRAMID);
- aFilter->RegisterCellsWithType(VTK_HEXAGONAL_PRISM);
- aFilter->RegisterCellsWithType(VTK_QUADRATIC_TETRA);
- aFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON);
- aFilter->RegisterCellsWithType(VTK_TRIQUADRATIC_HEXAHEDRON);
- aFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID);
- aFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE);
- aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUADRATIC_WEDGE);
- aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
- aFilter->RegisterCellsWithType(VTK_POLYHEDRON);
-
- aHltFilter->RegisterCellsWithType(VTK_TETRA);
- aHltFilter->RegisterCellsWithType(VTK_VOXEL);
- aHltFilter->RegisterCellsWithType(VTK_HEXAHEDRON);
- aHltFilter->RegisterCellsWithType(VTK_WEDGE);
- aHltFilter->RegisterCellsWithType(VTK_PYRAMID);
- aHltFilter->RegisterCellsWithType(VTK_HEXAGONAL_PRISM);
- aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_TETRA);
- aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON);
- aHltFilter->RegisterCellsWithType(VTK_TRIQUADRATIC_HEXAHEDRON);
- aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE);
- aHltFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUADRATIC_WEDGE);
- aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID);
- aHltFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
- aHltFilter->RegisterCellsWithType(VTK_POLYHEDRON);
- }
- }
- if ( GetVisibility() )
- aFilter->Update();
- if (MYDEBUG) MESSAGE(aFilter->GetOutput()->GetNumberOfCells());
+ UpdateFilter();
}
SetVisibility( GetVisibility(), myRepresentationCache != 0 );
void SMESH_ActorDef::SetRepresentation (int theMode)
{
- int aNbEdges = myVisualObj->GetNbEntities(SMDSAbs_Edge);
- int aNbFaces = myVisualObj->GetNbEntities(SMDSAbs_Face);
- int aNbVolumes = myVisualObj->GetNbEntities(SMDSAbs_Volume);
- int aNb0Ds = myVisualObj->GetNbEntities(SMDSAbs_0DElement);
- int aNbBalls = myVisualObj->GetNbEntities(SMDSAbs_Ball);
+ smIdType aNbEdges = myVisualObj->GetNbEntities(SMDSAbs_Edge);
+ smIdType aNbFaces = myVisualObj->GetNbEntities(SMDSAbs_Face);
+ smIdType aNbVolumes = myVisualObj->GetNbEntities(SMDSAbs_Volume);
+ smIdType aNb0Ds = myVisualObj->GetNbEntities(SMDSAbs_0DElement);
+ smIdType aNbBalls = myVisualObj->GetNbEntities(SMDSAbs_Ball);
if ( myRepresentationCache && aNbEdges + aNbFaces + aNbVolumes + aNb0Ds + aNbBalls )
{
myPickableActor = myBaseActor;
vtkProperty *aProp = NULL, *aBackProp = NULL;
vtkProperty *aPropVN = NULL, *aPropVR = NULL;
- SMESH_DeviceActor::EReperesent aReperesent = SMESH_DeviceActor::EReperesent(-1);
+ SMESH_DeviceActor::EReperesent aReperesent = SMESH_DeviceActor::eNoneRepr;
SMESH_Actor::EQuadratic2DRepresentation aQuadraticMode = GetQuadratic2DRepresentation();
switch (myRepresentation) {
case ePoint:
if ( myRepresentation != ePoint )
aReperesent = SMESH_DeviceActor::eInsideframe;
break;
+ case eCustomControl:
+ if ( myControlActor == my1DActor )
+ aProp = aBackProp = my1DProp;
+ if ( myRepresentation != ePoint )
+ aReperesent = SMESH_DeviceActor::eInsideframe;
+ break;
default:;
}
}
-void SMESH_ActorDef::Render(vtkRenderer *ren)
+void SMESH_ActorDef::Render(vtkRenderer* /*ren*/)
{
vtkMTimeType aTime = myTimeStamp->GetMTime();
vtkMTimeType anObjTime = myVisualObj->GetUnstructuredGrid()->GetMTime();
::GetColor(myBallProp,r,g,b);
}
-void SMESH_ActorDef::SetHighlightColor(double r,double g,double b)
-{
- myHighlightProp->SetColor(r,g,b);
- Modified();
-}
-
-void SMESH_ActorDef::GetHighlightColor(double& r,double& g,double& b)
-{
- ::GetColor(myHighlightProp,r,g,b);
-}
-
-void SMESH_ActorDef::SetPreHighlightColor(double r,double g,double b)
-{
- myPreselectProp->SetColor(r,g,b);
+void SMESH_ActorDef::UpdateSelectionProps()
+{
+ QColor selectionColor = SMESH_ActorProps::props()->selectionColor();
+ QColor highlightColor = SMESH_ActorProps::props()->highlightColor();
+ float selectionIncrement = (float) SMESH_ActorProps::props()->selectionIncrement();
+ float width = (float) GetLineWidth();
+ myHighlightProp->SetColor(selectionColor.redF(), selectionColor.greenF(), selectionColor.blueF());
+ myHighlightProp->SetLineWidth(width + selectionIncrement);
+ myPreselectProp->SetColor(highlightColor.redF(), highlightColor.greenF(), highlightColor.blueF());
+ myPreselectProp->SetLineWidth(width + selectionIncrement);
Modified();
}
-void SMESH_ActorDef::GetPreHighlightColor(double& r,double& g,double& b)
-{
- ::GetColor(myPreselectProp,r,g,b);
-}
-
-
double SMESH_ActorDef::GetLineWidth()
{
return myEdgeProp->GetLineWidth();
void SMESH_ActorDef::SetLineWidth(double theVal)
{
- myEdgeProp->SetLineWidth(theVal);
+ float controlsIncrement = (float) SMESH_ActorProps::props()->controlsIncrement();
+ float selectionIncrement = (float) SMESH_ActorProps::props()->selectionIncrement();
+
+ myEdgeProp->SetLineWidth((float) theVal);
- my1DProp->SetLineWidth(theVal + aLineWidthInc);
- my1DExtProp->SetLineWidth(theVal + aLineWidthInc);
- my2DExtProp->SetLineWidth(theVal + aLineWidthInc);
- my3DExtProp->SetLineWidth(theVal + aLineWidthInc);
- myOutLineProp->SetLineWidth(theVal);
- myHighlightProp->SetLineWidth(theVal);
- myPreselectProp->SetLineWidth(theVal);
+ my1DProp ->SetLineWidth((float) theVal + controlsIncrement);
+ my1DExtProp ->SetLineWidth((float) theVal + controlsIncrement);
+ my2DExtProp ->SetLineWidth((float) theVal + controlsIncrement);
+ my3DExtProp ->SetLineWidth((float) theVal + controlsIncrement);
+ myHighlightProp->SetLineWidth((float) theVal + selectionIncrement);
+ myPreselectProp->SetLineWidth((float) theVal + selectionIncrement);
Modified();
}
void SMESH_ActorDef::SetOutlineWidth(double theVal)
{
- myOutLineProp->SetLineWidth(theVal);
+ myOutLineProp->SetLineWidth((float) theVal);
Modified();
}
void SMESH_ActorDef::Set0DSize(double theVal)
{
- my0DProp->SetPointSize(theVal);
- myHighlightProp->SetPointSize(theVal);
- myPreselectProp->SetPointSize(theVal);
+ my0DProp ->SetPointSize((float) theVal);
+ myHighlightProp->SetPointSize((float) theVal);
+ myPreselectProp->SetPointSize((float) theVal);
if(SMESH_SVTKActor* aCustom = SMESH_SVTKActor::SafeDownCast( myHighlightActor )) {
- aCustom->Set0DSize(theVal);
+ aCustom->Set0DSize((float) theVal);
}
if(SMESH_SVTKActor* aCustom = SMESH_SVTKActor::SafeDownCast( myPreHighlightActor )) {
- aCustom->Set0DSize(theVal);
+ aCustom->Set0DSize((float) theVal);
}
Modified();
void SMESH_ActorDef::SetBallSize(double theVal)
{
- myBallProp->SetPointSize(theVal);
+ myBallProp->SetPointSize((float) theVal);
if(SMESH_SVTKActor* aCustom = SMESH_SVTKActor::SafeDownCast( myHighlightActor )) {
- aCustom->SetBallSize(theVal);
+ aCustom->SetBallSize((float) theVal);
}
if(SMESH_SVTKActor* aCustom = SMESH_SVTKActor::SafeDownCast( myPreHighlightActor )) {
- aCustom->SetBallSize(theVal);
+ aCustom->SetBallSize((float) theVal);
}
Modified();
Modified();
}
-int SMESH_ActorDef::GetObjDimension( const int theObjId )
+int SMESH_ActorDef::GetObjDimension( const vtkIdType theObjId )
{
return myVisualObj->GetElemDimension( theObjId );
}
std::vector<int> nbEvents;
std::vector<double> funValues;
SMESH_VisualObjDef::TEntityList elems;
- if ( ! dynamic_cast<SMESH_MeshObj*>(myVisualObj.get()))
- dynamic_cast<SMESH_VisualObjDef*>(myVisualObj.get())->GetEntities( fun->GetType(), elems );
- std::vector<int> elemIds; elemIds.reserve( elems.size() );
+ if ( dynamic_cast<SMESH_SubMeshObj*>(myVisualObj.get()))
+ dynamic_cast<SMESH_SubMeshObj*>(myVisualObj.get())->GetEntities( fun->GetType(), elems );
+ std::vector<smIdType> elemIds; elemIds.reserve( elems.size() );
for ( SMESH_VisualObjDef::TEntityList::iterator e = elems.begin(); e != elems.end(); ++e)
elemIds.push_back( (*e)->GetID());
vtkLookupTable* lookupTable = static_cast<vtkLookupTable*>(myScalarBarActor->GetLookupTable());
myMarkerTexture = theMarkerTexture; // for deferred update of myHighlightActor
}
+void SMESH_ActorDef::UpdateFilter()
+{
+ unsigned int anObjectEntities = eAllEntity; // entities present in my object
+
+ if(!myVisualObj->GetNbEntities(SMDSAbs_0DElement)) {
+ anObjectEntities &= ~e0DElements;
+ }
+
+ if(!myVisualObj->GetNbEntities(SMDSAbs_Ball)) {
+ anObjectEntities &= ~eBallElem;
+ }
+
+ if(!myVisualObj->GetNbEntities(SMDSAbs_Edge)) {
+ anObjectEntities &= ~eEdges;
+ }
+
+ if(!myVisualObj->GetNbEntities(SMDSAbs_Face)) {
+ anObjectEntities &= ~eFaces;
+ }
+
+ if(!myVisualObj->GetNbEntities(SMDSAbs_Volume)) {
+ anObjectEntities &= ~eVolumes;
+ }
+
+ VTKViewer_ExtractUnstructuredGrid* aFilter = myBaseActor->GetExtractUnstructuredGrid();
+ VTKViewer_ExtractUnstructuredGrid* aHltFilter = myHighlitableActor->GetExtractUnstructuredGrid();
+ aFilter->ClearRegisteredCellsWithType();
+ aHltFilter->ClearRegisteredCellsWithType();
+
+ bool isPassAll = ( myEntityMode == anObjectEntities && myEntityMode );
+ if ( isPassAll )
+ {
+ aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::ePassAll);
+ aHltFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::ePassAll);
+ }
+ else
+ {
+ aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
+ aHltFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
+ if (myEntityMode & e0DElements) {
+ aFilter->RegisterCellsWithType(VTK_VERTEX);
+ aHltFilter->RegisterCellsWithType(VTK_VERTEX);
+ }
+
+ if (myEntityMode & eBallElem) {
+ aFilter->RegisterCellsWithType(VTK_POLY_VERTEX);
+ }
+ if (myEntityMode & eEdges) {
+ aFilter->RegisterCellsWithType(VTK_LINE);
+ aFilter->RegisterCellsWithType(VTK_QUADRATIC_EDGE);
+ aHltFilter->RegisterCellsWithType(VTK_LINE);
+ aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_EDGE);
+ }
+
+ if (myEntityMode & eFaces) {
+ aFilter->RegisterCellsWithType(VTK_TRIANGLE);
+ aFilter->RegisterCellsWithType(VTK_QUAD);
+ aFilter->RegisterCellsWithType(VTK_POLYGON);
+ aFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE);
+ aFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD);
+ aFilter->RegisterCellsWithType(VTK_QUADRATIC_POLYGON);
+ aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUAD);
+ aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_TRIANGLE);
+ aHltFilter->RegisterCellsWithType(VTK_TRIANGLE);
+ aHltFilter->RegisterCellsWithType(VTK_QUAD);
+ aHltFilter->RegisterCellsWithType(VTK_POLYGON);
+ aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE);
+ aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD);
+ aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_POLYGON);
+ aHltFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUAD);
+ aHltFilter->RegisterCellsWithType(VTK_BIQUADRATIC_TRIANGLE);
+ }
+
+ if (myEntityMode & eVolumes) {
+ aFilter->RegisterCellsWithType(VTK_TETRA);
+ aFilter->RegisterCellsWithType(VTK_VOXEL);
+ aFilter->RegisterCellsWithType(VTK_HEXAHEDRON);
+ aFilter->RegisterCellsWithType(VTK_WEDGE);
+ aFilter->RegisterCellsWithType(VTK_PYRAMID);
+ aFilter->RegisterCellsWithType(VTK_HEXAGONAL_PRISM);
+ aFilter->RegisterCellsWithType(VTK_QUADRATIC_TETRA);
+ aFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON);
+ aFilter->RegisterCellsWithType(VTK_TRIQUADRATIC_HEXAHEDRON);
+ aFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID);
+ aFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE);
+ aFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUADRATIC_WEDGE);
+ aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
+ aFilter->RegisterCellsWithType(VTK_POLYHEDRON);
+ aHltFilter->RegisterCellsWithType(VTK_TETRA);
+ aHltFilter->RegisterCellsWithType(VTK_VOXEL);
+ aHltFilter->RegisterCellsWithType(VTK_HEXAHEDRON);
+ aHltFilter->RegisterCellsWithType(VTK_WEDGE);
+ aHltFilter->RegisterCellsWithType(VTK_PYRAMID);
+ aHltFilter->RegisterCellsWithType(VTK_HEXAGONAL_PRISM);
+ aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_TETRA);
+ aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON);
+ aHltFilter->RegisterCellsWithType(VTK_TRIQUADRATIC_HEXAHEDRON);
+ aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE);
+ aHltFilter->RegisterCellsWithType(VTK_BIQUADRATIC_QUADRATIC_WEDGE);
+ aHltFilter->RegisterCellsWithType(VTK_QUADRATIC_PYRAMID);
+ aHltFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET);
+ aHltFilter->RegisterCellsWithType(VTK_POLYHEDRON);
+ }
+ }
+ if ( GetVisibility() )
+ aFilter->Update();
+ if (MYDEBUG) MESSAGE(aFilter->GetOutput()->GetNumberOfCells());
+}
+
#ifndef DISABLE_PLOT2DVIEWER
SPlot2d_Histogram* SMESH_ActorDef::UpdatePlot2Histogram()
{
std::vector<int> nbEvents;
std::vector<double> funValues;
SMESH_VisualObjDef::TEntityList elems;
- if ( ! dynamic_cast<SMESH_MeshObj*>(myVisualObj.get()))
- dynamic_cast<SMESH_VisualObjDef*>(myVisualObj.get())->GetEntities( fun->GetType(), elems );
- std::vector<int> elemIds;
+ if ( dynamic_cast<SMESH_SubMeshObj*>(myVisualObj.get()))
+ dynamic_cast<SMESH_SubMeshObj*>(myVisualObj.get())->GetEntities( fun->GetType(), elems );
+ std::vector<smIdType> elemIds;
for ( SMESH_VisualObjDef::TEntityList::iterator e = elems.begin(); e != elems.end(); ++e)
elemIds.push_back( (*e)->GetID());