-// Copyright (C) 2007-2014 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
#include <SMESH_Actor.h>
#include <SMESH_ActorUtils.h>
-#include <SMESH_DeviceActor.h>
#include <SMESH_FaceOrientationFilter.h>
#include <SMDS_Mesh.hxx>
#include <SVTK_ViewWindow.h>
#include <SALOME_ListIO.hxx>
-#include <SALOME_ListIteratorOfListIO.hxx>
-#include <VTKViewer_PolyDataMapper.h>
#include <SalomeApp_Application.h>
#include <TColStd_MapOfInteger.hxx>
// VTK includes
-#include <vtkCell.h>
#include <vtkIdList.h>
#include <vtkUnstructuredGrid.h>
#include <vtkDataSetMapper.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkCellType.h>
-#include <vtkCellData.h>
// Qt includes
#include <QComboBox>
SALOME_Actor* myPreviewActor;
vtkDataSetMapper* myMapper;
vtkUnstructuredGrid* myGrid;
-
- SALOME_Actor* myCornerActor;
- VTKViewer_PolyDataMapper* myCornerMapper;
- vtkPolyData* myCornerPolyData;
-
- SALOME_Actor* mySelectCornerActor;
- VTKViewer_PolyDataMapper* mySelectCornerMapper;
- vtkPolyData* mySelectCornerPolyData;
+ //vtkProperty* myBackProp, *myProp;
//double myRGB[3], myBackRGB[3];
anOrientationProp->Delete();
myVTKViewWindow->AddActor(myFaceOrientation);
-
- // Create and display actor with corner nodes
- myCornerPolyData = vtkPolyData::New();
- myCornerPolyData->Allocate();
- myCornerMapper = VTKViewer_PolyDataMapper::New();
- myCornerMapper->SetInputData(myCornerPolyData);
- myCornerMapper->SetMarkerEnabled(true);
-
- myCornerActor = SALOME_Actor::New();
- myCornerActor->PickableOff();
- myCornerActor->VisibilityOff();
- myCornerActor->SetMapper(myCornerMapper);
-
- vtkProperty* myCornerProp = vtkProperty::New();
- myCornerProp->SetColor( 50 / 255. , 100 / 255. , 0 / 255. );
- myCornerActor->SetProperty( myCornerProp );
- myCornerProp->Delete();
-
- myVTKViewWindow->AddActor(myCornerActor);
-
- // Create and display actor with selected corner nodes
- mySelectCornerPolyData = vtkPolyData::New();
- mySelectCornerPolyData->Allocate();
- mySelectCornerMapper = VTKViewer_PolyDataMapper::New();
- mySelectCornerMapper->SetInputData(mySelectCornerPolyData);
- mySelectCornerMapper->SetMarkerEnabled(true);
-
- mySelectCornerActor = SALOME_Actor::New();
- mySelectCornerActor->PickableOff();
- mySelectCornerActor->VisibilityOff();
- mySelectCornerActor->SetMapper(mySelectCornerMapper);
-
- vtkProperty* mySelectCornerProp = vtkProperty::New();
- mySelectCornerProp->SetColor( ffc.red() / 255. , ffc.green() / 255. , ffc.blue() / 255. );
- mySelectCornerActor->SetProperty( mySelectCornerProp );
- mySelectCornerProp->Delete();
-
- myVTKViewWindow->AddActor(mySelectCornerActor);
-
}
typedef std::vector<vtkIdType> TVTKIds;
myPreviewActor->GetMapper()->Update();
myPreviewActor->SetRepresentation( theMode );
+ SetVisibility(true, theActor->GetFacesOriented());
}
- void SetCornerNodes (SMESH_Actor* theActor,
- TVTKIds& theIds)
- {
- vtkUnstructuredGrid *aGrid = theActor->GetUnstructuredGrid();
-
- myCornerMapper->SetMarkerStd(theActor->GetMarkerType(), theActor->GetMarkerScale());
- myCornerPolyData->Reset();
- myCornerPolyData->DeleteCells();
- myCornerPolyData->SetPoints(aGrid->GetPoints());
- vtkIdList *anIds = vtkIdList::New();
- for (int i = 0, iEnd = theIds.size(); i < iEnd; i++) {
- anIds->InsertId(i,theIds[i]);
- myCornerPolyData->InsertNextCell(VTK_VERTEX, anIds);
- anIds->Reset();
- }
- anIds->Delete();
- myCornerPolyData->Modified();
- myCornerActor->GetMapper()->Update();
- myCornerActor->SetRepresentation(SMESH_Actor::ePoint);
- }
- void SetSelectedNodes (SMESH_Actor* theActor,
- TVTKIds& theIds)
- {
- vtkUnstructuredGrid *aGrid = theActor->GetUnstructuredGrid();
-
- mySelectCornerMapper->SetMarkerStd(theActor->GetMarkerType(), theActor->GetMarkerScale());
-
- mySelectCornerPolyData->Reset();
- mySelectCornerPolyData->DeleteCells();
- mySelectCornerPolyData->SetPoints(aGrid->GetPoints());
-
- vtkIdList *anIds = vtkIdList::New();
- for (int i = 0, iEnd = theIds.size(); i < iEnd; i++) {
- anIds->InsertId(i,theIds[i]);
- mySelectCornerPolyData->InsertNextCell(VTK_VERTEX, anIds);
- anIds->Reset();
- }
- anIds->Delete();
- mySelectCornerPolyData->Modified();
- mySelectCornerActor->GetMapper()->Update();
- mySelectCornerActor->SetRepresentation(SMESH_Actor::ePoint);
- }
-
- void SetVisibility ( bool theVisibility,
- bool theCornerVisibility = false,
- bool theSelectCornerVisibility = false,
- bool theShowOrientation = false )
+ void SetVisibility (bool theVisibility, bool theShowOrientation = false)
{
myPreviewActor->SetVisibility(theVisibility);
myFaceOrientation->SetVisibility(theShowOrientation);
- myCornerActor->SetVisibility(theCornerVisibility);
- mySelectCornerActor->SetVisibility(theSelectCornerVisibility);
RepaintCurrentView();
}
+
~TElementSimulationQuad()
{
if (FindVtkViewWindow(myApplication->activeViewManager(), myViewWindow)) {
myVTKViewWindow->RemoveActor(myPreviewActor);
myVTKViewWindow->RemoveActor(myFaceOrientation);
- myVTKViewWindow->RemoveActor(myCornerActor);
- myVTKViewWindow->RemoveActor(mySelectCornerActor);
}
myPreviewActor->Delete();
myFaceOrientation->Delete();
- myCornerActor->Delete();
- mySelectCornerActor->Delete();
myMapper->RemoveAllInputs();
myMapper->Delete();
myGrid->Delete();
- myCornerMapper->RemoveAllInputs();
- myCornerMapper->Delete();
- myCornerPolyData->Delete();
-
- mySelectCornerMapper->RemoveAllInputs();
- mySelectCornerMapper->Delete();
- mySelectCornerPolyData->Delete();
-
// myProp->Delete();
// myBackProp->Delete();
}
QString aCurrentEntry = myEntry;
- // clear
- myActor = 0;
if ( myCurrentLineEdit )
+ {
+ // clear
+ myActor = 0;
+
myCurrentLineEdit->setText("");
- if (!GroupButtons->isEnabled()) // inactive
- return;
+ if (!GroupButtons->isEnabled()) // inactive
+ return;
- mySimulation->SetVisibility(false);
+ mySimulation->SetVisibility(false);
- // get selected mesh
- SALOME_ListIO aList;
- mySelectionMgr->selectedObjects(aList);
+ // get selected mesh
+ SALOME_ListIO aList;
+ mySelectionMgr->selectedObjects(aList);
- if (aList.Extent() != 1)
- {
- UpdateTable();
- updateButtons();
- return;
- }
+ if (aList.Extent() != 1)
+ {
+ UpdateTable();
+ updateButtons();
+ return;
+ }
- Handle(SALOME_InteractiveObject) anIO = aList.First();
- myEntry = anIO->getEntry();
- myMesh = SMESH::GetMeshByIO(anIO);
- if (myMesh->_is_nil()) {
- updateButtons();
- return;
- }
+ Handle(SALOME_InteractiveObject) anIO = aList.First();
+ myEntry = anIO->getEntry();
+ myMesh = SMESH::GetMeshByIO(anIO);
+ if (myMesh->_is_nil()) {
+ updateButtons();
+ return;
+ }
- myActor = SMESH::FindActorByEntry(anIO->getEntry());
+ myActor = SMESH::FindActorByEntry(anIO->getEntry());
+
+ }
// process groups
if ( !myMesh->_is_nil() && myEntry != aCurrentEntry ) {
// purpose :
//=================================================================================
-void SMESHGUI_AddQuadraticElementDlg::displaySimulation(int theRow, int theCol)
+void SMESHGUI_AddQuadraticElementDlg::displaySimulation()
{
- bool isValid = IsValid();
- if ( ( isValid || myTable->isEnabled() ) && myActor )
+ if ( IsValid() )
{
SMESH::TElementSimulationQuad::TVTKIds anIds;
int anID;
bool ok;
int aDisplayMode = VTK_SURFACE;
+
if ( myGeomType == SMDSEntity_Quad_Edge )
{
anIds.push_back( myActor->GetObject()->GetNodeVTKId( myTable->item(0, 0)->text().toInt() ) );
}
anIds.push_back( myActor->GetObject()->GetNodeVTKId(anID) );
}
- if ( myNbMidFaceNodes && isValid)
+ if ( myNbMidFaceNodes )
{
QStringList aListId = myMidFaceNodes->text().split(" ", QString::SkipEmptyParts);
for (int i = 0; i < aListId.count(); i++)
anIds.push_back( myActor->GetObject()->GetNodeVTKId( aListId[ i ].toInt() ));
}
- if ( myNbCenterNodes && isValid)
+ if ( myNbCenterNodes )
{
QStringList aListId = myCenterNode->text().split(" ", QString::SkipEmptyParts);
anIds.push_back( myActor->GetObject()->GetNodeVTKId( aListId[ 0 ].toInt() ));
}
}
- if ( isValid )
- mySimulation->SetPosition(myActor,myGeomType,anIds,aDisplayMode,myReverseCB->isChecked());
- mySimulation->SetCornerNodes(myActor, anIds);
- if ( theCol == 1 ) {
- anIds.clear();
- anIds.push_back( myActor->GetObject()->GetNodeVTKId( myTable->item(theRow, 0)->text().toInt() ) );
- anIds.push_back( myActor->GetObject()->GetNodeVTKId( myTable->item(theRow, 2)->text().toInt() ) );
- bool ok;
- int anID;
- anID = myTable->item(theRow, 1)->text().toInt(&ok);
- if (ok)
- anIds.push_back(myActor->GetObject()->GetNodeVTKId(anID));
- mySimulation->SetSelectedNodes(myActor, anIds);
- }
- mySimulation->SetVisibility(isValid, true, true, myActor->GetFacesOriented());
+
+ mySimulation->SetPosition(myActor,myGeomType,anIds,aDisplayMode,myReverseCB->isChecked());
}
else
{
void SMESHGUI_AddQuadraticElementDlg::onCellDoubleClicked( int theRow, int theCol )
{
myCurrentLineEdit = 0;
- displaySimulation(theRow, theCol);
+ displaySimulation();
updateButtons();
}
void SMESHGUI_AddQuadraticElementDlg::onCellTextChange(int theRow, int theCol)
{
myCurrentLineEdit = 0;
- displaySimulation(theRow, theCol);
+ displaySimulation();
updateButtons();
}