mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-11-15 10:08:34 +05:00
Issue 0020613: EDF 1106 : Modify Node Marker in SMESH and VISU
This commit is contained in:
parent
c3b2640450
commit
4d33eed28b
BIN
doc/salome/gui/SMESH/images/colors_size.png
Executable file
BIN
doc/salome/gui/SMESH/images/colors_size.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
BIN
doc/salome/gui/SMESH/images/custom_point_marker.png
Executable file
BIN
doc/salome/gui/SMESH/images/custom_point_marker.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 8.0 KiB |
BIN
doc/salome/gui/SMESH/images/point_marker_widget1.png
Executable file
BIN
doc/salome/gui/SMESH/images/point_marker_widget1.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 4.3 KiB |
BIN
doc/salome/gui/SMESH/images/point_marker_widget2.png
Executable file
BIN
doc/salome/gui/SMESH/images/point_marker_widget2.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
BIN
doc/salome/gui/SMESH/images/std_point_marker.png
Executable file
BIN
doc/salome/gui/SMESH/images/std_point_marker.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 8.4 KiB |
35
doc/salome/gui/SMESH/input/colors_size.doc
Normal file
35
doc/salome/gui/SMESH/input/colors_size.doc
Normal file
@ -0,0 +1,35 @@
|
||||
/*!
|
||||
|
||||
\page colors_size_page Colors / Size
|
||||
|
||||
\image html colors_size.png
|
||||
|
||||
Using this dialog you can define the following set of mesh visualization
|
||||
parameters:
|
||||
<ul>
|
||||
<li><b>Elements</b></li>
|
||||
<ul>
|
||||
<li><b>Fill</b> - color of surface of elements (seen in Shading mode).</li>
|
||||
<li><b>Back Face</b> - color of interior surface of elements.</li>
|
||||
<li><b>Outline</b> - color of borders of elements.</li>
|
||||
<li><b>0D slements</b> - color of 0D elements.</li>
|
||||
<li><b>Size of 0D slements</b> - size of 0D elements.</li>
|
||||
<li><b>Width</b> - width of lines (edges and borders of elements).</li>
|
||||
<li><b>Shrink coef.</b> - relative space of elements compared to gaps between
|
||||
them in shrink mode.</li>
|
||||
</ul>
|
||||
<li><b>Nodes</b></li>
|
||||
<ul>
|
||||
<li><b>Color</b> - color of nodes.</li>
|
||||
<li><b>Marker</b> - group of options allowing to change the representation of
|
||||
points (see \subpage point_marker_page "Point Marker" page).</li>
|
||||
</ul>
|
||||
<li><b>Orientation of faces</b></li>
|
||||
<ul>
|
||||
<li><b>Color</b> - color of orientation vertors.</li>
|
||||
<li><b>Scale</b> - size of orientation vectors.</li>
|
||||
<li><b>3D vectors</b> - allows to choose between 2D planar and 3D vectors.</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
*/
|
53
doc/salome/gui/SMESH/input/point_marker.doc
Normal file
53
doc/salome/gui/SMESH/input/point_marker.doc
Normal file
@ -0,0 +1,53 @@
|
||||
/*!
|
||||
|
||||
\page point_marker_page Point Marker
|
||||
|
||||
\n You can change the representation of points in
|
||||
the 3D viewer either by selecting one of the predefined
|
||||
shapes or by loading a custom texture from an external file.
|
||||
|
||||
- Standard point markers
|
||||
|
||||
The Mesh module provides a set of predefined point marker shapes
|
||||
which can be used to display points in 3D viewer.
|
||||
Each standard point marker has two attributes: type (defines shape
|
||||
form) and scale factor (defines shape size).
|
||||
|
||||
\image html point_marker_widget1.png
|
||||
|
||||
<br>
|
||||
|
||||
\image html std_point_marker.png "Mesh presentation with standard point markers"
|
||||
|
||||
- Custom point markers
|
||||
|
||||
It is also possible to load a point marker shape from an external file.
|
||||
This file should provide a description of the point texture as a set
|
||||
of lines; each line is represented as sequence of "0" and "1" symbols,
|
||||
where "1" symbol means an opaque pixel and "0" symbol means a
|
||||
transparent pixel. The width of the texture correspond to the length
|
||||
of the longest line in the file, expanded to the nearest byte-aligned
|
||||
value. The height of the texture is equal to the number of non-empty
|
||||
lines in the file. Note that missing symbols are replaced by "0".
|
||||
|
||||
Here is a texture file sample:
|
||||
|
||||
<pre>
|
||||
00111100
|
||||
00111100
|
||||
11111111
|
||||
11111111
|
||||
11111111
|
||||
11111111
|
||||
00111100
|
||||
00111100
|
||||
</pre>
|
||||
|
||||
\image html point_marker_widget2.png
|
||||
|
||||
<br>
|
||||
|
||||
\image html custom_point_marker.png "Mesh presentation with custom point markers"
|
||||
|
||||
*/
|
||||
|
@ -40,7 +40,7 @@ of quadratic edges as broken <b>lines</b> or as <b>arcs</b></li>
|
||||
faces of the selected mesh. Vector is shown for each 2D mesh element
|
||||
and for each free face of 3D mesh element. Vector direction is calculated by
|
||||
the first three nodes of face as a cross product of vectors n1-n2 and n1-n3.</li>
|
||||
<li><b>Colors / Size</b> - allows to select color and size of
|
||||
<li>\subpage colors_size_page "Colors / Size" - allows to select color and size of
|
||||
meshes.</li>
|
||||
<li>\subpage transparency_page "Transparency" - allows to change the
|
||||
transparency of mesh elements.</li>
|
||||
|
@ -33,7 +33,8 @@
|
||||
<parameter name="backface_color" value="0, 0, 255"/>
|
||||
<parameter name="elem0d_color" value="0, 255, 0"/>
|
||||
<parameter name="highlight_color" value="0, 255, 255"/>
|
||||
<parameter name="node_size" value="3" />
|
||||
<parameter name="type_of_marker" value="1" />
|
||||
<parameter name="marker_scale" value="9" />
|
||||
<parameter name="elem0d_size" value="5" />
|
||||
<parameter name="element_width" value="1" />
|
||||
<parameter name="shrink_coeff" value="75"/>
|
||||
|
@ -86,7 +86,6 @@ static int MYDEBUG = 0;
|
||||
#endif
|
||||
|
||||
static int aLineWidthInc = 2;
|
||||
static int aPointSizeInc = 2;
|
||||
|
||||
|
||||
SMESH_ActorDef* SMESH_ActorDef::New(){
|
||||
@ -129,7 +128,6 @@ SMESH_ActorDef::SMESH_ActorDef()
|
||||
if ( mgr && mgr->booleanValue( "SMESH", "use_precision", false ) )
|
||||
myControlsPrecision = mgr->integerValue( "SMESH", "controls_precision", -1);
|
||||
|
||||
vtkFloatingPointType aPointSize = SMESH::GetFloat("SMESH:node_size",3);
|
||||
vtkFloatingPointType aElem0DSize = SMESH::GetFloat("SMESH:elem0d_size",5);
|
||||
vtkFloatingPointType aLineWidth = SMESH::GetFloat("SMESH:element_width",1);
|
||||
|
||||
@ -224,7 +222,7 @@ SMESH_ActorDef::SMESH_ActorDef()
|
||||
my1DProp = vtkProperty::New();
|
||||
my1DProp->DeepCopy(myEdgeProp);
|
||||
my1DProp->SetLineWidth(aLineWidth + aLineWidthInc);
|
||||
my1DProp->SetPointSize(aPointSize);
|
||||
my1DProp->SetPointSize(aElem0DSize);
|
||||
|
||||
my1DExtProp = vtkProperty::New();
|
||||
my1DExtProp->DeepCopy(myEdgeProp);
|
||||
@ -233,7 +231,7 @@ SMESH_ActorDef::SMESH_ActorDef()
|
||||
anRGB[2] = 1 - anRGB[2];
|
||||
my1DExtProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
|
||||
my1DExtProp->SetLineWidth(aLineWidth + aLineWidthInc);
|
||||
my1DExtProp->SetPointSize(aPointSize + aPointSizeInc);
|
||||
my1DExtProp->SetPointSize(aElem0DSize);
|
||||
|
||||
my1DExtActor = SMESH_DeviceActor::New();
|
||||
my1DExtActor->SetUserMatrix(aMatrix);
|
||||
@ -294,7 +292,6 @@ SMESH_ActorDef::SMESH_ActorDef()
|
||||
myNodeProp = vtkProperty::New();
|
||||
SMESH::GetColor( "SMESH", "node_color", anRGB[0], anRGB[1], anRGB[2], QColor( 255, 0, 0 ) );
|
||||
myNodeProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
|
||||
myNodeProp->SetPointSize(aPointSize);
|
||||
|
||||
myNodeActor = SMESH_DeviceActor::New();
|
||||
myNodeActor->SetUserMatrix(aMatrix);
|
||||
@ -312,7 +309,6 @@ SMESH_ActorDef::SMESH_ActorDef()
|
||||
anRGB[1] = 1 - anRGB[1];
|
||||
anRGB[2] = 1 - anRGB[2];
|
||||
myNodeExtProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
|
||||
myNodeExtProp->SetPointSize(aPointSize);
|
||||
|
||||
myNodeExtActor = SMESH_DeviceActor::New();
|
||||
myNodeExtActor->SetUserMatrix(aMatrix);
|
||||
@ -342,8 +338,7 @@ SMESH_ActorDef::SMESH_ActorDef()
|
||||
myHighlightProp->SetSpecular(0.0);
|
||||
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(aPointSize);
|
||||
myHighlightProp->SetPointSize(std::max(aElem0DSize,aPointSize)); // ??
|
||||
myHighlightProp->SetPointSize(aElem0DSize); // ??
|
||||
myHighlightProp->SetRepresentation(1);
|
||||
|
||||
myPreselectProp = vtkProperty::New();
|
||||
@ -352,8 +347,7 @@ SMESH_ActorDef::SMESH_ActorDef()
|
||||
myPreselectProp->SetSpecular(0.0);
|
||||
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(aPointSize);
|
||||
myPreselectProp->SetPointSize(std::max(aElem0DSize,aPointSize)); // ??
|
||||
myPreselectProp->SetPointSize(aElem0DSize); // ??
|
||||
myPreselectProp->SetRepresentation(1);
|
||||
|
||||
myHighlitableActor = SMESH_DeviceActor::New();
|
||||
@ -1012,6 +1006,10 @@ bool SMESH_ActorDef::Init(TVisualObjPtr theVisualObj,
|
||||
if( dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
|
||||
SetIsDisplayNameActor( true );
|
||||
|
||||
int aMarkerType = mgr->integerValue( "SMESH", "type_of_marker", 1 ); // dot
|
||||
int aMarkerScale = mgr->integerValue( "SMESH", "marker_scale", 9 ); // 5 pixels
|
||||
SetMarkerStd( (VTK::MarkerType)aMarkerType, (VTK::MarkerScale)aMarkerScale );
|
||||
|
||||
myTimeStamp->Modified();
|
||||
Modified();
|
||||
return true;
|
||||
@ -1219,15 +1217,15 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){
|
||||
my0DActor->VisibilityOn();
|
||||
}
|
||||
|
||||
if(myEntityMode & eEdges){
|
||||
if(myEntityMode & eEdges && GetRepresentation() != ePoint){
|
||||
my1DActor->VisibilityOn();
|
||||
}
|
||||
|
||||
if(myEntityMode & eFaces){
|
||||
if(myEntityMode & eFaces && GetRepresentation() != ePoint){
|
||||
my2DActor->VisibilityOn();
|
||||
}
|
||||
|
||||
if(myEntityMode & eVolumes){
|
||||
if(myEntityMode & eVolumes && GetRepresentation() != ePoint){
|
||||
my3DActor->VisibilityOn();
|
||||
}
|
||||
|
||||
@ -1508,6 +1506,12 @@ void SMESH_ActorDef::UpdateHighlight(){
|
||||
SetModeOfExtraction(VTKViewer_ExtractUnstructuredGrid::ePoints);
|
||||
myHighlitableActor->SetVisibility(anIsVisible);
|
||||
myHighlitableActor->SetRepresentation(SMESH_DeviceActor::ePoint);
|
||||
|
||||
VTK::MarkerType aMarkerType = GetMarkerType();
|
||||
if(aMarkerType != VTK::MT_USER)
|
||||
myHighlitableActor->SetMarkerStd(aMarkerType, GetMarkerScale());
|
||||
else
|
||||
myHighlitableActor->SetMarkerTexture(GetMarkerTexture(), myMarkerTexture);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1712,35 +1716,8 @@ void SMESH_ActorDef::SetLineWidth(vtkFloatingPointType theVal){
|
||||
}
|
||||
|
||||
|
||||
void SMESH_ActorDef::SetNodeSize(vtkFloatingPointType theVal){
|
||||
myNodeProp->SetPointSize(theVal);
|
||||
myNodeExtProp->SetPointSize(theVal);
|
||||
|
||||
vtkFloatingPointType aPointSize = my0DProp->GetPointSize() > theVal ? my0DProp->GetPointSize() : theVal;
|
||||
//myHighlightProp->SetPointSize(theVal);
|
||||
myHighlightProp->SetPointSize(aPointSize); // ??
|
||||
//myPreselectProp->SetPointSize(theVal);
|
||||
myPreselectProp->SetPointSize(aPointSize); // ??
|
||||
|
||||
my1DProp->SetPointSize(theVal + aPointSizeInc);
|
||||
my1DExtProp->SetPointSize(theVal + aPointSizeInc);
|
||||
|
||||
Modified();
|
||||
}
|
||||
|
||||
vtkFloatingPointType SMESH_ActorDef::GetNodeSize(){
|
||||
return myNodeProp->GetPointSize();
|
||||
}
|
||||
|
||||
void SMESH_ActorDef::Set0DSize(vtkFloatingPointType theVal){
|
||||
my0DProp->SetPointSize(theVal);
|
||||
|
||||
vtkFloatingPointType aPointSize = myNodeProp->GetPointSize() > theVal ? myNodeProp->GetPointSize() : theVal;
|
||||
//myHighlightProp->SetPointSize(theVal);
|
||||
myHighlightProp->SetPointSize(aPointSize); // ??
|
||||
//myPreselectProp->SetPointSize(theVal);
|
||||
myPreselectProp->SetPointSize(aPointSize); // ??
|
||||
|
||||
Modified();
|
||||
}
|
||||
|
||||
@ -2049,3 +2026,18 @@ SMESH_Actor::EQuadratic2DRepresentation SMESH_ActorDef::GetQuadratic2DRepresenta
|
||||
else
|
||||
return SMESH_Actor::eLines;
|
||||
}
|
||||
|
||||
void SMESH_ActorDef::SetMarkerStd( VTK::MarkerType theMarkerType, VTK::MarkerScale theMarkerScale )
|
||||
{
|
||||
SALOME_Actor::SetMarkerStd( theMarkerType, theMarkerScale );
|
||||
myNodeActor->SetMarkerStd( theMarkerType, theMarkerScale );
|
||||
myNodeExtActor->SetMarkerStd( theMarkerType, theMarkerScale );
|
||||
}
|
||||
|
||||
void SMESH_ActorDef::SetMarkerTexture( int theMarkerId, VTK::MarkerTexture theMarkerTexture )
|
||||
{
|
||||
SALOME_Actor::SetMarkerTexture( theMarkerId, theMarkerTexture );
|
||||
myNodeActor->SetMarkerTexture( theMarkerId, theMarkerTexture );
|
||||
myNodeExtActor->SetMarkerTexture( theMarkerId, theMarkerTexture );
|
||||
myMarkerTexture = theMarkerTexture; // for deferred update of myHighlightActor
|
||||
}
|
||||
|
@ -72,9 +72,6 @@ class SMESHOBJECT_EXPORT SMESH_Actor: public SALOME_Actor
|
||||
virtual vtkFloatingPointType GetLineWidth() = 0;
|
||||
virtual void SetLineWidth(vtkFloatingPointType theVal) = 0;
|
||||
|
||||
virtual void SetNodeSize(vtkFloatingPointType size) = 0;
|
||||
virtual vtkFloatingPointType GetNodeSize() = 0;
|
||||
|
||||
virtual void Set0DSize(vtkFloatingPointType size) = 0;
|
||||
virtual vtkFloatingPointType Get0DSize() = 0;
|
||||
|
||||
|
@ -127,9 +127,6 @@ class SMESH_ActorDef : public SMESH_Actor
|
||||
virtual vtkFloatingPointType GetLineWidth();
|
||||
virtual void SetLineWidth(vtkFloatingPointType theVal);
|
||||
|
||||
virtual void SetNodeSize(vtkFloatingPointType size) ;
|
||||
virtual vtkFloatingPointType GetNodeSize() ;
|
||||
|
||||
virtual void Set0DSize(vtkFloatingPointType size);
|
||||
virtual vtkFloatingPointType Get0DSize();
|
||||
|
||||
@ -209,6 +206,9 @@ class SMESH_ActorDef : public SMESH_Actor
|
||||
virtual void SetQuadratic2DRepresentation(EQuadratic2DRepresentation);
|
||||
virtual EQuadratic2DRepresentation GetQuadratic2DRepresentation();
|
||||
|
||||
virtual void SetMarkerStd( VTK::MarkerType, VTK::MarkerScale );
|
||||
virtual void SetMarkerTexture( int, VTK::MarkerTexture );
|
||||
|
||||
protected:
|
||||
void SetControlMode(eControl theMode, bool theCheckEntityMode);
|
||||
void SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed);
|
||||
@ -283,6 +283,8 @@ class SMESH_ActorDef : public SMESH_Actor
|
||||
|
||||
bool myIsFacesOriented;
|
||||
|
||||
VTK::MarkerTexture myMarkerTexture;
|
||||
|
||||
SMESH_ActorDef();
|
||||
~SMESH_ActorDef();
|
||||
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "SMESH_ActorUtils.h"
|
||||
#include "SMESH_FaceOrientationFilter.h"
|
||||
#include "VTKViewer_CellLocationsArray.h"
|
||||
#include "VTKViewer_PolyDataMapper.h"
|
||||
|
||||
#include <VTKViewer_Transform.h>
|
||||
#include <VTKViewer_TransformFilter.h>
|
||||
@ -88,7 +89,7 @@ SMESH_DeviceActor
|
||||
myRepresentation = eSurface;
|
||||
|
||||
myProperty = vtkProperty::New();
|
||||
myMapper = vtkPolyDataMapper::New();
|
||||
myMapper = VTKViewer_PolyDataMapper::New();
|
||||
|
||||
vtkMapper::GetResolveCoincidentTopologyPolygonOffsetParameters(myPolygonOffsetFactor,
|
||||
myPolygonOffsetUnits);
|
||||
@ -703,6 +704,7 @@ SMESH_DeviceActor
|
||||
myGeomFilter->SetWireframeMode(false);
|
||||
GetProperty()->SetRepresentation(theMode);
|
||||
}
|
||||
SetMarkerEnabled(theMode == ePoint);
|
||||
myRepresentation = theMode;
|
||||
UpdateFaceOrientation();
|
||||
GetProperty()->Modified();
|
||||
@ -901,3 +903,58 @@ void SMESH_DeviceActor::SetQuadraticArcAngle(vtkFloatingPointType theMaxAngle){
|
||||
vtkFloatingPointType SMESH_DeviceActor::GetQuadraticArcAngle(){
|
||||
return myGeomFilter->GetQuadraticArcAngle();
|
||||
}
|
||||
|
||||
/*!
|
||||
* Set point marker enabled
|
||||
* \param theMarkerEnabled flag to enable/disable point marker
|
||||
*/
|
||||
void SMESH_DeviceActor::SetMarkerEnabled( bool theMarkerEnabled )
|
||||
{
|
||||
myMapper->SetMarkerEnabled( theMarkerEnabled );
|
||||
}
|
||||
|
||||
/*!
|
||||
* Set standard point marker
|
||||
* \param theMarkerType type of the marker
|
||||
*/
|
||||
void SMESH_DeviceActor::SetMarkerStd( VTK::MarkerType theMarkerType, VTK::MarkerScale theMarkerScale )
|
||||
{
|
||||
myMapper->SetMarkerStd( theMarkerType, theMarkerScale );
|
||||
}
|
||||
|
||||
/*!
|
||||
* Set custom point marker
|
||||
* \param theMarkerId id of the marker texture
|
||||
* \param theMarkerTexture marker texture
|
||||
*/
|
||||
void SMESH_DeviceActor::SetMarkerTexture( int theMarkerId, VTK::MarkerTexture theMarkerTexture )
|
||||
{
|
||||
myMapper->SetMarkerTexture( theMarkerId, theMarkerTexture );
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get type of the point marker
|
||||
* \return type of the point marker
|
||||
*/
|
||||
VTK::MarkerType SMESH_DeviceActor::GetMarkerType()
|
||||
{
|
||||
return myMapper->GetMarkerType();
|
||||
}
|
||||
|
||||
/*!
|
||||
Get scale of the point marker
|
||||
\return scale of the point marker
|
||||
*/
|
||||
VTK::MarkerScale SMESH_DeviceActor::GetMarkerScale()
|
||||
{
|
||||
return myMapper->GetMarkerScale();
|
||||
}
|
||||
|
||||
/*!
|
||||
* Get texture identifier of the point marker
|
||||
* \return texture identifier of the point marker
|
||||
*/
|
||||
int SMESH_DeviceActor::GetMarkerTexture()
|
||||
{
|
||||
return myMapper->GetMarkerTexture();
|
||||
}
|
||||
|
@ -29,6 +29,7 @@
|
||||
#define SMESH_DEVICE_ACTOR_H
|
||||
|
||||
#include <VTKViewer_GeometryFilter.h>
|
||||
#include <VTKViewer_MarkerDef.h>
|
||||
#include "SMESH_Controls.hxx"
|
||||
#include "SMESH_Object.h"
|
||||
|
||||
@ -39,7 +40,6 @@ class vtkCell;
|
||||
class vtkProperty;
|
||||
class vtkMergeFilter;
|
||||
class vtkShrinkFilter;
|
||||
class vtkPolyDataMapper;
|
||||
class vtkUnstructuredGrid;
|
||||
class vtkScalarBarActor;
|
||||
class vtkLookupTable;
|
||||
@ -49,6 +49,7 @@ class vtkPassThroughFilter;
|
||||
class VTKViewer_Transform;
|
||||
class VTKViewer_TransformFilter;
|
||||
class VTKViewer_ExtractUnstructuredGrid;
|
||||
class VTKViewer_PolyDataMapper;
|
||||
|
||||
class SMESH_ExtractGeometry;
|
||||
class SMESH_FaceOrientationFilter;
|
||||
@ -133,11 +134,18 @@ class SMESHOBJECT_EXPORT SMESH_DeviceActor: public vtkLODActor{
|
||||
void SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed);
|
||||
bool IsImplicitFunctionUsed() const{ return myIsImplicitFunctionUsed;}
|
||||
|
||||
void SetMarkerEnabled( bool );
|
||||
void SetMarkerStd( VTK::MarkerType, VTK::MarkerScale );
|
||||
void SetMarkerTexture( int, VTK::MarkerTexture );
|
||||
VTK::MarkerType GetMarkerType();
|
||||
VTK::MarkerScale GetMarkerScale();
|
||||
int GetMarkerTexture();
|
||||
|
||||
protected:
|
||||
void Init(TVisualObjPtr theVisualObj, vtkImplicitBoolean* theImplicitBoolean);
|
||||
void SetUnstructuredGrid(vtkUnstructuredGrid* theGrid);
|
||||
|
||||
vtkPolyDataMapper *myMapper;
|
||||
VTKViewer_PolyDataMapper *myMapper;
|
||||
TVisualObjPtr myVisualObj;
|
||||
|
||||
vtkProperty *myProperty;
|
||||
|
@ -153,7 +153,7 @@
|
||||
|
||||
void ExportMeshToFile(int theCommandID);
|
||||
|
||||
void SetDisplayMode(int theCommandID);
|
||||
void SetDisplayMode(int theCommandID, SMESHGUI_StudyId2MarkerMap& theMarkerMap);
|
||||
|
||||
void SetDisplayEntity(int theCommandID);
|
||||
|
||||
@ -716,7 +716,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
void SetDisplayMode(int theCommandID){
|
||||
void SetDisplayMode(int theCommandID, SMESHGUI_StudyId2MarkerMap& theMarkerMap){
|
||||
SALOME_ListIO selected;
|
||||
SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
|
||||
if( !app )
|
||||
@ -814,7 +814,6 @@
|
||||
int Edgewidth = (int)anActor->GetLineWidth();
|
||||
if(Edgewidth == 0)
|
||||
Edgewidth = 1;
|
||||
int intValue = int(anActor->GetNodeSize());
|
||||
vtkFloatingPointType Shrink = anActor->GetShrinkFactor();
|
||||
|
||||
vtkFloatingPointType faces_orientation_color[3];
|
||||
@ -836,11 +835,21 @@
|
||||
aDlg->SetColor(5, c0D);
|
||||
aDlg->SetColor(6, o);
|
||||
aDlg->SetIntValue(1, Edgewidth);
|
||||
aDlg->SetIntValue(2, intValue);
|
||||
aDlg->SetIntValue(3, int(Shrink*100.));
|
||||
aDlg->SetIntValue(4, size0D);
|
||||
aDlg->SetIntValue(2, int(Shrink*100.));
|
||||
aDlg->SetIntValue(3, size0D);
|
||||
aDlg->SetDoubleValue(1, faces_orientation_scale);
|
||||
aDlg->SetBooleanValue(1, faces_orientation_3dvectors);
|
||||
|
||||
aDlg->setCustomMarkerMap( theMarkerMap[ aStudy->StudyId() ] );
|
||||
|
||||
VTK::MarkerType aMarkerTypeCurrent = anActor->GetMarkerType();
|
||||
VTK::MarkerScale aMarkerScaleCurrent = anActor->GetMarkerScale();
|
||||
int aMarkerTextureCurrent = anActor->GetMarkerTexture();
|
||||
if( aMarkerTypeCurrent != VTK::MT_USER )
|
||||
aDlg->setStandardMarker( aMarkerTypeCurrent, aMarkerScaleCurrent );
|
||||
else
|
||||
aDlg->setCustomMarker( aMarkerTextureCurrent );
|
||||
|
||||
if(aDlg->exec()){
|
||||
QColor color = aDlg->GetColor(1);
|
||||
QColor edgecolor = aDlg->GetColor(2);
|
||||
@ -862,20 +871,19 @@
|
||||
vtkFloatingPointType (edgecolor.blue()) / 255.);
|
||||
|
||||
/* Shrink factor and size edges */
|
||||
anActor->SetShrinkFactor(aDlg->GetIntValue(3) / 100.);
|
||||
anActor->SetShrinkFactor(aDlg->GetIntValue(2) / 100.);
|
||||
anActor->SetLineWidth(aDlg->GetIntValue(1));
|
||||
|
||||
/* Nodes color and size */
|
||||
anActor->SetNodeColor(vtkFloatingPointType (nodecolor.red()) / 255.,
|
||||
vtkFloatingPointType (nodecolor.green()) / 255.,
|
||||
vtkFloatingPointType (nodecolor.blue()) / 255.);
|
||||
anActor->SetNodeSize(aDlg->GetIntValue(2));
|
||||
|
||||
/* 0D elements */
|
||||
anActor->Set0DColor(vtkFloatingPointType (color0D.red()) / 255.,
|
||||
vtkFloatingPointType (color0D.green()) / 255.,
|
||||
vtkFloatingPointType (color0D.blue()) / 255.);
|
||||
anActor->Set0DSize(aDlg->GetIntValue(4));
|
||||
anActor->Set0DSize(aDlg->GetIntValue(3));
|
||||
|
||||
/* Faces orientation */
|
||||
vtkFloatingPointType c[3] = {vtkFloatingPointType(faces_orientation_color.redF()),
|
||||
@ -885,6 +893,21 @@
|
||||
anActor->SetFacesOrientationScale(aDlg->GetDoubleValue(1));
|
||||
anActor->SetFacesOrientation3DVectors(aDlg->GetBooleanValue(1));
|
||||
|
||||
/* Point marker */
|
||||
theMarkerMap[ aStudy->StudyId() ] = aDlg->getCustomMarkerMap();
|
||||
|
||||
VTK::MarkerType aMarkerTypeNew = aDlg->getMarkerType();
|
||||
VTK::MarkerScale aMarkerScaleNew = aDlg->getStandardMarkerScale();
|
||||
int aMarkerTextureNew = aDlg->getCustomMarkerID();
|
||||
if( aMarkerTypeNew != VTK::MT_USER )
|
||||
anActor->SetMarkerStd( aMarkerTypeNew, aMarkerScaleNew );
|
||||
else {
|
||||
const VTK::MarkerMap& aMarkerMap = theMarkerMap[ aStudy->StudyId() ];
|
||||
VTK::MarkerMap::const_iterator anIter = aMarkerMap.find( aMarkerTextureNew );
|
||||
if( anIter != aMarkerMap.end() )
|
||||
anActor->SetMarkerTexture( aMarkerTextureNew, anIter->second.second );
|
||||
}
|
||||
|
||||
SMESH::SMESH_GroupBase_var aGroupObject = SMESH::IObjectToInterface<SMESH::SMESH_GroupBase>(IObject);
|
||||
if( !aGroupObject->_is_nil() )
|
||||
{
|
||||
@ -1618,13 +1641,13 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
|
||||
case 213: // Nodes
|
||||
case 212: // Nodes
|
||||
case 211: // Nodes
|
||||
::SetDisplayMode(theCommandID);
|
||||
::SetDisplayMode(theCommandID, myMarkerMap);
|
||||
break;
|
||||
|
||||
//2D quadratic representation
|
||||
case 231:
|
||||
case 232:
|
||||
::SetDisplayMode(theCommandID);
|
||||
::SetDisplayMode(theCommandID, myMarkerMap);
|
||||
break;
|
||||
|
||||
// Display Entity
|
||||
@ -3797,13 +3820,34 @@ void SMESHGUI::createPreferences()
|
||||
// Mesh tab ------------------------------------------------------------------------
|
||||
int meshTab = addPreference( tr( "PREF_TAB_MESH" ) );
|
||||
int nodeGroup = addPreference( tr( "PREF_GROUP_NODES" ), meshTab );
|
||||
setPreferenceProperty( nodeGroup, "columns", 2 );
|
||||
setPreferenceProperty( nodeGroup, "columns", 3 );
|
||||
|
||||
addPreference( tr( "PREF_COLOR" ), nodeGroup, LightApp_Preferences::Color, "SMESH", "node_color" );
|
||||
int nodeSz = addPreference( tr( "PREF_SIZE" ), nodeGroup, LightApp_Preferences::IntSpin, "SMESH", "node_size" );
|
||||
|
||||
setPreferenceProperty( nodeSz, "min", 1 );
|
||||
setPreferenceProperty( nodeSz, "max", 5 );
|
||||
int typeOfMarker = addPreference( tr( "PREF_TYPE_OF_MARKER" ), nodeGroup, LightApp_Preferences::Selector, "SMESH", "type_of_marker" );
|
||||
|
||||
SUIT_ResourceMgr* aResourceMgr = SMESH::GetResourceMgr(this);
|
||||
QList<QVariant> aMarkerTypeIndicesList;
|
||||
QList<QVariant> aMarkerTypeIconsList;
|
||||
for ( int i = VTK::MT_POINT; i < VTK::MT_USER; i++ ) {
|
||||
QString icoFile = QString( "ICON_VERTEX_MARKER_%1" ).arg( i );
|
||||
QPixmap pixmap = aResourceMgr->loadPixmap( "VTKViewer", tr( qPrintable( icoFile ) ) );
|
||||
aMarkerTypeIndicesList << i;
|
||||
aMarkerTypeIconsList << pixmap;
|
||||
}
|
||||
setPreferenceProperty( typeOfMarker, "indexes", aMarkerTypeIndicesList );
|
||||
setPreferenceProperty( typeOfMarker, "icons", aMarkerTypeIconsList );
|
||||
|
||||
int markerScale = addPreference( tr( "PREF_MARKER_SCALE" ), nodeGroup, LightApp_Preferences::Selector, "SMESH", "marker_scale" );
|
||||
|
||||
QList<QVariant> aMarkerScaleIndicesList;
|
||||
QStringList aMarkerScaleValuesList;
|
||||
for ( int i = VTK::MS_10; i <= VTK::MS_70; i++ ) {
|
||||
aMarkerScaleIndicesList << i;
|
||||
aMarkerScaleValuesList << QString::number( (i-(int)VTK::MS_10)*0.5 + 1.0 );
|
||||
}
|
||||
setPreferenceProperty( markerScale, "strings", aMarkerScaleValuesList );
|
||||
setPreferenceProperty( markerScale, "indexes", aMarkerScaleIndicesList );
|
||||
|
||||
int elemGroup = addPreference( tr( "PREF_GROUP_ELEMENTS" ), meshTab );
|
||||
setPreferenceProperty( elemGroup, "columns", 2 );
|
||||
@ -4213,6 +4257,7 @@ SALOMEDS::Color SMESHGUI::getUniqueColor( const QList<SALOMEDS::Color>& theReser
|
||||
|
||||
const char gSeparator = '_'; // character used to separate parameter names
|
||||
const char gDigitsSep = ':'; // character used to separate numeric parameter values (color = r:g:b)
|
||||
const char gPathSep = '|'; // character used to separate paths
|
||||
|
||||
/*!
|
||||
* \brief Store visual parameters
|
||||
@ -4238,6 +4283,39 @@ void SMESHGUI::storeVisualParameters (int savePoint)
|
||||
savePoint);
|
||||
_PTR(IParameters) ip = ClientFactory::getIParameters(ap);
|
||||
|
||||
// store map of custom markers
|
||||
const VTK::MarkerMap& aMarkerMap = myMarkerMap[ studyDS->StudyId() ];
|
||||
if( !aMarkerMap.empty() )
|
||||
{
|
||||
VTK::MarkerMap::const_iterator anIter = aMarkerMap.begin();
|
||||
for( ; anIter != aMarkerMap.end(); anIter++ )
|
||||
{
|
||||
int anId = anIter->first;
|
||||
VTK::MarkerData aMarkerData = anIter->second;
|
||||
std::string aMarkerFileName = aMarkerData.first;
|
||||
VTK::MarkerTexture aMarkerTexture = aMarkerData.second;
|
||||
if( aMarkerTexture.size() < 3 )
|
||||
continue; // should contain at least width, height and the first value
|
||||
|
||||
QString aPropertyName( "texture" );
|
||||
aPropertyName += gSeparator;
|
||||
aPropertyName += QString::number( anId );
|
||||
|
||||
QString aPropertyValue = aMarkerFileName.c_str();
|
||||
aPropertyValue += gPathSep;
|
||||
|
||||
VTK::MarkerTexture::const_iterator aTextureIter = aMarkerTexture.begin();
|
||||
ushort aWidth = *aTextureIter++;
|
||||
ushort aHeight = *aTextureIter++;
|
||||
aPropertyValue += QString::number( aWidth ); aPropertyValue += gDigitsSep;
|
||||
aPropertyValue += QString::number( aHeight ); aPropertyValue += gDigitsSep;
|
||||
for( ; aTextureIter != aMarkerTexture.end(); aTextureIter++ )
|
||||
aPropertyValue += QString::number( *aTextureIter );
|
||||
|
||||
ip->setProperty( aPropertyName.toStdString(), aPropertyValue.toStdString() );
|
||||
}
|
||||
}
|
||||
|
||||
// viewers counters are used for storing view_numbers in IParameters
|
||||
int vtkViewers = 0;
|
||||
|
||||
@ -4345,14 +4423,32 @@ void SMESHGUI::storeVisualParameters (int savePoint)
|
||||
// Sizes of lines and points
|
||||
QString sizeStr ("line");
|
||||
sizeStr += gDigitsSep; sizeStr += QString::number((int)aSmeshActor->GetLineWidth());
|
||||
sizeStr += gDigitsSep; sizeStr += "node";
|
||||
sizeStr += gDigitsSep; sizeStr += QString::number((int)aSmeshActor->GetNodeSize());
|
||||
sizeStr += gDigitsSep; sizeStr += "shrink";
|
||||
sizeStr += gDigitsSep; sizeStr += QString::number(aSmeshActor->GetShrinkFactor());
|
||||
|
||||
param = vtkParam + "Sizes";
|
||||
ip->setParameter(entry, param, sizeStr.toLatin1().data());
|
||||
|
||||
// Point marker
|
||||
QString markerStr;
|
||||
|
||||
VTK::MarkerType aMarkerType = aSmeshActor->GetMarkerType();
|
||||
if( aMarkerType == VTK::MT_USER ) {
|
||||
markerStr += "custom";
|
||||
markerStr += gDigitsSep;
|
||||
markerStr += QString::number( aSmeshActor->GetMarkerTexture() );
|
||||
}
|
||||
else {
|
||||
markerStr += "std";
|
||||
markerStr += gDigitsSep;
|
||||
markerStr += QString::number( (int)aMarkerType );
|
||||
markerStr += gDigitsSep;
|
||||
markerStr += QString::number( (int)aSmeshActor->GetMarkerScale() );
|
||||
}
|
||||
|
||||
param = vtkParam + "PointMarker";
|
||||
ip->setParameter(entry, param, markerStr.toLatin1().data());
|
||||
|
||||
// Opacity
|
||||
param = vtkParam + "Opacity";
|
||||
ip->setParameter(entry, param,
|
||||
@ -4411,6 +4507,63 @@ void SMESHGUI::restoreVisualParameters (int savePoint)
|
||||
savePoint);
|
||||
_PTR(IParameters) ip = ClientFactory::getIParameters(ap);
|
||||
|
||||
// restore map of custom markers
|
||||
VTK::MarkerMap& aMarkerMap = myMarkerMap[ studyDS->StudyId() ];
|
||||
|
||||
std::vector<std::string> properties = ip->getProperties();
|
||||
for (std::vector<std::string>::iterator propIt = properties.begin(); propIt != properties.end(); ++propIt)
|
||||
{
|
||||
std::string property = *propIt;
|
||||
QString aPropertyName( property.c_str() );
|
||||
QString aPropertyValue( ip->getProperty( property ).c_str() );
|
||||
|
||||
QStringList aPropertyNameList = aPropertyName.split( gSeparator, QString::SkipEmptyParts );
|
||||
if( aPropertyNameList.size() != 2 )
|
||||
continue;
|
||||
|
||||
int anId = 0;
|
||||
bool ok = false;
|
||||
if( aPropertyNameList[0] == "texture" )
|
||||
anId = aPropertyNameList[1].toInt( &ok );
|
||||
|
||||
if( !ok || anId < 1 )
|
||||
continue;
|
||||
|
||||
QStringList aPropertyValueList = aPropertyValue.split( gPathSep, QString::SkipEmptyParts );
|
||||
if( aPropertyValueList.size() != 2 )
|
||||
continue;
|
||||
|
||||
std::string aMarkerFileName = aPropertyValueList[0].toStdString();
|
||||
QString aMarkerTextureString = aPropertyValueList[1];
|
||||
QStringList aMarkerTextureStringList = aMarkerTextureString.split( gDigitsSep, QString::SkipEmptyParts );
|
||||
if( aMarkerTextureStringList.size() != 3 )
|
||||
continue;
|
||||
|
||||
ok = false;
|
||||
ushort aWidth = aMarkerTextureStringList[0].toUShort( &ok );
|
||||
if( !ok )
|
||||
continue;
|
||||
|
||||
ok = false;
|
||||
ushort aHeight = aMarkerTextureStringList[1].toUShort( &ok );
|
||||
if( !ok )
|
||||
continue;
|
||||
|
||||
VTK::MarkerTexture aMarkerTexture;
|
||||
aMarkerTexture.push_back( aWidth );
|
||||
aMarkerTexture.push_back( aHeight );
|
||||
|
||||
QString aMarkerTextureData = aMarkerTextureStringList[2];
|
||||
for( int i = 0, n = aMarkerTextureData.length(); i < n; i++ )
|
||||
{
|
||||
QChar aChar = aMarkerTextureData.at( i );
|
||||
if( aChar.isDigit() )
|
||||
aMarkerTexture.push_back( aChar.digitValue() );
|
||||
}
|
||||
|
||||
aMarkerMap[ anId ] = VTK::MarkerData( aMarkerFileName, aMarkerTexture );
|
||||
}
|
||||
|
||||
std::vector<std::string> entries = ip->getEntries();
|
||||
|
||||
for (std::vector<std::string>::iterator entIt = entries.begin(); entIt != entries.end(); ++entIt)
|
||||
@ -4557,18 +4710,49 @@ void SMESHGUI::restoreVisualParameters (int savePoint)
|
||||
// Sizes of lines and points
|
||||
else if (paramNameStr == "Sizes") {
|
||||
QStringList sizes = val.split(gDigitsSep, QString::SkipEmptyParts);
|
||||
if (sizes.count() == 6) {
|
||||
if (sizes.count() == 4) {
|
||||
if (sizes[0] != "line" || sizes[2] != "shrink") {
|
||||
MESSAGE("Invalid order of data in Sizes, must be: "
|
||||
"line:int:shrink:float");
|
||||
}
|
||||
else {
|
||||
aSmeshActor->SetLineWidth(sizes[1].toInt());
|
||||
aSmeshActor->SetShrinkFactor(sizes[3].toFloat());
|
||||
}
|
||||
}
|
||||
else if (sizes.count() == 6) { // just to support old format
|
||||
if (sizes[0] != "line" || sizes[2] != "node" || sizes[4] != "shrink") {
|
||||
MESSAGE("Invalid order of data in Sizes, must be: "
|
||||
"line:int:node:int:shrink:float");
|
||||
}
|
||||
else {
|
||||
aSmeshActor->SetLineWidth(sizes[1].toInt());
|
||||
aSmeshActor->SetNodeSize(sizes[3].toInt());
|
||||
//aSmeshActor->SetNodeSize(sizes[3].toInt()); // made obsolete
|
||||
aSmeshActor->SetShrinkFactor(sizes[5].toFloat());
|
||||
}
|
||||
}
|
||||
}
|
||||
// Point marker
|
||||
else if (paramNameStr == "PointMarker") {
|
||||
QStringList data = val.split(gDigitsSep, QString::SkipEmptyParts);
|
||||
if( data.count() >= 2 ) {
|
||||
bool ok = false;
|
||||
int aParam1 = data[1].toInt( &ok );
|
||||
if( ok ) {
|
||||
if( data[0] == "std" && data.count() == 3 ) {
|
||||
int aParam2 = data[2].toInt( &ok );
|
||||
aSmeshActor->SetMarkerStd( (VTK::MarkerType)aParam1, (VTK::MarkerScale)aParam2 );
|
||||
}
|
||||
else if( data[0] == "custom" ) {
|
||||
VTK::MarkerMap::const_iterator markerIt = aMarkerMap.find( aParam1 );
|
||||
if( markerIt != aMarkerMap.end() ) {
|
||||
VTK::MarkerData aMarkerData = markerIt->second;
|
||||
aSmeshActor->SetMarkerTexture( aParam1, aMarkerData.second );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Opacity
|
||||
else if (paramNameStr == "Opacity") {
|
||||
aSmeshActor->SetOpacity(val.toFloat());
|
||||
|
@ -31,6 +31,7 @@
|
||||
|
||||
// SALOME GUI includes
|
||||
#include <SalomeApp_Module.h>
|
||||
#include <VTKViewer_MarkerDef.h>
|
||||
#include <SALOME_InteractiveObject.hxx>
|
||||
|
||||
// IDL includes
|
||||
@ -52,6 +53,8 @@ class LightApp_SelectionMgr;
|
||||
|
||||
class SMESHGUI_FilterLibraryDlg;
|
||||
|
||||
typedef std::map<int, VTK::MarkerMap> SMESHGUI_StudyId2MarkerMap;
|
||||
|
||||
//=================================================================================
|
||||
// class : SMESHGUI
|
||||
// purpose :
|
||||
@ -166,6 +169,8 @@ private :
|
||||
LightApp_Displayer* myDisplayer;
|
||||
|
||||
SMESHGUI_FilterLibraryDlg* myFilterLibraryDlg;
|
||||
|
||||
SMESHGUI_StudyId2MarkerMap myMarkerMap;
|
||||
};
|
||||
|
||||
#endif // SMESHGUI_H
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include <QtxColorButton.h>
|
||||
#include <QtxDoubleSpinBox.h>
|
||||
#include <QtxIntSpinBox.h>
|
||||
#include <VTKViewer_MarkerWidget.h>
|
||||
|
||||
// Qt includes
|
||||
#include <QGroupBox>
|
||||
@ -124,24 +125,26 @@ SMESHGUI_Preferences_ColorDlg::SMESHGUI_Preferences_ColorDlg( SMESHGUI* theModul
|
||||
|
||||
// -------------------------------
|
||||
QGroupBox* ButtonGroup2 = new QGroupBox( tr( "Nodes" ), this );
|
||||
QHBoxLayout* ButtonGroup2Layout = new QHBoxLayout( ButtonGroup2 );
|
||||
QGridLayout* ButtonGroup2Layout = new QGridLayout( ButtonGroup2 );
|
||||
ButtonGroup2Layout->setSpacing( SPACING );
|
||||
ButtonGroup2Layout->setMargin( MARGIN );
|
||||
|
||||
QLabel* TextLabel_Nodes_Color = new QLabel( tr( "Color" ), ButtonGroup2 );
|
||||
btnNodeColor = new QtxColorButton( ButtonGroup2 );
|
||||
|
||||
QLabel* TextLabel_Nodes_Size = new QLabel( tr( "Size" ), ButtonGroup2 );
|
||||
SpinBox_Nodes_Size = new QSpinBox( ButtonGroup2 );
|
||||
SpinBox_Nodes_Size->setRange( 0, 5 );
|
||||
SpinBox_Nodes_Size->setSingleStep( 1 );
|
||||
SpinBox_Nodes_Size->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
|
||||
SpinBox_Nodes_Size->setButtonSymbols( QSpinBox::PlusMinus );
|
||||
QGroupBox* MarkerGroup = new QGroupBox( tr( "Marker" ), ButtonGroup2 );
|
||||
QVBoxLayout* MarkerGroupLayout = new QVBoxLayout( MarkerGroup );
|
||||
MarkerGroupLayout->setSpacing( 0 );
|
||||
MarkerGroupLayout->setMargin( 0 );
|
||||
|
||||
ButtonGroup2Layout->addWidget( TextLabel_Nodes_Color );
|
||||
ButtonGroup2Layout->addWidget( btnNodeColor );
|
||||
ButtonGroup2Layout->addWidget( TextLabel_Nodes_Size );
|
||||
ButtonGroup2Layout->addWidget( SpinBox_Nodes_Size );
|
||||
MarkerWidget = new VTKViewer_MarkerWidget( MarkerGroup );
|
||||
|
||||
MarkerGroupLayout->addWidget( MarkerWidget );
|
||||
|
||||
ButtonGroup2Layout->addWidget( TextLabel_Nodes_Color, 0, 0 );
|
||||
ButtonGroup2Layout->addWidget( btnNodeColor, 0, 1 );
|
||||
ButtonGroup2Layout->addWidget( MarkerGroup, 1, 0, 1, 3 );
|
||||
ButtonGroup2Layout->setColumnStretch( 2, 1 );
|
||||
|
||||
// -------------------------------
|
||||
QGroupBox* ButtonGroup3 = new QGroupBox( tr( "Orientation of faces" ), this );
|
||||
@ -304,9 +307,8 @@ void SMESHGUI_Preferences_ColorDlg::SetIntValue( int type, int value )
|
||||
{
|
||||
switch ( type ) {
|
||||
case 1 : SpinBox_Width->setValue( value ); break; // width
|
||||
case 2 : SpinBox_Nodes_Size->setValue( value ); break; // nodes size = value; break;
|
||||
case 3 : SpinBox_Shrink->setValue( value ); break; // shrink coeff
|
||||
case 4 : SpinBox_0DElements_Size->setValue( value ); break; // 0d elements
|
||||
case 2 : SpinBox_Shrink->setValue( value ); break; // shrink coeff
|
||||
case 3 : SpinBox_0DElements_Size->setValue( value ); break; // 0d elements
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
@ -320,9 +322,8 @@ int SMESHGUI_Preferences_ColorDlg::GetIntValue( int type )
|
||||
int res = 0;
|
||||
switch ( type ) {
|
||||
case 1 : res = SpinBox_Width->value(); break; // width
|
||||
case 2 : res = SpinBox_Nodes_Size->value(); break; // nodes size
|
||||
case 3 : res = SpinBox_Shrink->value(); break; // shrink coeff
|
||||
case 4 : res = SpinBox_0DElements_Size->value(); break; // 0d elements
|
||||
case 2 : res = SpinBox_Shrink->value(); break; // shrink coeff
|
||||
case 3 : res = SpinBox_0DElements_Size->value(); break; // 0d elements
|
||||
default: break;
|
||||
}
|
||||
return res;
|
||||
@ -379,3 +380,67 @@ bool SMESHGUI_Preferences_ColorDlg::GetBooleanValue( int type )
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : setCustomMarkerMap()
|
||||
// purpose :
|
||||
//=================================================================================
|
||||
void SMESHGUI_Preferences_ColorDlg::setCustomMarkerMap( VTK::MarkerMap theMarkerMap )
|
||||
{
|
||||
MarkerWidget->setCustomMarkerMap( theMarkerMap );
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : getCustomMarkerMap()
|
||||
// purpose :
|
||||
//=================================================================================
|
||||
VTK::MarkerMap SMESHGUI_Preferences_ColorDlg::getCustomMarkerMap()
|
||||
{
|
||||
return MarkerWidget->getCustomMarkerMap();
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : setStandardMarker()
|
||||
// purpose :
|
||||
//=================================================================================
|
||||
void SMESHGUI_Preferences_ColorDlg::setStandardMarker( VTK::MarkerType theMarkerType,
|
||||
VTK::MarkerScale theMarkerScale )
|
||||
{
|
||||
MarkerWidget->setStandardMarker( theMarkerType, theMarkerScale );
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : setCustomMarker()
|
||||
// purpose :
|
||||
//=================================================================================
|
||||
void SMESHGUI_Preferences_ColorDlg::setCustomMarker( int theId )
|
||||
{
|
||||
MarkerWidget->setCustomMarker( theId );
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : getMarkerType()
|
||||
// purpose :
|
||||
//=================================================================================
|
||||
VTK::MarkerType SMESHGUI_Preferences_ColorDlg::getMarkerType() const
|
||||
{
|
||||
return MarkerWidget->getMarkerType();
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : getStandardMarkerScale()
|
||||
// purpose :
|
||||
//=================================================================================
|
||||
VTK::MarkerScale SMESHGUI_Preferences_ColorDlg::getStandardMarkerScale() const
|
||||
{
|
||||
return MarkerWidget->getStandardMarkerScale();
|
||||
}
|
||||
|
||||
//=================================================================================
|
||||
// function : getCustomMarkerID()
|
||||
// purpose :
|
||||
//=================================================================================
|
||||
int SMESHGUI_Preferences_ColorDlg::getCustomMarkerID() const
|
||||
{
|
||||
return MarkerWidget->getCustomMarkerID();
|
||||
}
|
||||
|
@ -29,6 +29,9 @@
|
||||
// SMESH includes
|
||||
#include "SMESH_SMESHGUI.hxx"
|
||||
|
||||
// SALOME GUI includes
|
||||
#include <VTKViewer_MarkerDef.h>
|
||||
|
||||
// Qt includes
|
||||
#include <QDialog>
|
||||
|
||||
@ -38,6 +41,7 @@ class SMESHGUI;
|
||||
class QtxDoubleSpinBox;
|
||||
class QtxIntSpinBox;
|
||||
class QtxColorButton;
|
||||
class VTKViewer_MarkerWidget;
|
||||
|
||||
class SMESHGUI_EXPORT SMESHGUI_Preferences_ColorDlg : public QDialog
|
||||
{
|
||||
@ -56,6 +60,15 @@ public:
|
||||
void SetBooleanValue( int, bool );
|
||||
bool GetBooleanValue( int );
|
||||
|
||||
void setCustomMarkerMap( VTK::MarkerMap );
|
||||
VTK::MarkerMap getCustomMarkerMap();
|
||||
|
||||
void setStandardMarker( VTK::MarkerType, VTK::MarkerScale );
|
||||
void setCustomMarker( int );
|
||||
VTK::MarkerType getMarkerType() const;
|
||||
VTK::MarkerScale getStandardMarkerScale() const;
|
||||
int getCustomMarkerID() const;
|
||||
|
||||
protected:
|
||||
void closeEvent( QCloseEvent* );
|
||||
|
||||
@ -76,7 +89,7 @@ private:
|
||||
QSpinBox* SpinBox_Width;
|
||||
QtxIntSpinBox* SpinBox_Shrink;
|
||||
QtxColorButton* btnNodeColor;
|
||||
QSpinBox* SpinBox_Nodes_Size;
|
||||
VTKViewer_MarkerWidget* MarkerWidget;
|
||||
QtxColorButton* btnOrientationColor;
|
||||
QtxDoubleSpinBox* SpinBox_Orientation_Scale;
|
||||
QCheckBox* CheckBox_Orientation_3DVectors;
|
||||
|
@ -822,10 +822,9 @@ namespace SMESH
|
||||
PW = mgr->integerValue( "SMESH", "highlight_width", 5 );
|
||||
|
||||
// adjust highlight_width to the width of mesh entities
|
||||
int aPointSize = mgr->integerValue("SMESH", "node_size", 3);
|
||||
int aElem0DSize = mgr->integerValue("SMESH", "elem0d_size", 5);
|
||||
int aLineWidth = mgr->integerValue("SMESH", "element_width", 1);
|
||||
int maxSize = aPointSize;
|
||||
int maxSize = aElem0DSize;
|
||||
if (aElem0DSize > maxSize) maxSize = aElem0DSize;
|
||||
if (aLineWidth > maxSize) maxSize = aLineWidth;
|
||||
if (PW < maxSize + 2) PW = maxSize + 2;
|
||||
|
@ -3278,6 +3278,10 @@ Please, create VTK viewer and try again</translation>
|
||||
<source>PREF_LABELS_COLOR</source>
|
||||
<translation>Labels color</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_MARKER_SCALE</source>
|
||||
<translation>Scale of marker</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_NODES</source>
|
||||
<translation>Nodes</translation>
|
||||
@ -3310,10 +3314,6 @@ Please, create VTK viewer and try again</translation>
|
||||
<source>PREF_SHRINK_COEFF</source>
|
||||
<translation>Shrink coef.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_SIZE</source>
|
||||
<translation>Size</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_TAB_GENERAL</source>
|
||||
<translation>General</translation>
|
||||
@ -3330,6 +3330,10 @@ Please, create VTK viewer and try again</translation>
|
||||
<source>PREF_TITLE_COLOR</source>
|
||||
<translation>Title color</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_TYPE_OF_MARKER</source>
|
||||
<translation>Type of marker</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PREF_COLOR_0D</source>
|
||||
<translation>0D elements</translation>
|
||||
|
Loading…
Reference in New Issue
Block a user