From 519f45e49541ef86004a139b9dccc909927bc406 Mon Sep 17 00:00:00 2001 From: rnv Date: Fri, 13 Sep 2013 10:00:15 +0000 Subject: [PATCH] Implementation of the "0022102: EDF 1496 SMESH : Displaying of discrete elements in SMESH relating to their attribute (diameter)" issue. --- doc/salome/gui/SMESH/images/pref22.png | Bin 58457 -> 30624 bytes .../gui/SMESH/input/mesh_preferences.doc | 1 + resources/SalomeApp.xml.in | 1 + src/OBJECT/SMESH_Actor.cxx | 42 ++---- src/OBJECT/SMESH_ActorDef.h | 3 - src/OBJECT/SMESH_CellLabelActor.cxx | 5 +- src/OBJECT/SMESH_DeviceActor.cxx | 13 ++ src/OBJECT/SMESH_DeviceActor.h | 1 + src/OBJECT/SMESH_Object.cxx | 29 ++++- src/OBJECT/SMESH_SVTKActor.cxx | 21 ++- src/OBJECT/SMESH_SVTKActor.h | 3 + src/SMESHGUI/SMESHGUI.cxx | 1 + src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx | 123 ++++++++++++++---- src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h | 2 +- .../SMESHGUI_AddQuadraticElementDlg.cxx | 17 ++- src/SMESHGUI/SMESHGUI_ClippingDlg.cxx | 13 +- src/SMESHGUI/SMESH_msg_en.ts | 4 + 17 files changed, 201 insertions(+), 78 deletions(-) diff --git a/doc/salome/gui/SMESH/images/pref22.png b/doc/salome/gui/SMESH/images/pref22.png index ff13403fba5b5974eb858d0b81aa7a3db86183ef..f6a7b597853685476c7a4fbbd2394f69a0c9915d 100755 GIT binary patch literal 30624 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 WkBPld>8r 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�q_(C{OviW4qA;0{H% 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 color - allows to select the color of borders of elements in the wireframe mode. + - Preview color - allows to select the preview color of the elements. - Size of 0D elements - specifies default size of 0D elements. - Size of ball elements - specifies default size of discrete elements (balls). diff --git a/resources/SalomeApp.xml.in b/resources/SalomeApp.xml.in index 18ab16368..70bfd5226 100644 --- a/resources/SalomeApp.xml.in +++ b/resources/SalomeApp.xml.in @@ -34,6 +34,7 @@ + diff --git a/src/OBJECT/SMESH_Actor.cxx b/src/OBJECT/SMESH_Actor.cxx index b2882117b..ec2a7c949 100644 --- a/src/OBJECT/SMESH_Actor.cxx +++ b/src/OBJECT/SMESH_Actor.cxx @@ -375,7 +375,6 @@ SMESH_ActorDef::SMESH_ActorDef() my0DActor->SetProperty(my0DProp); my0DActor->SetRepresentation(SMESH_DeviceActor::eSurface); aFilter = my0DActor->GetExtractUnstructuredGrid(); - //aFilter->SetModeOfExtraction(VTKViewer_ExtractUnstructuredGrid::ePoints); aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding); aFilter->RegisterCellsWithType(VTK_VERTEX); @@ -394,6 +393,7 @@ SMESH_ActorDef::SMESH_ActorDef() myBallActor->SetVisibility(false); myBallActor->SetProperty(myBallProp); myBallActor->SetRepresentation(SMESH_DeviceActor::eSurface); + myBallActor->SetBallEnabled(true); aFilter = myBallActor->GetExtractUnstructuredGrid(); aFilter->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding); aFilter->RegisterCellsWithType(VTK_POLY_VERTEX); @@ -474,11 +474,6 @@ SMESH_ActorDef::SMESH_ActorDef() myHighlightProp->SetLineWidth(aLineWidth); myHighlightProp->SetRepresentation(1); - myBallHighlightProp = vtkProperty::New(); - myBallHighlightProp->DeepCopy(myHighlightProp); - myBallHighlightProp->SetPointSize(aBallElemSize); - - myOutLineProp = vtkProperty::New(); myOutLineProp->SetAmbient(1.0); myOutLineProp->SetDiffuse(0.0); @@ -498,10 +493,6 @@ SMESH_ActorDef::SMESH_ActorDef() myPreselectProp->SetLineWidth(aLineWidth); myPreselectProp->SetRepresentation(1); - myBallPreselectProp = vtkProperty::New(); - myBallPreselectProp->DeepCopy(myPreselectProp); - myBallPreselectProp->SetPointSize(aBallElemSize); - myHighlitableActor = SMESH_DeviceActor::New(); myHighlitableActor->SetUserMatrix(aMatrix); myHighlitableActor->PickableOff(); @@ -602,9 +593,6 @@ SMESH_ActorDef::~SMESH_ActorDef() myOutLineProp->Delete(); myPreselectProp->Delete(); - myBallHighlightProp->Delete(); - myBallPreselectProp->Delete(); - myHighlitableActor->Delete(); my2DExtProp->Delete(); @@ -678,8 +666,6 @@ void SMESH_ActorDef::SetCellsFontProperties( SMESH::LabelFont theFamily, int the { if(my3DActor) { my3DActor->SetFontProperties( theFamily, theSize, theBold, theItalic, theShadow, r, g, b ); - SetRepresentation( GetRepresentation() ); - myTimeStamp->Modified(); } if(my2DActor) { my2DActor->SetFontProperties( theFamily, theSize, theBold, theItalic, theShadow, r, g, b ); @@ -1094,8 +1080,6 @@ SetControlMode(eControl theMode, void SMESH_ActorDef::AddToRender(vtkRenderer* theRenderer){ - //myHighlightActor->AddToRender(theRenderer); - theRenderer->AddActor(myBaseActor); theRenderer->AddActor(myNodeExtActor); theRenderer->AddActor(my1DExtActor); @@ -1108,7 +1092,6 @@ void SMESH_ActorDef::AddToRender(vtkRenderer* theRenderer){ my1DActor ->AddToRender(theRenderer); my0DActor ->AddToRender(theRenderer); myBallActor ->AddToRender(theRenderer); - //theRenderer->AddActor(my0DExtActor); theRenderer->AddActor(myHighlitableActor); @@ -1157,6 +1140,9 @@ bool SMESH_ActorDef::Init(TVisualObjPtr theVisualObj, myVisualObj = theVisualObj; myVisualObj->Update(theIsClear); + SMESH_SVTKActor::SafeDownCast(myHighlightActor)->SetVisualObject(myVisualObj); + SMESH_SVTKActor::SafeDownCast(myPreHighlightActor)->SetVisualObject(myVisualObj); + myNodeActor->Init(myVisualObj,myImplicitBoolean); myBaseActor->Init(myVisualObj,myImplicitBoolean); @@ -1559,7 +1545,6 @@ void SMESH_ActorDef::SetEntityMode(unsigned int theMode) if (myEntityMode & eBallElem) { aFilter->RegisterCellsWithType(VTK_POLY_VERTEX); - aHightFilter->RegisterCellsWithType(VTK_POLY_VERTEX); } if (myEntityMode & eEdges) { @@ -1638,9 +1623,9 @@ void SMESH_ActorDef::SetRepresentation (int theMode) if (theMode < 0) { myRepresentation = eSurface; - if (!aNbFaces && !aNbVolumes && aNbEdges) { + if (!aNbFaces && !aNbVolumes && !aNbBalls && aNbEdges) { myRepresentation = eEdge; - } else if (!aNbFaces && !aNbVolumes && !aNbEdges) { + } else if (!aNbFaces && !aNbVolumes && !aNbEdges && !aNbBalls) { myRepresentation = ePoint; } } else { @@ -1710,17 +1695,13 @@ void SMESH_ActorDef::SetRepresentation (int theMode) my3DActor->SetBackfaceProperty(aPropVR); my3DActor->SetRepresentation(aReperesent); - //my0DExtActor->SetVisibility(false); + my1DExtActor->SetVisibility(false); my2DExtActor->SetVisibility(false); my3DExtActor->SetVisibility(false); - // ??? - //my0DActor->SetProperty(aProp); - //my0DActor->SetBackfaceProperty(aBackProp); my0DActor->SetRepresentation(aReperesent); myBallActor->SetRepresentation(aReperesent); - //my0DExtActor->SetRepresentation(aReperesent); switch(myControlMode){ case eLength: @@ -1770,7 +1751,6 @@ bool SMESH_ActorDef::GetPointRepresentation(){ void SMESH_ActorDef::UpdateHighlight(){ myHighlitableActor->SetHighlited(false); myHighlitableActor->SetVisibility(false); - bool anIsVisible = GetVisibility(); switch(myRepresentation){ @@ -1779,12 +1759,9 @@ void SMESH_ActorDef::UpdateHighlight(){ { if(myIsHighlighted) { myHighlitableActor->SetProperty(myHighlightProp); - myBallActor->SetProperty(myBallHighlightProp); }else if(myIsPreselected){ myHighlitableActor->SetProperty(myPreselectProp); - myBallActor->SetProperty(myBallPreselectProp); } else if(anIsVisible){ - myBallActor->SetProperty(myBallProp); (myRepresentation == eSurface) ? myHighlitableActor->SetProperty(myOutLineProp) : myHighlitableActor->SetProperty(myEdgeProp); } @@ -2042,7 +2019,6 @@ void SMESH_ActorDef::GetBallColor(double& r,double& g,double& b){ void SMESH_ActorDef::SetHighlightColor(double r,double g,double b){ myHighlightProp->SetColor(r,g,b); - myBallHighlightProp->SetColor(r,g,b); Modified(); } @@ -2052,7 +2028,6 @@ void SMESH_ActorDef::GetHighlightColor(double& r,double& g,double& b){ void SMESH_ActorDef::SetPreHighlightColor(double r,double g,double b){ myPreselectProp->SetColor(r,g,b); - myBallPreselectProp->SetColor(r,g,b); Modified(); } @@ -2111,8 +2086,7 @@ double SMESH_ActorDef::Get0DSize(){ void SMESH_ActorDef::SetBallSize(double theVal){ myBallProp->SetPointSize(theVal); - myBallHighlightProp->SetPointSize(theVal); - myBallPreselectProp->SetPointSize(theVal); + if(SMESH_SVTKActor* aCustom = SMESH_SVTKActor::SafeDownCast( myHighlightActor )) { aCustom->SetBallSize(theVal); } diff --git a/src/OBJECT/SMESH_ActorDef.h b/src/OBJECT/SMESH_ActorDef.h index d412ac68a..c891d3cc8 100644 --- a/src/OBJECT/SMESH_ActorDef.h +++ b/src/OBJECT/SMESH_ActorDef.h @@ -259,9 +259,6 @@ class SMESH_ActorDef : public SMESH_Actor vtkProperty* myOutLineProp; vtkProperty* myPreselectProp; - vtkProperty* myBallHighlightProp; - vtkProperty* myBallPreselectProp; - SMESH_DeviceActor* myHighlitableActor; eControl myControlMode; diff --git a/src/OBJECT/SMESH_CellLabelActor.cxx b/src/OBJECT/SMESH_CellLabelActor.cxx index 90d28e162..71add3460 100644 --- a/src/OBJECT/SMESH_CellLabelActor.cxx +++ b/src/OBJECT/SMESH_CellLabelActor.cxx @@ -27,6 +27,7 @@ #include #include +#include #include #include @@ -152,7 +153,9 @@ void SMESH_CellLabelActor::SetCellsLabeled(bool theIsCellsLabeled) { vtkIntArray *anArray = vtkIntArray::New(); anArray->SetNumberOfValues(aNbElem); for(int anId = 0; anId < aNbElem; anId++){ - int aSMDSId = myVisualObj->GetElemObjId(anId); + vtkIdType id = myExtractUnstructuredGrid->GetInputId(anId); + id = (id >=0) ? id : anId; + int aSMDSId = myVisualObj->GetElemObjId(id); anArray->SetValue(anId,aSMDSId); } aDataSet->GetCellData()->SetScalars(anArray); diff --git a/src/OBJECT/SMESH_DeviceActor.cxx b/src/OBJECT/SMESH_DeviceActor.cxx index 562eaed73..4a46932cc 100644 --- a/src/OBJECT/SMESH_DeviceActor.cxx +++ b/src/OBJECT/SMESH_DeviceActor.cxx @@ -228,6 +228,11 @@ SMESH_DeviceActor myExtractUnstructuredGrid->SetInputData(theGrid); myMergeFilter->SetGeometryConnection(myExtractUnstructuredGrid->GetOutputPort()); + + //Pass diameters of the balls + if(myMapper->GetBallEnabled()) { + myMergeFilter->SetScalarsConnection(myExtractUnstructuredGrid->GetOutputPort()); + } myExtractGeometry->SetInputConnection(myMergeFilter->GetOutputPort()); @@ -935,6 +940,14 @@ void SMESH_DeviceActor::SetMarkerEnabled( bool theMarkerEnabled ) myMapper->SetMarkerEnabled( theMarkerEnabled ); } +/*! + * Set point marker enabled + * \param theBallEnabled flag to enable/disable ball drawing + */ +void SMESH_DeviceActor::SetBallEnabled( bool theBallEnabled ) { + myMapper->SetBallEnabled( theBallEnabled ); +} + /*! * Set standard point marker * \param theMarkerType type of the marker diff --git a/src/OBJECT/SMESH_DeviceActor.h b/src/OBJECT/SMESH_DeviceActor.h index bcce5c974..e3c63a761 100644 --- a/src/OBJECT/SMESH_DeviceActor.h +++ b/src/OBJECT/SMESH_DeviceActor.h @@ -144,6 +144,7 @@ class SMESHOBJECT_EXPORT SMESH_DeviceActor: public vtkLODActor{ bool IsImplicitFunctionUsed() const{ return myIsImplicitFunctionUsed;} void SetMarkerEnabled( bool ); + void SetBallEnabled( bool ); void SetMarkerStd( VTK::MarkerType, VTK::MarkerScale ); void SetMarkerTexture( int, VTK::MarkerTexture ); VTK::MarkerType GetMarkerType(); diff --git a/src/OBJECT/SMESH_Object.cxx b/src/OBJECT/SMESH_Object.cxx index b4fcbf6db..466b9af64 100644 --- a/src/OBJECT/SMESH_Object.cxx +++ b/src/OBJECT/SMESH_Object.cxx @@ -30,6 +30,7 @@ #include "SMDS_Mesh.hxx" #include "SMDS_PolyhedralVolumeOfNodes.hxx" +#include "SMDS_BallElement.hxx" #include "SMESH_Actor.h" #include "SMESH_ControlsDef.hxx" #include "SalomeApp_Application.h" @@ -43,7 +44,7 @@ #include #include #include - +#include #include #include @@ -279,7 +280,9 @@ void SMESH_VisualObjDef::buildPrs(bool buildGrid) //MESSAGE(myGrid->GetReferenceCount()); //MESSAGE( "Update - myGrid->GetNumberOfCells() = "<GetNumberOfCells() ); //MESSAGE( "Update - myGrid->GetNumberOfPoints() = "<GetNumberOfPoints() ); - if( MYDEBUGWITHFILES ) SMESH::WriteUnstructuredGrid( myGrid,"buildPrs.vtu" ); + if( MYDEBUGWITHFILES ) { + SMESH::WriteUnstructuredGrid( myGrid,"myPrs.vtu" ); + } } } @@ -417,7 +420,13 @@ void SMESH_VisualObjDef::buildElemPrs() aConnect.reserve(VTK_CELL_SIZE); SMDS_Mesh::CheckMemory(); // PAL16631 - + bool hasBalls = nbEnts[ SMDSAbs_Ball ] > 0; + vtkDataArray* aScalars = 0; + if(hasBalls) { + aScalars = vtkDataArray::CreateDataArray(VTK_DOUBLE); + aScalars->SetNumberOfComponents(1); + aScalars->SetNumberOfTuples(aNbCells); + } for ( int i = 0; i < nbTypes; i++ ) // iterate through all types of elements { if ( nbEnts[ aTypes[ i ] ] > 0 ) { @@ -475,8 +484,19 @@ void SMESH_VisualObjDef::buildElemPrs() } } } - aConnectivity->InsertNextCell( anIdList ); + vtkIdType aCurId = aConnectivity->InsertNextCell( anIdList ); aCellTypesArray->InsertNextValue( vtkElemType ); + + //Store diameters of the balls + if(aScalars) { + double aDiam = 0; + if(aType == SMDSAbs_Ball) { + if (const SMDS_BallElement* ball = dynamic_cast(anElem) ) { + aDiam = ball->GetDiameter(); + } + } + aScalars->SetTuple(aCurId,&aDiam); + } iElem++; } @@ -497,6 +517,7 @@ void SMESH_VisualObjDef::buildElemPrs() aCellLocationsArray->SetValue( idType, aConnectivity->GetTraversalLocation( npts ) ); myGrid->SetCells( aCellTypesArray, aCellLocationsArray,aConnectivity ); + myGrid->GetCellData()->SetScalars(aScalars); aCellLocationsArray->Delete(); aCellTypesArray->Delete(); diff --git a/src/OBJECT/SMESH_SVTKActor.cxx b/src/OBJECT/SMESH_SVTKActor.cxx index de143a790..8d8f5a513 100644 --- a/src/OBJECT/SMESH_SVTKActor.cxx +++ b/src/OBJECT/SMESH_SVTKActor.cxx @@ -39,6 +39,7 @@ #include #include #include +#include #include @@ -53,6 +54,7 @@ SMESH_SVTKActor::SMESH_SVTKActor(): { my0DActor = SVTK_DeviceActor::New(); myBallActor = SVTK_DeviceActor::New(); + myBallActor->SetBallEnabled(true); myBallActor->SetResolveCoincidentTopology(false); myBallActor->SetCoincident3DAllowed(true); @@ -121,8 +123,18 @@ SMESH_SVTKActor SVTK::CopyPoints( GetSource(), aSourceDataSet ); SVTK::CopyPoints( myBallGrid, aSourceDataSet ); SVTK::CopyPoints( my0DGrid, aSourceDataSet ); + int aNbOfParts = theMapIndex.Extent(); + + vtkCellData* cd = 0; + vtkCellData* outputCD = 0; + //Copy deamaters of the balls + if(myVisualObj) { + outputCD = myBallGrid->GetCellData(); + cd = aSourceDataSet->GetCellData(); + } + outputCD->CopyAllocate(cd,aNbOfParts,aNbOfParts/2); for(int ind = 1; ind <= aNbOfParts; ind++){ int aPartId = theMapIndex( ind ); if(vtkCell* aCell = theMapActor->GetElemCell(aPartId)) @@ -132,7 +144,10 @@ SMESH_SVTKActor if(aCell->GetCellType() == VTK_VERTEX ) { my0DGrid->InsertNextCell(aCell->GetCellType(),aCell->GetPointIds()); } else if(aCell->GetCellType() == VTK_POLY_VERTEX ) { - myBallGrid->InsertNextCell(aCell->GetCellType(),aCell->GetPointIds()); + vtkIdType newCellId = myBallGrid->InsertNextCell(aCell->GetCellType(),aCell->GetPointIds()); + if(myVisualObj) { + outputCD->CopyData(cd, myVisualObj->GetElemVTKId(aPartId), newCellId); + } } else { myUnstructuredGrid->InsertNextCell(aCell->GetCellType(),aCell->GetPointIds()); } @@ -182,3 +197,7 @@ void SMESH_SVTKActor::SetBallSize(float theSize) { myBallActor->GetProperty()->SetPointSize(theSize); } +void SMESH_SVTKActor::SetVisualObject(TVisualObjPtr theVisualObj) { + myVisualObj = theVisualObj; +} + diff --git a/src/OBJECT/SMESH_SVTKActor.h b/src/OBJECT/SMESH_SVTKActor.h index 08c47d3f4..e727181db 100644 --- a/src/OBJECT/SMESH_SVTKActor.h +++ b/src/OBJECT/SMESH_SVTKActor.h @@ -68,12 +68,15 @@ public: void RemoveFromRender(vtkRenderer* theRendere); + void SetVisualObject(TVisualObjPtr theVisualObj); + protected: SVTK_DeviceActor* my0DActor; SVTK_DeviceActor* myBallActor; vtkUnstructuredGrid* my0DGrid; vtkUnstructuredGrid* myBallGrid; + TVisualObjPtr myVisualObj; SMESH_SVTKActor(); virtual ~SMESH_SVTKActor(); diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index e3fb6fcd1..fe4352040 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -4994,6 +4994,7 @@ void SMESHGUI::createPreferences() addPreference( tr( "PREF_BALL_COLOR" ), elemGroup, LightApp_Preferences::Color, "SMESH", "ball_elem_color" ); addPreference( tr( "PREF_OUTLINE" ), elemGroup, LightApp_Preferences::Color, "SMESH", "outline_color" ); addPreference( tr( "PREF_WIREFRAME" ), elemGroup, LightApp_Preferences::Color, "SMESH", "wireframe_color" ); + addPreference( tr( "PREF_PREVIEW_COLOR" ), elemGroup, LightApp_Preferences::BiColor, "SMESH", "preview_color" ); int grpGroup = addPreference( tr( "PREF_GROUP_GROUPS" ), meshTab ); diff --git a/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx b/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx index f198189ce..067f35b9b 100644 --- a/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx @@ -51,6 +51,10 @@ #include #include #include +#include +#include +#include + // IDL incldues #include CORBA_SERVER_HEADER(SMESH_MeshEditor) @@ -65,6 +69,7 @@ #include #include #include +#include // Qt includes #include @@ -95,6 +100,10 @@ namespace SMESH SALOME_Actor* myPreviewActor; vtkDataSetMapper* myMapper; vtkUnstructuredGrid* myGrid; + + SALOME_Actor* myBallActor; + VTKViewer_PolyDataMapper* myBallMapper; + vtkPolyData* myBallPolyData; SALOME_Actor* myFaceOrientation; vtkPolyDataMapper* myFaceOrientationDataMapper; @@ -120,16 +129,18 @@ namespace SMESH myPreviewActor->VisibilityOff(); myPreviewActor->SetMapper(myMapper); - double anRGB[3]; + QColor ffc, bfc; + int delta; + vtkProperty* aProp = vtkProperty::New(); - GetColor( "SMESH", "fill_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 170, 255 ) ); - aProp->SetColor( anRGB[0], anRGB[1], anRGB[2] ); + SMESH::GetColor( "SMESH", "preview_color", ffc, delta, "0, 255, 0|-100" ) ; + aProp->SetColor( ffc.red() / 255. , ffc.green() / 255. , ffc.blue() / 255. ); myPreviewActor->SetProperty( aProp ); aProp->Delete(); vtkProperty* aBackProp = vtkProperty::New(); - GetColor( "SMESH", "backface_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 0, 255 ) ); - aBackProp->SetColor( anRGB[0], anRGB[1], anRGB[2] ); + bfc = Qtx::mainColorToSecondary(ffc, delta); + aBackProp->SetColor( bfc.red() / 255. , bfc.green() / 255. , bfc.blue() / 255. ); myPreviewActor->SetBackfaceProperty( aBackProp ); aBackProp->Delete(); @@ -148,12 +159,34 @@ namespace SMESH myFaceOrientation->SetMapper(myFaceOrientationDataMapper); vtkProperty* anOrientationProp = vtkProperty::New(); + double anRGB[3]; GetColor( "SMESH", "orientation_color", anRGB[0], anRGB[1], anRGB[2], QColor( 255, 255, 255 ) ); anOrientationProp->SetColor( anRGB[0], anRGB[1], anRGB[2] ); myFaceOrientation->SetProperty( anOrientationProp ); anOrientationProp->Delete(); - myVTKViewWindow->AddActor(myFaceOrientation); + + // Preview for the balls + vtkProperty* aBallProp = vtkProperty::New(); + aBallProp->SetColor(ffc.red() / 255. , ffc.green() / 255. , ffc.blue() / 255.); + double aBallElemSize = SMESH::GetFloat("SMESH:ball_elem_size",10); + aBallProp->SetPointSize(aBallElemSize); + + myBallPolyData = vtkPolyData::New(); + myBallPolyData->Allocate(); + + myBallMapper = VTKViewer_PolyDataMapper::New(); + myBallMapper->SetInputData(myBallPolyData); + myBallMapper->SetBallEnabled(true); + + myBallActor = SALOME_Actor::New(); + myBallActor->PickableOff(); + myBallActor->SetVisibility(false); + myBallActor->SetProperty(aBallProp); + myBallActor->SetMapper(myBallMapper); + aBallProp->Delete(); + + myVTKViewWindow->AddActor(myBallActor); } typedef std::vector TVTKIds; @@ -163,7 +196,7 @@ namespace SMESH { vtkUnstructuredGrid *aGrid = theActor->GetUnstructuredGrid(); myGrid->SetPoints(aGrid->GetPoints()); - myGrid->Reset(); + myGrid->Reset(); const std::vector& interlace = SMDS_MeshCell::toVtkOrder( VTKCellType( theType )); SMDS_MeshCell::applyInterlace( interlace, theIds ); @@ -177,36 +210,68 @@ namespace SMESH myGrid->Modified(); - SetVisibility(true, theActor->GetFacesOriented()); + SetVisibility(true, theActor->GetFacesOriented(), false); } + void SetBallPosition(SMESH_Actor* theActor,TVTKIds& theIds, double theDiameter) { + vtkUnstructuredGrid *aGrid = theActor->GetUnstructuredGrid(); + myBallPolyData->Reset(); + myBallPolyData->DeleteCells(); + myBallPolyData->SetPoints(aGrid->GetPoints()); + + vtkDataArray* aScalars = vtkDataArray::CreateDataArray(VTK_DOUBLE); + aScalars->SetNumberOfComponents(1); + aScalars->SetNumberOfTuples(theIds.size()); + myBallPolyData->GetCellData()->SetScalars(aScalars); + aScalars->Delete(); + + vtkIdList *anIds = vtkIdList::New(); + anIds->SetNumberOfIds(1); + for (int i = 0, iEnd = theIds.size(); i < iEnd; i++){ + anIds->InsertId(0,theIds[i]); + vtkIdType anId = myBallPolyData->InsertNextCell(VTK_POLY_VERTEX,anIds); + double d = theDiameter; + aScalars->SetTuple(anId,&d); + anIds->Reset(); + } + + anIds->Delete(); + myBallPolyData->Modified(); + SetVisibility (false, false, true); + } - void SetVisibility (bool theVisibility, bool theShowOrientation = false) + void SetVisibility (bool theVisibility, bool theShowOrientation = false, bool theShowBalls = false) { myPreviewActor->SetVisibility(theVisibility); myFaceOrientation->SetVisibility(theShowOrientation); + myBallActor->SetVisibility(theShowBalls); RepaintCurrentView(); } ~TElementSimulation() { + myMapper->RemoveAllInputs(); + myFaceOrientationDataMapper->RemoveAllInputs(); + myBallMapper->RemoveAllInputs(); + if (FindVtkViewWindow(myApplication->activeViewManager(), myViewWindow)) { - myVTKViewWindow->RemoveActor(myPreviewActor); - myVTKViewWindow->RemoveActor(myFaceOrientation); + myVTKViewWindow->RemoveActor(myPreviewActor,false,false); + myVTKViewWindow->RemoveActor(myFaceOrientation,false,false); + myVTKViewWindow->RemoveActor(myBallActor,false,false); } - myPreviewActor->Delete(); - myFaceOrientation->Delete(); - myMapper->RemoveAllInputs(); myMapper->Delete(); - - myFaceOrientationFilter->Delete(); - - myFaceOrientationDataMapper->RemoveAllInputs(); + myGrid->Delete(); + myPreviewActor->Delete(); + + myFaceOrientationFilter->Delete(); myFaceOrientationDataMapper->Delete(); + myFaceOrientation->Delete(); - myGrid->Delete(); + myBallMapper->Delete(); + myBallPolyData->Delete(); + myBallActor->Delete(); } }; } @@ -363,6 +428,7 @@ SMESHGUI_AddMeshElementDlg::SMESHGUI_AddMeshElementDlg( SMESHGUI* theMo DiameterSpinBox->RangeStepAndValidator( 1e-7, 1e+9, 0.1 ); DiameterSpinBox->SetValue( 1. ); + connect( DiameterSpinBox, SIGNAL( valueChanged ( double ) ), this, SLOT( onDiameterChanged( ) ) ); } /* Add to group ************************************************/ GroupGroups = new QGroupBox( tr( "SMESH_ADD_TO_GROUP" ), this ); @@ -578,9 +644,9 @@ void SMESHGUI_AddMeshElementDlg::ClickOnApply() mySelector->ClearIndex(); mySelectionMgr->setSelectedObjects( aList, false ); - SMESH::UpdateView(); mySimulation->SetVisibility(false); - + SMESH::UpdateView(); + buttonOk->setEnabled(false); buttonApply->setEnabled(false); @@ -608,7 +674,6 @@ void SMESHGUI_AddMeshElementDlg::ClickOnOk() //================================================================================= void SMESHGUI_AddMeshElementDlg::reject() { - //mySelectionMgr->clearSelected(); mySimulation->SetVisibility(false); SMESH::SetPointRepresentation(false); if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI )) @@ -808,7 +873,11 @@ void SMESHGUI_AddMeshElementDlg::displaySimulation() } vtkIdType aType = SMDS_MeshCell::toVtkType( myGeomType ); - mySimulation->SetPosition(myActor,aType,anIds); + if(aType == VTK_POLY_VERTEX) { + mySimulation->SetBallPosition(myActor,anIds,DiameterSpinBox->GetValue()); + } else { + mySimulation->SetPosition(myActor,aType,anIds); + } SMESH::UpdateView(); } } @@ -905,6 +974,14 @@ void SMESHGUI_AddMeshElementDlg::keyPressEvent( QKeyEvent* e ) } } +//================================================================================= +// function : isValid +// purpose : +//================================================================================= +void SMESHGUI_AddMeshElementDlg::onDiameterChanged(){ + displaySimulation(); +} + //================================================================================= // function : isValid // purpose : diff --git a/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h b/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h index 1bc25cdb5..aa4bd8e20 100644 --- a/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h +++ b/src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h @@ -64,7 +64,6 @@ namespace SMESH class SMESHGUI_EXPORT SMESHGUI_AddMeshElementDlg : public QDialog { Q_OBJECT - public: SMESHGUI_AddMeshElementDlg( SMESHGUI*, SMDSAbs_EntityType = SMDSEntity_Edge ); ~SMESHGUI_AddMeshElementDlg(); @@ -119,6 +118,7 @@ private: protected slots: virtual void reject(); + void onDiameterChanged(); private slots: void ClickOnOk(); diff --git a/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx b/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx index 652336eca..ab2a0743f 100644 --- a/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx @@ -55,6 +55,8 @@ #include +#include + // IDL includes #include #include CORBA_SERVER_HEADER(SMESH_MeshEditor) @@ -146,17 +148,19 @@ namespace SMESH myPreviewActor->PickableOff(); myPreviewActor->VisibilityOff(); myPreviewActor->SetMapper(myMapper); - + + QColor ffc, bfc; + int delta; vtkProperty* myProp = vtkProperty::New(); - double aRGB[3], aBackRGB[3]; - GetColor( "SMESH", "fill_color", aRGB[0], aRGB[1], aRGB[2], QColor( 0, 170, 255 ) ); - myProp->SetColor( aRGB[0], aRGB[1], aRGB[2] ); + SMESH::GetColor( "SMESH", "preview_color", ffc, delta, "0, 255, 0|-100" ) ; + + myProp->SetColor( ffc.red() / 255. , ffc.green() / 255. , ffc.blue() / 255. ); myPreviewActor->SetProperty( myProp ); myProp->Delete(); vtkProperty* myBackProp = vtkProperty::New(); - GetColor( "SMESH", "backface_color", aBackRGB[0], aBackRGB[1], aBackRGB[2], QColor( 0, 0, 255 ) ); - myBackProp->SetColor( aBackRGB[0], aBackRGB[1], aBackRGB[2] ); + bfc = Qtx::mainColorToSecondary(ffc, delta); + myBackProp->SetColor( bfc.red() / 255. , bfc.green() / 255. , bfc.blue() / 255. ); myPreviewActor->SetBackfaceProperty( myBackProp ); myBackProp->Delete(); @@ -175,6 +179,7 @@ namespace SMESH myFaceOrientation->SetMapper(myFaceOrientationDataMapper); vtkProperty* anOrientationProp = vtkProperty::New(); + double aRGB[3]; GetColor( "SMESH", "orientation_color", aRGB[0], aRGB[1], aRGB[2], QColor( 255, 255, 255 ) ); anOrientationProp->SetColor( aRGB[0], aRGB[1], aRGB[2] ); myFaceOrientation->SetProperty( anOrientationProp ); diff --git a/src/SMESHGUI/SMESHGUI_ClippingDlg.cxx b/src/SMESHGUI/SMESHGUI_ClippingDlg.cxx index f426c5e1f..c1e63059d 100644 --- a/src/SMESHGUI/SMESHGUI_ClippingDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_ClippingDlg.cxx @@ -141,17 +141,20 @@ void SMESH::OrientedPlane::Init() myActor->SetInfinitive(true); myActor->SetMapper(myMapper); - double anRGB[3]; + QColor ffc, bfc; + int delta; + SMESH::GetColor( "SMESH", "fill_color", ffc, delta, "255, 170, 0|-100" ) ; + vtkProperty* aProp = vtkProperty::New(); - SMESH::GetColor( "SMESH", "fill_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 170, 255 ) ); - aProp->SetColor(anRGB[0],anRGB[1],anRGB[2]); + SMESH::GetColor( "SMESH", "fill_color", ffc, delta, "255, 170, 0|-100" ) ; + aProp->SetColor(ffc.red() / 255. , ffc.green() / 255. , ffc.blue() / 255.); aProp->SetOpacity(0.75); myActor->SetProperty(aProp); aProp->Delete(); vtkProperty* aBackProp = vtkProperty::New(); - SMESH::GetColor( "SMESH", "backface_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 0, 255 ) ); - aBackProp->SetColor(anRGB[0],anRGB[1],anRGB[2]); + bfc = Qtx::mainColorToSecondary(ffc, delta); + aBackProp->SetColor( bfc.red() / 255. , bfc.green() / 255. , bfc.blue() / 255.); aBackProp->SetOpacity(0.75); myActor->SetBackfaceProperty(aBackProp); aBackProp->Delete(); diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index e989562ed..3d5d74814 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -4302,6 +4302,10 @@ Please, create VTK viewer and try again PREF_FILL Surface color + + PREF_PREVIEW_COLOR + Preview color + PREF_NOTIFY_MODE Show a computation result notification -- 2.39.2