mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-26 23:10:34 +05:00
23303: [EDF 12024] Filter for nodes connectivity
This commit is contained in:
parent
b73aa314d8
commit
5c5e1f2368
@ -98,6 +98,7 @@ SET(GOOD_TESTS
|
|||||||
filters_ex37.py
|
filters_ex37.py
|
||||||
filters_ex38.py
|
filters_ex38.py
|
||||||
filters_ex39.py
|
filters_ex39.py
|
||||||
|
filters_node_nb_conn.py
|
||||||
filters_belong2group.py
|
filters_belong2group.py
|
||||||
grouping_elements_ex01.py
|
grouping_elements_ex01.py
|
||||||
grouping_elements_ex02.py
|
grouping_elements_ex02.py
|
||||||
|
9
doc/salome/examples/filters_node_nb_conn.py
Normal file
9
doc/salome/examples/filters_node_nb_conn.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# Number of connectivities of a node
|
||||||
|
|
||||||
|
# create a mesh
|
||||||
|
from SMESH_mechanic import *
|
||||||
|
|
||||||
|
# get nodes connected to more than 6 tetrahedra
|
||||||
|
conn_nb_filter = smesh.GetFilter(SMESH.NODE, SMESH.FT_NodeConnectivityNumber,'>', 6 )
|
||||||
|
ids = mesh.GetIdsFromFilter( conn_nb_filter )
|
||||||
|
print "Number of nodes connected to more than 6 tetrahedra:", len(ids)
|
Binary file not shown.
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 42 KiB |
@ -7,7 +7,7 @@ The user can obtain information about the selected mesh object
|
|||||||
|
|
||||||
To view the <b>Mesh Information</b>, select your mesh, sub-mesh or
|
To view the <b>Mesh Information</b>, select your mesh, sub-mesh or
|
||||||
group in the <b>Object Browser</b> and invoke <b>Mesh Information</b>
|
group in the <b>Object Browser</b> and invoke <b>Mesh Information</b>
|
||||||
item from the \b Mesh menu or click <em>"Mesh Information"</em> button
|
item from the \b Mesh menu or from the context menu, or click <em>"Mesh Information"</em> button
|
||||||
in the toolbar.
|
in the toolbar.
|
||||||
|
|
||||||
<center>\image html image49.png
|
<center>\image html image49.png
|
||||||
@ -60,7 +60,7 @@ information about the selected mesh node(s) or element(s), namely:
|
|||||||
- Gravity center (X, Y, Z coordinates);
|
- Gravity center (X, Y, Z coordinates);
|
||||||
- Connectivity information (connected nodes); double click in
|
- Connectivity information (connected nodes); double click in
|
||||||
a line of a node reveals the information about this node;
|
a line of a node reveals the information about this node;
|
||||||
- Quality controls (area, aspect ration, volume, etc.);
|
- Quality controls (area, aspect ratio, volume, etc.);
|
||||||
- Position on a shape (for meshes built on a geometry);
|
- Position on a shape (for meshes built on a geometry);
|
||||||
- Groups information (names of groups the element belongs to).
|
- Groups information (names of groups the element belongs to).
|
||||||
|
|
||||||
@ -132,6 +132,7 @@ The <b>Quality Info</b> tab provides overall information about mesh quality cont
|
|||||||
- Name;
|
- Name;
|
||||||
- Nodes information:
|
- Nodes information:
|
||||||
- Number of free nodes;
|
- Number of free nodes;
|
||||||
|
- Maximal number of elements connected to a node;
|
||||||
- Number of double nodes;
|
- Number of double nodes;
|
||||||
- Edges information:
|
- Edges information:
|
||||||
- Number of double edges;
|
- Number of double edges;
|
||||||
@ -161,9 +162,6 @@ via the "Mesh information" preferences (zero value means that there is no limit)
|
|||||||
The button \b "Dump" allows printing the information displayed in the
|
The button \b "Dump" allows printing the information displayed in the
|
||||||
dialog box to a .txt file.
|
dialog box to a .txt file.
|
||||||
|
|
||||||
In case you get <b>Mesh Information</b> via a TUI script, the information is
|
|
||||||
displayed in the Python Console.
|
|
||||||
|
|
||||||
See the \ref tui_viewing_mesh_infos "TUI Example".
|
See the \ref tui_viewing_mesh_infos "TUI Example".
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
@ -144,6 +144,10 @@ The following criteria allow selecting mesh <b>Nodes</b>:
|
|||||||
<b>Double nodes</b> selects a node coincident with other nodes
|
<b>Double nodes</b> selects a node coincident with other nodes
|
||||||
(within a given <b>Tolerance</b>).
|
(within a given <b>Tolerance</b>).
|
||||||
See also \ref tui_double_nodes_control "Double Nodes quality control".
|
See also \ref tui_double_nodes_control "Double Nodes quality control".
|
||||||
|
</li><li>
|
||||||
|
<b>Connectivity number</b> selects nodes with a number of connected
|
||||||
|
elements, which is more, less or equal to the predefined <b>Threshold
|
||||||
|
Value</b>. Elements of the highest dimension are countered only.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
@ -209,6 +209,16 @@ filters mesh nodes which are coincident with other nodes (within a given toleran
|
|||||||
\tui_script{filters_ex17.py}
|
\tui_script{filters_ex17.py}
|
||||||
|
|
||||||
|
|
||||||
|
\section filter_node_nb_conn Node connectivity number
|
||||||
|
|
||||||
|
filters nodes according to a number of elements of highest dimension connected to a node:
|
||||||
|
- element type should be \a SMESH.NODE
|
||||||
|
- functor type should be \a SMESH.FT_NodeConnectivityNumber
|
||||||
|
- threshold is an integer value (number of elements)
|
||||||
|
|
||||||
|
\tui_script{filters_node_nb_conn.py}
|
||||||
|
|
||||||
|
|
||||||
\section filter_borders_multiconnection Borders at multi-connection
|
\section filter_borders_multiconnection Borders at multi-connection
|
||||||
|
|
||||||
filters 1D mesh elements (segments) according to the specified number of
|
filters 1D mesh elements (segments) according to the specified number of
|
||||||
|
@ -61,6 +61,7 @@ module SMESH
|
|||||||
FT_MultiConnection2D,
|
FT_MultiConnection2D,
|
||||||
FT_Length,
|
FT_Length,
|
||||||
FT_Length2D,
|
FT_Length2D,
|
||||||
|
FT_NodeConnectivityNumber,
|
||||||
FT_BelongToMeshGroup,
|
FT_BelongToMeshGroup,
|
||||||
FT_BelongToGeom,
|
FT_BelongToGeom,
|
||||||
FT_BelongToPlane,
|
FT_BelongToPlane,
|
||||||
@ -162,6 +163,7 @@ module SMESH
|
|||||||
Values GetValues();
|
Values GetValues();
|
||||||
};
|
};
|
||||||
interface BallDiameter : NumericalFunctor{};
|
interface BallDiameter : NumericalFunctor{};
|
||||||
|
interface NodeConnectivityNumber : NumericalFunctor{};
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -586,6 +588,7 @@ module SMESH
|
|||||||
MultiConnection CreateMultiConnection();
|
MultiConnection CreateMultiConnection();
|
||||||
MultiConnection2D CreateMultiConnection2D();
|
MultiConnection2D CreateMultiConnection2D();
|
||||||
BallDiameter CreateBallDiameter();
|
BallDiameter CreateBallDiameter();
|
||||||
|
NodeConnectivityNumber CreateNodeConnectivityNumber();
|
||||||
/*!
|
/*!
|
||||||
* Create logical functors ( predicates )
|
* Create logical functors ( predicates )
|
||||||
*/
|
*/
|
||||||
|
@ -2116,6 +2116,42 @@ SMDSAbs_ElementType BallDiameter::GetType() const
|
|||||||
return SMDSAbs_Ball;
|
return SMDSAbs_Ball;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*
|
||||||
|
Class : NodeConnectivityNumber
|
||||||
|
Description : Functor returning number of elements connected to a node
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
|
double NodeConnectivityNumber::GetValue( long theId )
|
||||||
|
{
|
||||||
|
double nb = 0;
|
||||||
|
|
||||||
|
if ( const SMDS_MeshNode* node = myMesh->FindNode( theId ))
|
||||||
|
{
|
||||||
|
SMDSAbs_ElementType type;
|
||||||
|
if ( myMesh->NbVolumes() > 0 )
|
||||||
|
type = SMDSAbs_Volume;
|
||||||
|
else if ( myMesh->NbFaces() > 0 )
|
||||||
|
type = SMDSAbs_Face;
|
||||||
|
else if ( myMesh->NbEdges() > 0 )
|
||||||
|
type = SMDSAbs_Edge;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
nb = node->NbInverseElements( type );
|
||||||
|
}
|
||||||
|
return nb;
|
||||||
|
}
|
||||||
|
|
||||||
|
double NodeConnectivityNumber::GetBadRate( double Value, int /*nbNodes*/ ) const
|
||||||
|
{
|
||||||
|
return Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType NodeConnectivityNumber::GetType() const
|
||||||
|
{
|
||||||
|
return SMDSAbs_Node;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
PREDICATES
|
PREDICATES
|
||||||
|
@ -351,6 +351,17 @@ namespace SMESH{
|
|||||||
virtual SMDSAbs_ElementType GetType() const;
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : NodeConnectivityNumber
|
||||||
|
Description : Functor returning number of elements connected to a node
|
||||||
|
*/
|
||||||
|
class SMESHCONTROLS_EXPORT NodeConnectivityNumber: public virtual NumericalFunctor{
|
||||||
|
public:
|
||||||
|
virtual double GetValue( long theNodeId );
|
||||||
|
virtual double GetBadRate( double Value, int nbNodes ) const;
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
PREDICATES
|
PREDICATES
|
||||||
|
@ -694,7 +694,8 @@ void SMESH_ActorDef::SetCellsFontProperties( SMESH::LabelFont theFamily, int the
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SMESH_ActorDef::GetPointsLabeled() {
|
bool SMESH_ActorDef::GetPointsLabeled()
|
||||||
|
{
|
||||||
return myNodeActor && myNodeActor->GetPointsLabeled();
|
return myNodeActor && myNodeActor->GetPointsLabeled();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -719,7 +720,8 @@ void SMESH_ActorDef::SetCellsLabeled(bool theIsCellsLabeled)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SMESH_ActorDef::GetCellsLabeled() {
|
bool SMESH_ActorDef::GetCellsLabeled()
|
||||||
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
if(my3DActor)
|
if(my3DActor)
|
||||||
result = result || my3DActor->GetCellsLabeled();
|
result = result || my3DActor->GetCellsLabeled();
|
||||||
@ -789,17 +791,13 @@ bool SMESH_ActorDef::GetFacesOrientation3DVectors()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void SMESH_ActorDef::SetControlMode(eControl theMode)
|
||||||
SMESH_ActorDef::
|
|
||||||
SetControlMode(eControl theMode)
|
|
||||||
{
|
{
|
||||||
SetControlMode(theMode,true);
|
SetControlMode(theMode,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void SMESH_ActorDef::SetControlMode( eControl theMode, bool theCheckEntityMode )
|
||||||
SMESH_ActorDef::
|
|
||||||
SetControlMode( eControl theMode, bool theCheckEntityMode )
|
|
||||||
{
|
{
|
||||||
vtkLookupTable* lookupTable = static_cast<vtkLookupTable*>(myScalarBarActor->GetLookupTable());
|
vtkLookupTable* lookupTable = static_cast<vtkLookupTable*>(myScalarBarActor->GetLookupTable());
|
||||||
bool isLogarithmic = lookupTable->GetScale() == VTK_SCALE_LOG10;
|
bool isLogarithmic = lookupTable->GetScale() == VTK_SCALE_LOG10;
|
||||||
@ -982,6 +980,12 @@ SetControlMode( eControl theMode, bool theCheckEntityMode )
|
|||||||
myControlActor = my2DActor;
|
myControlActor = my2DActor;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case eNodeConnectivityNb:
|
||||||
|
{
|
||||||
|
myFunctor.reset( new SMESH::Controls::NodeConnectivityNumber() );
|
||||||
|
myControlActor = myNodeActor;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -989,7 +993,7 @@ SetControlMode( eControl theMode, bool theCheckEntityMode )
|
|||||||
vtkUnstructuredGrid* aGrid = myControlActor->GetUnstructuredGrid();
|
vtkUnstructuredGrid* aGrid = myControlActor->GetUnstructuredGrid();
|
||||||
vtkIdType aNbCells = aGrid->GetNumberOfCells();
|
vtkIdType aNbCells = aGrid->GetNumberOfCells();
|
||||||
bool aShowOnlyScalarBarTitle = false;
|
bool aShowOnlyScalarBarTitle = false;
|
||||||
if(aNbCells){
|
if(aNbCells) {
|
||||||
myControlMode = theMode;
|
myControlMode = theMode;
|
||||||
switch(myControlMode){
|
switch(myControlMode){
|
||||||
case eFreeNodes:
|
case eFreeNodes:
|
||||||
@ -1029,6 +1033,15 @@ SetControlMode( eControl theMode, bool theCheckEntityMode )
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(theCheckEntityMode) {
|
if(theCheckEntityMode) {
|
||||||
|
// if(myControlActor == myNodeActor) {
|
||||||
|
// if ( myControlMode == eNodeConnectivityNb ) {
|
||||||
|
// if (!myIsEntityModeCache){
|
||||||
|
// myEntityModeCache = GetEntityMode();
|
||||||
|
// myIsEntityModeCache=true;
|
||||||
|
// }
|
||||||
|
// SetEntityMode(0);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
if(myControlActor == my1DActor) {
|
if(myControlActor == my1DActor) {
|
||||||
if (!myIsEntityModeCache){
|
if (!myIsEntityModeCache){
|
||||||
myEntityModeCache = GetEntityMode();
|
myEntityModeCache = GetEntityMode();
|
||||||
@ -1090,9 +1103,8 @@ SetControlMode( eControl theMode, bool theCheckEntityMode )
|
|||||||
Update();
|
Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int SMESH_ActorDef::GetNumberControlEntities()
|
||||||
SMESH_ActorDef::
|
{
|
||||||
GetNumberControlEntities(){
|
|
||||||
SMESH_DeviceActor* anAct = NULL;
|
SMESH_DeviceActor* anAct = NULL;
|
||||||
switch(myControlMode){
|
switch(myControlMode){
|
||||||
case eFreeNodes:
|
case eFreeNodes:
|
||||||
@ -1115,12 +1127,13 @@ GetNumberControlEntities(){
|
|||||||
case eCoincidentElems3D:
|
case eCoincidentElems3D:
|
||||||
anAct = my3DExtActor;
|
anAct = my3DExtActor;
|
||||||
break;
|
break;
|
||||||
|
default:;
|
||||||
}
|
}
|
||||||
return (anAct) ? anAct->GetUnstructuredGrid()->GetNumberOfCells() : -1;
|
return (anAct) ? anAct->GetUnstructuredGrid()->GetNumberOfCells() : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::AddToRender(vtkRenderer* theRenderer){
|
void SMESH_ActorDef::AddToRender(vtkRenderer* theRenderer)
|
||||||
|
{
|
||||||
theRenderer->AddActor(myBaseActor);
|
theRenderer->AddActor(myBaseActor);
|
||||||
theRenderer->AddActor(myNodeExtActor);
|
theRenderer->AddActor(myNodeExtActor);
|
||||||
theRenderer->AddActor(my1DExtActor);
|
theRenderer->AddActor(my1DExtActor);
|
||||||
@ -1143,7 +1156,8 @@ void SMESH_ActorDef::AddToRender(vtkRenderer* theRenderer){
|
|||||||
SALOME_Actor::AddToRender(theRenderer);
|
SALOME_Actor::AddToRender(theRenderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::RemoveFromRender(vtkRenderer* theRenderer){
|
void SMESH_ActorDef::RemoveFromRender(vtkRenderer* theRenderer)
|
||||||
|
{
|
||||||
SALOME_Actor::RemoveFromRender(theRenderer);
|
SALOME_Actor::RemoveFromRender(theRenderer);
|
||||||
|
|
||||||
theRenderer->RemoveActor(myBaseActor);
|
theRenderer->RemoveActor(myBaseActor);
|
||||||
@ -1170,9 +1184,9 @@ void SMESH_ActorDef::RemoveFromRender(vtkRenderer* theRenderer){
|
|||||||
|
|
||||||
|
|
||||||
bool SMESH_ActorDef::Init(TVisualObjPtr theVisualObj,
|
bool SMESH_ActorDef::Init(TVisualObjPtr theVisualObj,
|
||||||
const char* theEntry,
|
const char* theEntry,
|
||||||
const char* theName,
|
const char* theName,
|
||||||
int theIsClear)
|
int theIsClear)
|
||||||
{
|
{
|
||||||
Handle(SALOME_InteractiveObject) anIO = new SALOME_InteractiveObject(theEntry,"SMESH",theName);
|
Handle(SALOME_InteractiveObject) anIO = new SALOME_InteractiveObject(theEntry,"SMESH",theName);
|
||||||
setIO(anIO);
|
setIO(anIO);
|
||||||
@ -1258,17 +1272,20 @@ bool SMESH_ActorDef::Init(TVisualObjPtr theVisualObj,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
double* SMESH_ActorDef::GetBounds(){
|
double* SMESH_ActorDef::GetBounds()
|
||||||
|
{
|
||||||
return myNodeActor->GetBounds();
|
return myNodeActor->GetBounds();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
vtkDataSet* SMESH_ActorDef::GetInput(){
|
vtkDataSet* SMESH_ActorDef::GetInput()
|
||||||
|
{
|
||||||
return GetUnstructuredGrid();
|
return GetUnstructuredGrid();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::SetTransform(VTKViewer_Transform* theTransform){
|
void SMESH_ActorDef::SetTransform(VTKViewer_Transform* theTransform)
|
||||||
|
{
|
||||||
Superclass::SetTransform(theTransform);
|
Superclass::SetTransform(theTransform);
|
||||||
|
|
||||||
myNodeActor->SetTransform(theTransform);
|
myNodeActor->SetTransform(theTransform);
|
||||||
@ -1294,27 +1311,32 @@ void SMESH_ActorDef::SetTransform(VTKViewer_Transform* theTransform){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::SetMapper(vtkMapper* theMapper){
|
void SMESH_ActorDef::SetMapper(vtkMapper* theMapper)
|
||||||
|
{
|
||||||
vtkLODActor::SetMapper(theMapper);
|
vtkLODActor::SetMapper(theMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::ShallowCopy(vtkProp *prop){
|
void SMESH_ActorDef::ShallowCopy(vtkProp *prop)
|
||||||
|
{
|
||||||
SALOME_Actor::ShallowCopy(prop);
|
SALOME_Actor::ShallowCopy(prop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
vtkMapper* SMESH_ActorDef::GetMapper(){
|
vtkMapper* SMESH_ActorDef::GetMapper()
|
||||||
|
{
|
||||||
return myPickableActor->GetMapper();
|
return myPickableActor->GetMapper();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
vtkUnstructuredGrid* SMESH_ActorDef::GetUnstructuredGrid(){
|
vtkUnstructuredGrid* SMESH_ActorDef::GetUnstructuredGrid()
|
||||||
|
{
|
||||||
return myVisualObj->GetUnstructuredGrid();
|
return myVisualObj->GetUnstructuredGrid();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SMESH_ActorDef::IsInfinitive(){
|
bool SMESH_ActorDef::IsInfinitive()
|
||||||
|
{
|
||||||
vtkDataSet *aDataSet = myPickableActor->GetUnstructuredGrid();
|
vtkDataSet *aDataSet = myPickableActor->GetUnstructuredGrid();
|
||||||
myIsInfinite = aDataSet->GetNumberOfCells() == 0 ||
|
myIsInfinite = aDataSet->GetNumberOfCells() == 0 ||
|
||||||
( aDataSet->GetNumberOfCells() == 1 &&
|
( aDataSet->GetNumberOfCells() == 1 &&
|
||||||
@ -1323,18 +1345,21 @@ bool SMESH_ActorDef::IsInfinitive(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::SetIsShrunkable(bool theShrunkable){
|
void SMESH_ActorDef::SetIsShrunkable(bool theShrunkable)
|
||||||
|
{
|
||||||
if ( myIsShrinkable == theShrunkable )
|
if ( myIsShrinkable == theShrunkable )
|
||||||
return;
|
return;
|
||||||
myIsShrinkable = theShrunkable;
|
myIsShrinkable = theShrunkable;
|
||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
double SMESH_ActorDef::GetShrinkFactor(){
|
double SMESH_ActorDef::GetShrinkFactor()
|
||||||
|
{
|
||||||
return myBaseActor->GetShrinkFactor();
|
return myBaseActor->GetShrinkFactor();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::SetShrinkFactor(double theValue){
|
void SMESH_ActorDef::SetShrinkFactor(double theValue)
|
||||||
|
{
|
||||||
myBaseActor->SetShrinkFactor(theValue);
|
myBaseActor->SetShrinkFactor(theValue);
|
||||||
|
|
||||||
my1DActor->SetShrinkFactor(theValue);
|
my1DActor->SetShrinkFactor(theValue);
|
||||||
@ -1350,7 +1375,8 @@ void SMESH_ActorDef::SetShrinkFactor(double theValue){
|
|||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::SetShrink() {
|
void SMESH_ActorDef::SetShrink()
|
||||||
|
{
|
||||||
if(!myIsShrinkable) return;
|
if(!myIsShrinkable) return;
|
||||||
|
|
||||||
myBaseActor->SetShrink();
|
myBaseActor->SetShrink();
|
||||||
@ -1368,7 +1394,8 @@ void SMESH_ActorDef::SetShrink() {
|
|||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::UnShrink(){
|
void SMESH_ActorDef::UnShrink()
|
||||||
|
{
|
||||||
if(!myIsShrunk) return;
|
if(!myIsShrunk) return;
|
||||||
|
|
||||||
myBaseActor->UnShrink();
|
myBaseActor->UnShrink();
|
||||||
@ -1387,30 +1414,36 @@ void SMESH_ActorDef::UnShrink(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int SMESH_ActorDef::GetNodeObjId(int theVtkID){
|
int SMESH_ActorDef::GetNodeObjId(int theVtkID)
|
||||||
|
{
|
||||||
return myPickableActor->GetNodeObjId(theVtkID);
|
return myPickableActor->GetNodeObjId(theVtkID);
|
||||||
}
|
}
|
||||||
|
|
||||||
double* SMESH_ActorDef::GetNodeCoord(int theObjID){
|
double* SMESH_ActorDef::GetNodeCoord(int theObjID)
|
||||||
|
{
|
||||||
return myPickableActor->GetNodeCoord(theObjID);
|
return myPickableActor->GetNodeCoord(theObjID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int SMESH_ActorDef::GetElemObjId(int theVtkID){
|
int SMESH_ActorDef::GetElemObjId(int theVtkID)
|
||||||
|
{
|
||||||
return myPickableActor->GetElemObjId(theVtkID);
|
return myPickableActor->GetElemObjId(theVtkID);
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkCell* SMESH_ActorDef::GetElemCell(int theObjID){
|
vtkCell* SMESH_ActorDef::GetElemCell(int theObjID)
|
||||||
|
{
|
||||||
return myPickableActor->GetElemCell(theObjID);
|
return myPickableActor->GetElemCell(theObjID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::SetVisibility(int theMode){
|
void SMESH_ActorDef::SetVisibility(int theMode)
|
||||||
|
{
|
||||||
SetVisibility(theMode,true);
|
SetVisibility(theMode,true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){
|
void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation)
|
||||||
|
{
|
||||||
SALOME_Actor::SetVisibility(theMode);
|
SALOME_Actor::SetVisibility(theMode);
|
||||||
|
|
||||||
myNodeActor->VisibilityOff();
|
myNodeActor->VisibilityOff();
|
||||||
@ -1436,8 +1469,8 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){
|
|||||||
if(theIsUpdateRepersentation)
|
if(theIsUpdateRepersentation)
|
||||||
SetRepresentation(GetRepresentation());
|
SetRepresentation(GetRepresentation());
|
||||||
|
|
||||||
if(myControlMode != eNone){
|
if(myControlMode != eNone) {
|
||||||
switch(myControlMode){
|
switch(myControlMode) {
|
||||||
case eFreeNodes:
|
case eFreeNodes:
|
||||||
case eCoincidentNodes:
|
case eCoincidentNodes:
|
||||||
myNodeExtActor->VisibilityOn();
|
myNodeExtActor->VisibilityOn();
|
||||||
@ -1462,6 +1495,7 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){
|
|||||||
case eMultiConnection2D:
|
case eMultiConnection2D:
|
||||||
my1DExtActor->VisibilityOn();
|
my1DExtActor->VisibilityOn();
|
||||||
break;
|
break;
|
||||||
|
default:;
|
||||||
}
|
}
|
||||||
if(myControlActor->GetUnstructuredGrid()->GetNumberOfCells())
|
if(myControlActor->GetUnstructuredGrid()->GetNumberOfCells())
|
||||||
myScalarBarActor->VisibilityOn();
|
myScalarBarActor->VisibilityOn();
|
||||||
@ -1777,19 +1811,22 @@ void SMESH_ActorDef::SetRepresentation (int theMode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::SetPointRepresentation(bool theIsPointsVisible){
|
void SMESH_ActorDef::SetPointRepresentation(bool theIsPointsVisible)
|
||||||
|
{
|
||||||
if ( myIsPointsVisible == theIsPointsVisible )
|
if ( myIsPointsVisible == theIsPointsVisible )
|
||||||
return;
|
return;
|
||||||
myIsPointsVisible = theIsPointsVisible;
|
myIsPointsVisible = theIsPointsVisible;
|
||||||
SetRepresentation(GetRepresentation());
|
SetRepresentation(GetRepresentation());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SMESH_ActorDef::GetPointRepresentation(){
|
bool SMESH_ActorDef::GetPointRepresentation()
|
||||||
|
{
|
||||||
return myIsPointsVisible || myNodeActor->GetPointsLabeled();
|
return myIsPointsVisible || myNodeActor->GetPointsLabeled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::UpdateHighlight(){
|
void SMESH_ActorDef::UpdateHighlight()
|
||||||
|
{
|
||||||
myHighlitableActor->SetHighlited(false);
|
myHighlitableActor->SetHighlited(false);
|
||||||
myHighlitableActor->SetVisibility(false);
|
myHighlitableActor->SetVisibility(false);
|
||||||
bool anIsVisible = GetVisibility();
|
bool anIsVisible = GetVisibility();
|
||||||
@ -1832,7 +1869,8 @@ void SMESH_ActorDef::UpdateHighlight(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::highlight(bool theHighlight){
|
void SMESH_ActorDef::highlight(bool theHighlight)
|
||||||
|
{
|
||||||
if ( myIsHighlighted == theHighlight )
|
if ( myIsHighlighted == theHighlight )
|
||||||
return;
|
return;
|
||||||
myIsHighlighted = theHighlight;
|
myIsHighlighted = theHighlight;
|
||||||
@ -1840,7 +1878,8 @@ void SMESH_ActorDef::highlight(bool theHighlight){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::SetPreSelected(bool thePreselect){
|
void SMESH_ActorDef::SetPreSelected(bool thePreselect)
|
||||||
|
{
|
||||||
if ( myIsPreselected == thePreselect )
|
if ( myIsPreselected == thePreselect )
|
||||||
return;
|
return;
|
||||||
myIsPreselected = thePreselect;
|
myIsPreselected = thePreselect;
|
||||||
@ -1873,7 +1912,8 @@ int SMESH_ActorDef::RenderTranslucentGeometry(vtkViewport *vp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::Render(vtkRenderer *ren){
|
void SMESH_ActorDef::Render(vtkRenderer *ren)
|
||||||
|
{
|
||||||
unsigned long aTime = myTimeStamp->GetMTime();
|
unsigned long aTime = myTimeStamp->GetMTime();
|
||||||
unsigned long anObjTime = myVisualObj->GetUnstructuredGrid()->GetMTime();
|
unsigned long anObjTime = myVisualObj->GetUnstructuredGrid()->GetMTime();
|
||||||
unsigned long aClippingTime = myImplicitBoolean->GetMTime();
|
unsigned long aClippingTime = myImplicitBoolean->GetMTime();
|
||||||
@ -1882,7 +1922,8 @@ void SMESH_ActorDef::Render(vtkRenderer *ren){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::Update(){
|
void SMESH_ActorDef::Update()
|
||||||
|
{
|
||||||
if(MYDEBUG) MESSAGE("SMESH_ActorDef::Update");
|
if(MYDEBUG) MESSAGE("SMESH_ActorDef::Update");
|
||||||
|
|
||||||
if(GetControlMode() != eNone) {
|
if(GetControlMode() != eNone) {
|
||||||
@ -1926,14 +1967,16 @@ void SMESH_ActorDef::Update(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::ReleaseGraphicsResources(vtkWindow *renWin){
|
void SMESH_ActorDef::ReleaseGraphicsResources(vtkWindow *renWin)
|
||||||
|
{
|
||||||
SALOME_Actor::ReleaseGraphicsResources(renWin);
|
SALOME_Actor::ReleaseGraphicsResources(renWin);
|
||||||
|
|
||||||
myPickableActor->ReleaseGraphicsResources(renWin);
|
myPickableActor->ReleaseGraphicsResources(renWin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void GetColor(vtkProperty *theProperty, double& r,double& g,double& b){
|
static void GetColor(vtkProperty *theProperty, double& r,double& g,double& b)
|
||||||
|
{
|
||||||
double* aColor = theProperty->GetColor();
|
double* aColor = theProperty->GetColor();
|
||||||
r = aColor[0];
|
r = aColor[0];
|
||||||
g = aColor[1];
|
g = aColor[1];
|
||||||
@ -1941,7 +1984,8 @@ static void GetColor(vtkProperty *theProperty, double& r,double& g,double& b){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::SetOpacity(double theValue){
|
void SMESH_ActorDef::SetOpacity(double theValue)
|
||||||
|
{
|
||||||
mySurfaceProp->SetOpacity(theValue);
|
mySurfaceProp->SetOpacity(theValue);
|
||||||
myBackSurfaceProp->SetOpacity(theValue);
|
myBackSurfaceProp->SetOpacity(theValue);
|
||||||
myNormalVProp->SetOpacity(theValue);
|
myNormalVProp->SetOpacity(theValue);
|
||||||
@ -1956,12 +2000,14 @@ void SMESH_ActorDef::SetOpacity(double theValue){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
double SMESH_ActorDef::GetOpacity(){
|
double SMESH_ActorDef::GetOpacity()
|
||||||
|
{
|
||||||
return mySurfaceProp->GetOpacity();
|
return mySurfaceProp->GetOpacity();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::SetSufaceColor(double r,double g,double b, int delta){
|
void SMESH_ActorDef::SetSufaceColor(double r,double g,double b, int delta)
|
||||||
|
{
|
||||||
mySurfaceProp->SetColor(r,g,b);
|
mySurfaceProp->SetColor(r,g,b);
|
||||||
my2DExtProp->SetColor(1.0-r,1.0-g,1.0-b);
|
my2DExtProp->SetColor(1.0-r,1.0-g,1.0-b);
|
||||||
if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
|
if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
|
||||||
@ -1974,12 +2020,14 @@ void SMESH_ActorDef::SetSufaceColor(double r,double g,double b, int delta){
|
|||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::GetSufaceColor(double& r,double& g,double& b, int& delta){
|
void SMESH_ActorDef::GetSufaceColor(double& r,double& g,double& b, int& delta)
|
||||||
|
{
|
||||||
::GetColor(mySurfaceProp,r,g,b);
|
::GetColor(mySurfaceProp,r,g,b);
|
||||||
delta = myDeltaBrightness;
|
delta = myDeltaBrightness;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::SetVolumeColor(double r,double g,double b, int delta){
|
void SMESH_ActorDef::SetVolumeColor(double r,double g,double b, int delta)
|
||||||
|
{
|
||||||
myNormalVProp->SetColor(r,g,b);
|
myNormalVProp->SetColor(r,g,b);
|
||||||
my3DExtProp->SetColor(1.0-r,1.0-g,1.0-b);
|
my3DExtProp->SetColor(1.0-r,1.0-g,1.0-b);
|
||||||
if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
|
if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
|
||||||
@ -1992,12 +2040,14 @@ void SMESH_ActorDef::SetVolumeColor(double r,double g,double b, int delta){
|
|||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::GetVolumeColor(double& r,double& g,double& b, int& delta){
|
void SMESH_ActorDef::GetVolumeColor(double& r,double& g,double& b, int& delta)
|
||||||
|
{
|
||||||
::GetColor(myNormalVProp,r,g,b);
|
::GetColor(myNormalVProp,r,g,b);
|
||||||
delta = myDeltaVBrightness;
|
delta = myDeltaVBrightness;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::SetEdgeColor(double r,double g,double b){
|
void SMESH_ActorDef::SetEdgeColor(double r,double g,double b)
|
||||||
|
{
|
||||||
myEdgeProp->SetColor(r,g,b);
|
myEdgeProp->SetColor(r,g,b);
|
||||||
my1DProp->SetColor(r,g,b);
|
my1DProp->SetColor(r,g,b);
|
||||||
my1DExtProp->SetColor(1.0-r,1.0-g,1.0-b);
|
my1DExtProp->SetColor(1.0-r,1.0-g,1.0-b);
|
||||||
@ -2007,21 +2057,25 @@ void SMESH_ActorDef::SetEdgeColor(double r,double g,double b){
|
|||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::GetEdgeColor(double& r,double& g,double& b){
|
void SMESH_ActorDef::GetEdgeColor(double& r,double& g,double& b)
|
||||||
|
{
|
||||||
::GetColor(myEdgeProp,r,g,b);
|
::GetColor(myEdgeProp,r,g,b);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::SetOutlineColor(double r,double g,double b){
|
void SMESH_ActorDef::SetOutlineColor(double r,double g,double b)
|
||||||
|
{
|
||||||
myOutLineProp->SetColor(r,g,b);
|
myOutLineProp->SetColor(r,g,b);
|
||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::GetOutlineColor(double& r,double& g,double& b){
|
void SMESH_ActorDef::GetOutlineColor(double& r,double& g,double& b)
|
||||||
|
{
|
||||||
::GetColor(myOutLineProp,r,g,b);
|
::GetColor(myOutLineProp,r,g,b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::SetNodeColor(double r,double g,double b){
|
void SMESH_ActorDef::SetNodeColor(double r,double g,double b)
|
||||||
|
{
|
||||||
myNodeProp->SetColor(r,g,b);
|
myNodeProp->SetColor(r,g,b);
|
||||||
myNodeExtProp->SetColor(1.0-r,1.0-g,1.0-b);
|
myNodeExtProp->SetColor(1.0-r,1.0-g,1.0-b);
|
||||||
if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
|
if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
|
||||||
@ -2030,11 +2084,13 @@ void SMESH_ActorDef::SetNodeColor(double r,double g,double b){
|
|||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::GetNodeColor(double& r,double& g,double& b){
|
void SMESH_ActorDef::GetNodeColor(double& r,double& g,double& b)
|
||||||
|
{
|
||||||
::GetColor(myNodeProp,r,g,b);
|
::GetColor(myNodeProp,r,g,b);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::Set0DColor(double r,double g,double b){
|
void SMESH_ActorDef::Set0DColor(double r,double g,double b)
|
||||||
|
{
|
||||||
my0DProp->SetColor(r,g,b);
|
my0DProp->SetColor(r,g,b);
|
||||||
if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
|
if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
|
||||||
if( aGroupObj->GetElementType() == SMDSAbs_0DElement )
|
if( aGroupObj->GetElementType() == SMDSAbs_0DElement )
|
||||||
@ -2042,11 +2098,13 @@ void SMESH_ActorDef::Set0DColor(double r,double g,double b){
|
|||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::Get0DColor(double& r,double& g,double& b){
|
void SMESH_ActorDef::Get0DColor(double& r,double& g,double& b)
|
||||||
|
{
|
||||||
::GetColor(my0DProp,r,g,b);
|
::GetColor(my0DProp,r,g,b);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::SetBallColor(double r,double g,double b){
|
void SMESH_ActorDef::SetBallColor(double r,double g,double b)
|
||||||
|
{
|
||||||
myBallProp->SetColor(r,g,b);
|
myBallProp->SetColor(r,g,b);
|
||||||
if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
|
if( SMESH_GroupObj* aGroupObj = dynamic_cast<SMESH_GroupObj*>( myVisualObj.get() ) )
|
||||||
if( aGroupObj->GetElementType() == SMDSAbs_Ball )
|
if( aGroupObj->GetElementType() == SMDSAbs_Ball )
|
||||||
@ -2054,35 +2112,42 @@ void SMESH_ActorDef::SetBallColor(double r,double g,double b){
|
|||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::GetBallColor(double& r,double& g,double& b){
|
void SMESH_ActorDef::GetBallColor(double& r,double& g,double& b)
|
||||||
|
{
|
||||||
::GetColor(myBallProp,r,g,b);
|
::GetColor(myBallProp,r,g,b);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::SetHighlightColor(double r,double g,double b){
|
void SMESH_ActorDef::SetHighlightColor(double r,double g,double b)
|
||||||
|
{
|
||||||
myHighlightProp->SetColor(r,g,b);
|
myHighlightProp->SetColor(r,g,b);
|
||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::GetHighlightColor(double& r,double& g,double& b){
|
void SMESH_ActorDef::GetHighlightColor(double& r,double& g,double& b)
|
||||||
|
{
|
||||||
::GetColor(myHighlightProp,r,g,b);
|
::GetColor(myHighlightProp,r,g,b);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::SetPreHighlightColor(double r,double g,double b){
|
void SMESH_ActorDef::SetPreHighlightColor(double r,double g,double b)
|
||||||
|
{
|
||||||
myPreselectProp->SetColor(r,g,b);
|
myPreselectProp->SetColor(r,g,b);
|
||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::GetPreHighlightColor(double& r,double& g,double& b){
|
void SMESH_ActorDef::GetPreHighlightColor(double& r,double& g,double& b)
|
||||||
|
{
|
||||||
::GetColor(myPreselectProp,r,g,b);
|
::GetColor(myPreselectProp,r,g,b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
double SMESH_ActorDef::GetLineWidth(){
|
double SMESH_ActorDef::GetLineWidth()
|
||||||
|
{
|
||||||
return myEdgeProp->GetLineWidth();
|
return myEdgeProp->GetLineWidth();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SMESH_ActorDef::SetLineWidth(double theVal){
|
void SMESH_ActorDef::SetLineWidth(double theVal)
|
||||||
|
{
|
||||||
myEdgeProp->SetLineWidth(theVal);
|
myEdgeProp->SetLineWidth(theVal);
|
||||||
|
|
||||||
my1DProp->SetLineWidth(theVal + aLineWidthInc);
|
my1DProp->SetLineWidth(theVal + aLineWidthInc);
|
||||||
@ -2106,7 +2171,8 @@ void SMESH_ActorDef::SetOutlineWidth(double theVal)
|
|||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::Set0DSize(double theVal){
|
void SMESH_ActorDef::Set0DSize(double theVal)
|
||||||
|
{
|
||||||
my0DProp->SetPointSize(theVal);
|
my0DProp->SetPointSize(theVal);
|
||||||
myHighlightProp->SetPointSize(theVal);
|
myHighlightProp->SetPointSize(theVal);
|
||||||
myPreselectProp->SetPointSize(theVal);
|
myPreselectProp->SetPointSize(theVal);
|
||||||
@ -2121,11 +2187,13 @@ void SMESH_ActorDef::Set0DSize(double theVal){
|
|||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
double SMESH_ActorDef::Get0DSize(){
|
double SMESH_ActorDef::Get0DSize()
|
||||||
|
{
|
||||||
return my0DProp->GetPointSize();
|
return my0DProp->GetPointSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::SetBallSize(double theVal){
|
void SMESH_ActorDef::SetBallSize(double theVal)
|
||||||
|
{
|
||||||
myBallProp->SetPointSize(theVal);
|
myBallProp->SetPointSize(theVal);
|
||||||
|
|
||||||
if(SMESH_SVTKActor* aCustom = SMESH_SVTKActor::SafeDownCast( myHighlightActor )) {
|
if(SMESH_SVTKActor* aCustom = SMESH_SVTKActor::SafeDownCast( myHighlightActor )) {
|
||||||
@ -2138,7 +2206,8 @@ void SMESH_ActorDef::SetBallSize(double theVal){
|
|||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
double SMESH_ActorDef::GetBallSize(){
|
double SMESH_ActorDef::GetBallSize()
|
||||||
|
{
|
||||||
return myBallProp->GetPointSize();
|
return myBallProp->GetPointSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2165,15 +2234,12 @@ int SMESH_ActorDef::GetObjDimension( const int theObjId )
|
|||||||
return myVisualObj->GetElemDimension( theObjId );
|
return myVisualObj->GetElemDimension( theObjId );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool SMESH_ActorDef::IsImplicitFunctionUsed() const
|
||||||
SMESH_ActorDef::
|
|
||||||
IsImplicitFunctionUsed() const
|
|
||||||
{
|
{
|
||||||
return myBaseActor->IsImplicitFunctionUsed();
|
return myBaseActor->IsImplicitFunctionUsed();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void SMESH_ActorDef::SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed)
|
||||||
SMESH_ActorDef::SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed)
|
|
||||||
{
|
{
|
||||||
myNodeActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
myNodeActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
||||||
myBaseActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
myBaseActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
||||||
@ -2195,8 +2261,7 @@ SMESH_ActorDef::SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed)
|
|||||||
my3DExtActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
my3DExtActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkIdType
|
vtkIdType SMESH_ActorDef::AddClippingPlane(vtkPlane* thePlane)
|
||||||
SMESH_ActorDef::AddClippingPlane(vtkPlane* thePlane)
|
|
||||||
{
|
{
|
||||||
if(thePlane){
|
if(thePlane){
|
||||||
myImplicitBoolean->GetFunction()->AddItem(thePlane);
|
myImplicitBoolean->GetFunction()->AddItem(thePlane);
|
||||||
@ -2208,15 +2273,13 @@ SMESH_ActorDef::AddClippingPlane(vtkPlane* thePlane)
|
|||||||
return myCippingPlaneCont.size();
|
return myCippingPlaneCont.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void SMESH_ActorDef::AddOpenGLClippingPlane(vtkPlane* thePlane)
|
||||||
SMESH_ActorDef::AddOpenGLClippingPlane(vtkPlane* thePlane)
|
|
||||||
{
|
{
|
||||||
if(thePlane)
|
if(thePlane)
|
||||||
myPlaneCollection->AddItem( thePlane );
|
myPlaneCollection->AddItem( thePlane );
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void SMESH_ActorDef::SetOpenGLClippingPlane()
|
||||||
SMESH_ActorDef::SetOpenGLClippingPlane()
|
|
||||||
{
|
{
|
||||||
// before use this method you must add clipping planes using method
|
// before use this method you must add clipping planes using method
|
||||||
// SMESH_ActorDef::AddOpenGLClippingPlane(vtkPlane* thePlane)
|
// SMESH_ActorDef::AddOpenGLClippingPlane(vtkPlane* thePlane)
|
||||||
@ -2267,9 +2330,7 @@ SMESH_ActorDef::SetOpenGLClippingPlane()
|
|||||||
Modified();
|
Modified();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void SMESH_ActorDef::RemoveAllClippingPlanes()
|
||||||
SMESH_ActorDef::
|
|
||||||
RemoveAllClippingPlanes()
|
|
||||||
{
|
{
|
||||||
myPlaneCollection->RemoveAllItems();
|
myPlaneCollection->RemoveAllItems();
|
||||||
myImplicitBoolean->GetFunction()->RemoveAllItems();
|
myImplicitBoolean->GetFunction()->RemoveAllItems();
|
||||||
@ -2279,16 +2340,12 @@ RemoveAllClippingPlanes()
|
|||||||
myNodeActor->UpdateLabels();
|
myNodeActor->UpdateLabels();
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkIdType
|
vtkIdType SMESH_ActorDef::GetNumberOfClippingPlanes()
|
||||||
SMESH_ActorDef::
|
|
||||||
GetNumberOfClippingPlanes()
|
|
||||||
{
|
{
|
||||||
return myCippingPlaneCont.size();
|
return myCippingPlaneCont.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkPlane*
|
vtkPlane* SMESH_ActorDef::GetClippingPlane(vtkIdType theID)
|
||||||
SMESH_ActorDef::
|
|
||||||
GetClippingPlane(vtkIdType theID)
|
|
||||||
{
|
{
|
||||||
if ( theID >= (vtkIdType)myCippingPlaneCont.size() )
|
if ( theID >= (vtkIdType)myCippingPlaneCont.size() )
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -2437,7 +2494,7 @@ void SMESH_ActorDef::UpdateDistribution()
|
|||||||
SMESH_VisualObjDef::TEntityList elems;
|
SMESH_VisualObjDef::TEntityList elems;
|
||||||
if ( ! dynamic_cast<SMESH_MeshObj*>(myVisualObj.get()))
|
if ( ! dynamic_cast<SMESH_MeshObj*>(myVisualObj.get()))
|
||||||
dynamic_cast<SMESH_VisualObjDef*>(myVisualObj.get())->GetEntities( fun->GetType(), elems );
|
dynamic_cast<SMESH_VisualObjDef*>(myVisualObj.get())->GetEntities( fun->GetType(), elems );
|
||||||
std::vector<int> elemIds;
|
std::vector<int> elemIds; elemIds.reserve( elems.size() );
|
||||||
for ( SMESH_VisualObjDef::TEntityList::iterator e = elems.begin(); e != elems.end(); ++e)
|
for ( SMESH_VisualObjDef::TEntityList::iterator e = elems.begin(); e != elems.end(); ++e)
|
||||||
elemIds.push_back( (*e)->GetID());
|
elemIds.push_back( (*e)->GetID());
|
||||||
vtkLookupTable* lookupTable = static_cast<vtkLookupTable*>(myScalarBarActor->GetLookupTable());
|
vtkLookupTable* lookupTable = static_cast<vtkLookupTable*>(myScalarBarActor->GetLookupTable());
|
||||||
@ -2493,8 +2550,8 @@ void SMESH_ActorDef::SetMarkerTexture( int theMarkerId, VTK::MarkerTexture theMa
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef DISABLE_PLOT2DVIEWER
|
#ifndef DISABLE_PLOT2DVIEWER
|
||||||
SPlot2d_Histogram* SMESH_ActorDef::UpdatePlot2Histogram() {
|
SPlot2d_Histogram* SMESH_ActorDef::UpdatePlot2Histogram()
|
||||||
|
{
|
||||||
if(my2dHistogram)
|
if(my2dHistogram)
|
||||||
my2dHistogram->clearAllPoints();
|
my2dHistogram->clearAllPoints();
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ class SMESHOBJECT_EXPORT SMESH_Actor: public SALOME_Actor
|
|||||||
eMinimumAngle, eWarping, eSkew, eAspectRatio3D, eMultiConnection2D, eVolume3D,
|
eMinimumAngle, eWarping, eSkew, eAspectRatio3D, eMultiConnection2D, eVolume3D,
|
||||||
eMaxElementLength2D, eMaxElementLength3D, eBareBorderFace, eBareBorderVolume,
|
eMaxElementLength2D, eMaxElementLength3D, eBareBorderFace, eBareBorderVolume,
|
||||||
eOverConstrainedFace, eOverConstrainedVolume, eCoincidentNodes,
|
eOverConstrainedFace, eOverConstrainedVolume, eCoincidentNodes,
|
||||||
eCoincidentElems1D, eCoincidentElems2D, eCoincidentElems3D };
|
eCoincidentElems1D, eCoincidentElems2D, eCoincidentElems3D, eNodeConnectivityNb };
|
||||||
virtual void SetControlMode(eControl theMode) = 0;
|
virtual void SetControlMode(eControl theMode) = 0;
|
||||||
virtual eControl GetControlMode() = 0;
|
virtual eControl GetControlMode() = 0;
|
||||||
virtual SMESH::Controls::FunctorPtr GetFunctor() = 0;
|
virtual SMESH::Controls::FunctorPtr GetFunctor() = 0;
|
||||||
|
@ -1142,6 +1142,8 @@ namespace
|
|||||||
type = QObject::tr( "EQUAL_FACE" );
|
type = QObject::tr( "EQUAL_FACE" );
|
||||||
else if ( dynamic_cast< SMESH::Controls::CoincidentElements3D* >( f.get() ) )
|
else if ( dynamic_cast< SMESH::Controls::CoincidentElements3D* >( f.get() ) )
|
||||||
type = QObject::tr( "EQUAL_VOLUME" );
|
type = QObject::tr( "EQUAL_VOLUME" );
|
||||||
|
else if ( dynamic_cast< SMESH::Controls::NodeConnectivityNumber* >( f.get() ) )
|
||||||
|
type = QObject::tr( "NODE_CONNECTIVITY_NB" );
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1636,6 +1638,7 @@ namespace
|
|||||||
ActionControl.Bind( 0, SMESH_Actor::eNone );
|
ActionControl.Bind( 0, SMESH_Actor::eNone );
|
||||||
ActionControl.Bind( SMESHOp::OpFreeNode, SMESH_Actor::eFreeNodes );
|
ActionControl.Bind( SMESHOp::OpFreeNode, SMESH_Actor::eFreeNodes );
|
||||||
ActionControl.Bind( SMESHOp::OpEqualNode, SMESH_Actor::eCoincidentNodes );
|
ActionControl.Bind( SMESHOp::OpEqualNode, SMESH_Actor::eCoincidentNodes );
|
||||||
|
ActionControl.Bind( SMESHOp::OpNodeConnectivityNb, SMESH_Actor::eNodeConnectivityNb );
|
||||||
ActionControl.Bind( SMESHOp::OpFreeEdge, SMESH_Actor::eFreeEdges );
|
ActionControl.Bind( SMESHOp::OpFreeEdge, SMESH_Actor::eFreeEdges );
|
||||||
ActionControl.Bind( SMESHOp::OpFreeBorder, SMESH_Actor::eFreeBorders );
|
ActionControl.Bind( SMESHOp::OpFreeBorder, SMESH_Actor::eFreeBorders );
|
||||||
ActionControl.Bind( SMESHOp::OpLength, SMESH_Actor::eLength );
|
ActionControl.Bind( SMESHOp::OpLength, SMESH_Actor::eLength );
|
||||||
@ -3577,6 +3580,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
|
|||||||
// CONTROLS
|
// CONTROLS
|
||||||
case SMESHOp::OpFreeNode:
|
case SMESHOp::OpFreeNode:
|
||||||
case SMESHOp::OpEqualNode:
|
case SMESHOp::OpEqualNode:
|
||||||
|
case SMESHOp::OpNodeConnectivityNb:
|
||||||
case SMESHOp::OpFreeEdge:
|
case SMESHOp::OpFreeEdge:
|
||||||
case SMESHOp::OpFreeBorder:
|
case SMESHOp::OpFreeBorder:
|
||||||
case SMESHOp::OpLength:
|
case SMESHOp::OpLength:
|
||||||
@ -3869,6 +3873,7 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
//update
|
//update
|
||||||
createSMESHAction( SMESHOp::OpFreeNode, "FREE_NODE", "ICON_FREE_NODE", 0, true );
|
createSMESHAction( SMESHOp::OpFreeNode, "FREE_NODE", "ICON_FREE_NODE", 0, true );
|
||||||
createSMESHAction( SMESHOp::OpEqualNode, "EQUAL_NODE", "ICON_EQUAL_NODE", 0, true );
|
createSMESHAction( SMESHOp::OpEqualNode, "EQUAL_NODE", "ICON_EQUAL_NODE", 0, true );
|
||||||
|
createSMESHAction( SMESHOp::OpNodeConnectivityNb, "NODE_CONNECTIVITY_NB", "ICON_NODE_CONN_NB", 0, true );
|
||||||
createSMESHAction( SMESHOp::OpFreeEdge, "FREE_EDGE", "ICON_FREE_EDGE", 0, true );
|
createSMESHAction( SMESHOp::OpFreeEdge, "FREE_EDGE", "ICON_FREE_EDGE", 0, true );
|
||||||
createSMESHAction( SMESHOp::OpFreeBorder, "FREE_BORDER", "ICON_FREE_EDGE_2D", 0, true );
|
createSMESHAction( SMESHOp::OpFreeBorder, "FREE_BORDER", "ICON_FREE_EDGE_2D", 0, true );
|
||||||
createSMESHAction( SMESHOp::OpLength, "LENGTH", "ICON_LENGTH", 0, true );
|
createSMESHAction( SMESHOp::OpLength, "LENGTH", "ICON_LENGTH", 0, true );
|
||||||
@ -4002,7 +4007,8 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
createSMESHAction( SMESHOp::OpSortChild, "SORT_CHILD_ITEMS" );
|
createSMESHAction( SMESHOp::OpSortChild, "SORT_CHILD_ITEMS" );
|
||||||
|
|
||||||
QList<int> aCtrlActions;
|
QList<int> aCtrlActions;
|
||||||
aCtrlActions << SMESHOp::OpFreeNode << SMESHOp::OpEqualNode // node controls
|
aCtrlActions << SMESHOp::OpFreeNode << SMESHOp::OpEqualNode
|
||||||
|
<< SMESHOp::OpNodeConnectivityNb // node controls
|
||||||
<< SMESHOp::OpFreeEdge << SMESHOp::OpFreeBorder
|
<< SMESHOp::OpFreeEdge << SMESHOp::OpFreeBorder
|
||||||
<< SMESHOp::OpLength << SMESHOp::OpConnection << SMESHOp::OpEqualEdge // edge controls
|
<< SMESHOp::OpLength << SMESHOp::OpConnection << SMESHOp::OpEqualEdge // edge controls
|
||||||
<< SMESHOp::OpFreeFace << SMESHOp::OpLength2D << SMESHOp::OpConnection2D
|
<< SMESHOp::OpFreeFace << SMESHOp::OpLength2D << SMESHOp::OpConnection2D
|
||||||
@ -4099,6 +4105,7 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
|
|
||||||
createMenu( SMESHOp::OpFreeNode, nodeId, -1 );
|
createMenu( SMESHOp::OpFreeNode, nodeId, -1 );
|
||||||
createMenu( SMESHOp::OpEqualNode, nodeId, -1 );
|
createMenu( SMESHOp::OpEqualNode, nodeId, -1 );
|
||||||
|
//createMenu( SMESHOp::OpNodeConnectivityNb, nodeId, -1 );
|
||||||
createMenu( SMESHOp::OpFreeBorder, edgeId, -1 );
|
createMenu( SMESHOp::OpFreeBorder, edgeId, -1 );
|
||||||
createMenu( SMESHOp::OpLength, edgeId, -1 );
|
createMenu( SMESHOp::OpLength, edgeId, -1 );
|
||||||
createMenu( SMESHOp::OpConnection, edgeId, -1 );
|
createMenu( SMESHOp::OpConnection, edgeId, -1 );
|
||||||
@ -4244,6 +4251,7 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
|
|
||||||
createTool( SMESHOp::OpFreeNode, ctrl0dTb );
|
createTool( SMESHOp::OpFreeNode, ctrl0dTb );
|
||||||
createTool( SMESHOp::OpEqualNode, ctrl0dTb );
|
createTool( SMESHOp::OpEqualNode, ctrl0dTb );
|
||||||
|
//createTool( SMESHOp::OpNodeConnectivityNb, ctrl0dTb );
|
||||||
|
|
||||||
createTool( SMESHOp::OpFreeBorder, ctrl1dTb );
|
createTool( SMESHOp::OpFreeBorder, ctrl1dTb );
|
||||||
createTool( SMESHOp::OpLength, ctrl1dTb );
|
createTool( SMESHOp::OpLength, ctrl1dTb );
|
||||||
@ -4586,6 +4594,10 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
popupMgr()->setRule( action( SMESHOp::OpEqualNode ), aMeshInVtkHasNodes, QtxPopupMgr::VisibleRule );
|
popupMgr()->setRule( action( SMESHOp::OpEqualNode ), aMeshInVtkHasNodes, QtxPopupMgr::VisibleRule );
|
||||||
popupMgr()->setRule( action( SMESHOp::OpEqualNode ), "controlMode = 'eCoincidentNodes'", QtxPopupMgr::ToggleRule);
|
popupMgr()->setRule( action( SMESHOp::OpEqualNode ), "controlMode = 'eCoincidentNodes'", QtxPopupMgr::ToggleRule);
|
||||||
|
|
||||||
|
// popupMgr()->insert( action( SMESHOp::OpNodeConnectivityNb ), aSubId, -1 );
|
||||||
|
// popupMgr()->setRule( action( SMESHOp::OpNodeConnectivityNb ), aMeshInVtkHasNodes, QtxPopupMgr::VisibleRule );
|
||||||
|
// popupMgr()->setRule( action( SMESHOp::OpNodeConnectivityNb ), "controlMode = 'eNodeConnectivityNb'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
aSubId = popupMgr()->insert( tr( "MEN_EDGE_CTRL" ), anId, -1 ); // EDGE CONTROLS
|
aSubId = popupMgr()->insert( tr( "MEN_EDGE_CTRL" ), anId, -1 ); // EDGE CONTROLS
|
||||||
|
|
||||||
popupMgr()->insert( action( SMESHOp::OpFreeBorder ), aSubId, -1 );
|
popupMgr()->insert( action( SMESHOp::OpFreeBorder ), aSubId, -1 );
|
||||||
|
@ -1823,6 +1823,7 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con
|
|||||||
case SMESH::FT_EqualFaces:
|
case SMESH::FT_EqualFaces:
|
||||||
case SMESH::FT_EqualVolumes: break;
|
case SMESH::FT_EqualVolumes: break;
|
||||||
|
|
||||||
|
case SMESH::FT_NodeConnectivityNumber:
|
||||||
case SMESH::FT_MultiConnection:
|
case SMESH::FT_MultiConnection:
|
||||||
case SMESH::FT_MultiConnection2D: anIsIntCriterion = true; nbCompareSigns = 3; break;
|
case SMESH::FT_MultiConnection2D: anIsIntCriterion = true; nbCompareSigns = 3; break;
|
||||||
|
|
||||||
@ -2190,6 +2191,7 @@ const QMap<int, QString>& SMESHGUI_FilterTable::getCriteria (const int theType)
|
|||||||
aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR");
|
aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR");
|
||||||
aCriteria[ SMESH::FT_EqualNodes ] = tr("EQUAL_NODE");
|
aCriteria[ SMESH::FT_EqualNodes ] = tr("EQUAL_NODE");
|
||||||
aCriteria[ SMESH::FT_ConnectedElements ] = tr("CONNECTED_ELEMS");
|
aCriteria[ SMESH::FT_ConnectedElements ] = tr("CONNECTED_ELEMS");
|
||||||
|
aCriteria[ SMESH::FT_NodeConnectivityNumber ] = tr("NODE_CONN_NUMBER");
|
||||||
}
|
}
|
||||||
return aCriteria;
|
return aCriteria;
|
||||||
}
|
}
|
||||||
|
@ -3225,6 +3225,11 @@ SMESHGUI_CtrlInfo::SMESHGUI_CtrlInfo( QWidget* parent )
|
|||||||
myWidgets << aNodesFree;
|
myWidgets << aNodesFree;
|
||||||
myPredicates << aFilterMgr->CreateFreeNodes();
|
myPredicates << aFilterMgr->CreateFreeNodes();
|
||||||
//
|
//
|
||||||
|
QLabel* aNodesNbConnLab = new QLabel( tr( "MAX_NODE_CONNECTIVITY" ), this );
|
||||||
|
QLabel* aNodesNbConn = createField();
|
||||||
|
myWidgets << aNodesNbConn;
|
||||||
|
myNodeConnFunctor = aFilterMgr->CreateNodeConnectivityNumber();
|
||||||
|
//
|
||||||
QLabel* aNodesDoubleLab = new QLabel( tr( "NUMBER_OF_THE_DOUBLE_NODES" ), this );
|
QLabel* aNodesDoubleLab = new QLabel( tr( "NUMBER_OF_THE_DOUBLE_NODES" ), this );
|
||||||
QLabel* aNodesDouble = createField();
|
QLabel* aNodesDouble = createField();
|
||||||
myWidgets << aNodesDouble;
|
myWidgets << aNodesDouble;
|
||||||
@ -3274,47 +3279,52 @@ SMESHGUI_CtrlInfo::SMESHGUI_CtrlInfo( QWidget* parent )
|
|||||||
aFreeNodesBtn->setIcon(aComputeIcon);
|
aFreeNodesBtn->setIcon(aComputeIcon);
|
||||||
myButtons << aFreeNodesBtn; //0
|
myButtons << aFreeNodesBtn; //0
|
||||||
|
|
||||||
|
QToolButton* aNodesNbConnBtn = new QToolButton( this );
|
||||||
|
aNodesNbConnBtn->setIcon(aComputeIcon);
|
||||||
|
myButtons << aNodesNbConnBtn; //1
|
||||||
|
|
||||||
QToolButton* aDoubleNodesBtn = new QToolButton( this );
|
QToolButton* aDoubleNodesBtn = new QToolButton( this );
|
||||||
aDoubleNodesBtn->setIcon(aComputeIcon);
|
aDoubleNodesBtn->setIcon(aComputeIcon);
|
||||||
myButtons << aDoubleNodesBtn; //1
|
myButtons << aDoubleNodesBtn; //2
|
||||||
|
|
||||||
QToolButton* aDoubleEdgesBtn = new QToolButton( this );
|
QToolButton* aDoubleEdgesBtn = new QToolButton( this );
|
||||||
aDoubleEdgesBtn->setIcon(aComputeIcon);
|
aDoubleEdgesBtn->setIcon(aComputeIcon);
|
||||||
myButtons << aDoubleEdgesBtn; //2
|
myButtons << aDoubleEdgesBtn; //3
|
||||||
|
|
||||||
QToolButton* aDoubleFacesBtn = new QToolButton( this );
|
QToolButton* aDoubleFacesBtn = new QToolButton( this );
|
||||||
aDoubleFacesBtn->setIcon(aComputeIcon);
|
aDoubleFacesBtn->setIcon(aComputeIcon);
|
||||||
myButtons << aDoubleFacesBtn; //3
|
myButtons << aDoubleFacesBtn; //4
|
||||||
|
|
||||||
QToolButton* aOverContFacesBtn = new QToolButton( this );
|
QToolButton* aOverContFacesBtn = new QToolButton( this );
|
||||||
aOverContFacesBtn->setIcon(aComputeIcon);
|
aOverContFacesBtn->setIcon(aComputeIcon);
|
||||||
myButtons << aOverContFacesBtn; //4
|
myButtons << aOverContFacesBtn; //5
|
||||||
|
|
||||||
QToolButton* aComputeFaceBtn = new QToolButton( this );
|
QToolButton* aComputeFaceBtn = new QToolButton( this );
|
||||||
aComputeFaceBtn->setIcon(aComputeIcon);
|
aComputeFaceBtn->setIcon(aComputeIcon);
|
||||||
myButtons << aComputeFaceBtn; //5
|
myButtons << aComputeFaceBtn; //6
|
||||||
|
|
||||||
QToolButton* aDoubleVolumesBtn = new QToolButton( this );
|
QToolButton* aDoubleVolumesBtn = new QToolButton( this );
|
||||||
aDoubleVolumesBtn->setIcon(aComputeIcon);
|
aDoubleVolumesBtn->setIcon(aComputeIcon);
|
||||||
myButtons << aDoubleVolumesBtn; //6
|
myButtons << aDoubleVolumesBtn; //7
|
||||||
|
|
||||||
QToolButton* aOverContVolumesBtn = new QToolButton( this );
|
QToolButton* aOverContVolumesBtn = new QToolButton( this );
|
||||||
aOverContVolumesBtn->setIcon(aComputeIcon);
|
aOverContVolumesBtn->setIcon(aComputeIcon);
|
||||||
myButtons << aOverContVolumesBtn; //7
|
myButtons << aOverContVolumesBtn; //8
|
||||||
|
|
||||||
QToolButton* aComputeVolumeBtn = new QToolButton( this );
|
QToolButton* aComputeVolumeBtn = new QToolButton( this );
|
||||||
aComputeVolumeBtn->setIcon(aComputeIcon);
|
aComputeVolumeBtn->setIcon(aComputeIcon);
|
||||||
myButtons << aComputeVolumeBtn; //8
|
myButtons << aComputeVolumeBtn; //9
|
||||||
|
|
||||||
connect( aComputeFaceBtn, SIGNAL( clicked() ), this, SLOT( computeAspectRatio() ) );
|
connect( aComputeFaceBtn, SIGNAL( clicked() ), this, SLOT( computeAspectRatio() ) );
|
||||||
connect( aComputeVolumeBtn, SIGNAL( clicked() ), this, SLOT( computeAspectRatio3D() ) );
|
connect( aComputeVolumeBtn, SIGNAL( clicked() ), this, SLOT( computeAspectRatio3D() ) );
|
||||||
connect( aFreeNodesBtn, SIGNAL( clicked() ), this, SLOT( computeFreeNodesInfo() ) );
|
connect( aFreeNodesBtn, SIGNAL( clicked() ), this, SLOT( computeFreeNodesInfo() ) );
|
||||||
connect( aDoubleNodesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleNodesInfo() ) );
|
connect( aNodesNbConnBtn, SIGNAL( clicked() ), this, SLOT( computeNodesNbConnInfo() ) );
|
||||||
connect( aDoubleEdgesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleEdgesInfo() ) );
|
connect( aDoubleNodesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleNodesInfo() ) );
|
||||||
connect( aDoubleFacesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleFacesInfo() ) );
|
connect( aDoubleEdgesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleEdgesInfo() ) );
|
||||||
|
connect( aDoubleFacesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleFacesInfo() ) );
|
||||||
connect( aOverContFacesBtn, SIGNAL( clicked() ), this, SLOT( computeOverConstrainedFacesInfo() ) );
|
connect( aOverContFacesBtn, SIGNAL( clicked() ), this, SLOT( computeOverConstrainedFacesInfo() ) );
|
||||||
connect( aDoubleVolumesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleVolumesInfo() ) );
|
connect( aDoubleVolumesBtn, SIGNAL( clicked() ), this, SLOT( computeDoubleVolumesInfo() ) );
|
||||||
connect( aOverContVolumesBtn, SIGNAL( clicked() ), this, SLOT( computeOverConstrainedVolumesInfo() ) );
|
connect( aOverContVolumesBtn,SIGNAL( clicked() ), this, SLOT( computeOverConstrainedVolumesInfo() ) );
|
||||||
connect( myToleranceWidget, SIGNAL(valueChanged(double)), this, SLOT( setTolerance( double )));
|
connect( myToleranceWidget, SIGNAL(valueChanged(double)), this, SLOT( setTolerance( double )));
|
||||||
|
|
||||||
setFontAttributes( aNameLab );
|
setFontAttributes( aNameLab );
|
||||||
@ -3329,35 +3339,38 @@ SMESHGUI_CtrlInfo::SMESHGUI_CtrlInfo( QWidget* parent )
|
|||||||
myMainLayout->addWidget( aNodesFreeLab, 2, 0 ); //3
|
myMainLayout->addWidget( aNodesFreeLab, 2, 0 ); //3
|
||||||
myMainLayout->addWidget( aNodesFree, 2, 1 ); //4
|
myMainLayout->addWidget( aNodesFree, 2, 1 ); //4
|
||||||
myMainLayout->addWidget( aFreeNodesBtn, 2, 2 ); //5
|
myMainLayout->addWidget( aFreeNodesBtn, 2, 2 ); //5
|
||||||
myMainLayout->addWidget( aNodesDoubleLab, 3, 0 ); //6
|
myMainLayout->addWidget( aNodesNbConnLab, 3, 0 ); //6
|
||||||
myMainLayout->addWidget( aNodesDouble, 3, 1 ); //7
|
myMainLayout->addWidget( aNodesNbConn, 3, 1 ); //7
|
||||||
myMainLayout->addWidget( aDoubleNodesBtn, 3, 2 ); //8
|
myMainLayout->addWidget( aNodesNbConnBtn, 3, 2 ); //8
|
||||||
myMainLayout->addWidget( aToleranceLab, 4, 0 ); //9
|
myMainLayout->addWidget( aNodesDoubleLab, 4, 0 ); //9
|
||||||
myMainLayout->addWidget( myToleranceWidget, 4, 1 ); //10
|
myMainLayout->addWidget( aNodesDouble, 4, 1 ); //10
|
||||||
myMainLayout->addWidget( anEdgesLab, 5, 0, 1, 3 ); //11
|
myMainLayout->addWidget( aDoubleNodesBtn, 4, 2 ); //11
|
||||||
myMainLayout->addWidget( anEdgesDoubleLab, 6, 0 ); //12
|
myMainLayout->addWidget( aToleranceLab, 5, 0 ); //12
|
||||||
myMainLayout->addWidget( anEdgesDouble, 6, 1 ); //13
|
myMainLayout->addWidget( myToleranceWidget, 5, 1 ); //13
|
||||||
myMainLayout->addWidget( aDoubleEdgesBtn, 6, 2 ); //14
|
myMainLayout->addWidget( anEdgesLab, 6, 0, 1, 3 ); //14
|
||||||
myMainLayout->addWidget( aFacesLab, 7, 0, 1, 3 ); //15
|
myMainLayout->addWidget( anEdgesDoubleLab, 7, 0 ); //15
|
||||||
myMainLayout->addWidget( aFacesDoubleLab, 8, 0 ); //16
|
myMainLayout->addWidget( anEdgesDouble, 7, 1 ); //16
|
||||||
myMainLayout->addWidget( aFacesDouble, 8, 1 ); //17
|
myMainLayout->addWidget( aDoubleEdgesBtn, 7, 2 ); //17
|
||||||
myMainLayout->addWidget( aDoubleFacesBtn, 8, 2 ); //18
|
myMainLayout->addWidget( aFacesLab, 8, 0, 1, 3 ); //18
|
||||||
myMainLayout->addWidget( aFacesOverLab, 9, 0 ); //19
|
myMainLayout->addWidget( aFacesDoubleLab, 9, 0 ); //19
|
||||||
myMainLayout->addWidget( aFacesOver, 9, 1 ); //20
|
myMainLayout->addWidget( aFacesDouble, 9, 1 ); //20
|
||||||
myMainLayout->addWidget( aOverContFacesBtn, 9, 2 ); //21
|
myMainLayout->addWidget( aDoubleFacesBtn, 9, 2 ); //21
|
||||||
myMainLayout->addWidget( anAspectRatioLab, 10, 0 ); //22
|
myMainLayout->addWidget( aFacesOverLab, 10, 0 ); //22
|
||||||
myMainLayout->addWidget( aComputeFaceBtn, 10, 2 ); //23
|
myMainLayout->addWidget( aFacesOver, 10, 1 ); //23
|
||||||
myMainLayout->addWidget( myPlot, 11, 0, 1, 3 );//24
|
myMainLayout->addWidget( aOverContFacesBtn, 10, 2 ); //24
|
||||||
myMainLayout->addWidget( aVolumesLab, 12, 0, 1, 3 );//25
|
myMainLayout->addWidget( anAspectRatioLab, 11, 0 ); //25
|
||||||
myMainLayout->addWidget( aVolumesDoubleLab, 13, 0 ); //26
|
myMainLayout->addWidget( aComputeFaceBtn, 11, 2 ); //26
|
||||||
myMainLayout->addWidget( aVolumesDouble, 13, 1 ); //27
|
myMainLayout->addWidget( myPlot, 12, 0, 1, 3 );//27
|
||||||
myMainLayout->addWidget( aDoubleVolumesBtn, 13, 2 ); //28
|
myMainLayout->addWidget( aVolumesLab, 13, 0, 1, 3 );//28
|
||||||
myMainLayout->addWidget( aVolumesOverLab, 14, 0 ); //28
|
myMainLayout->addWidget( aVolumesDoubleLab, 14, 0 ); //29
|
||||||
myMainLayout->addWidget( aVolumesOver, 14, 1 ); //30
|
myMainLayout->addWidget( aVolumesDouble, 14, 1 ); //30
|
||||||
myMainLayout->addWidget( aOverContVolumesBtn,14, 2 ); //31
|
myMainLayout->addWidget( aDoubleVolumesBtn, 14, 2 ); //31
|
||||||
myMainLayout->addWidget( anAspectRatio3DLab, 15, 0 ); //32
|
myMainLayout->addWidget( aVolumesOverLab, 15, 0 ); //32
|
||||||
myMainLayout->addWidget( aComputeVolumeBtn, 15, 2 ); //33
|
myMainLayout->addWidget( aVolumesOver, 15, 1 ); //33
|
||||||
myMainLayout->addWidget( myPlot3D, 16, 0, 1, 3 );//34
|
myMainLayout->addWidget( aOverContVolumesBtn,15, 2 ); //34
|
||||||
|
myMainLayout->addWidget( anAspectRatio3DLab, 16, 0 ); //35
|
||||||
|
myMainLayout->addWidget( aComputeVolumeBtn, 16, 2 ); //36
|
||||||
|
myMainLayout->addWidget( myPlot3D, 17, 0, 1, 3 );//37
|
||||||
|
|
||||||
myMainLayout->setColumnStretch( 0, 0 );
|
myMainLayout->setColumnStretch( 0, 0 );
|
||||||
myMainLayout->setColumnStretch( 1, 5 );
|
myMainLayout->setColumnStretch( 1, 5 );
|
||||||
@ -3460,6 +3473,7 @@ void SMESHGUI_CtrlInfo::showInfo( SMESH::SMESH_IDSource_ptr obj )
|
|||||||
if ( Max( (int)nbNodes, (int)nbElems ) <= ctrlLimit ) {
|
if ( Max( (int)nbNodes, (int)nbElems ) <= ctrlLimit ) {
|
||||||
// free nodes
|
// free nodes
|
||||||
computeFreeNodesInfo();
|
computeFreeNodesInfo();
|
||||||
|
computeNodesNbConnInfo();
|
||||||
// double nodes
|
// double nodes
|
||||||
if ( Max( (int)mesh->NbNodes(), (int)mesh->NbElements() ) <= ctrlLimit )
|
if ( Max( (int)mesh->NbNodes(), (int)mesh->NbElements() ) <= ctrlLimit )
|
||||||
computeDoubleNodesInfo();
|
computeDoubleNodesInfo();
|
||||||
@ -3467,10 +3481,11 @@ void SMESHGUI_CtrlInfo::showInfo( SMESH::SMESH_IDSource_ptr obj )
|
|||||||
else {
|
else {
|
||||||
myButtons[0]->setEnabled( true );
|
myButtons[0]->setEnabled( true );
|
||||||
myButtons[1]->setEnabled( true );
|
myButtons[1]->setEnabled( true );
|
||||||
|
myButtons[2]->setEnabled( true );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for( int i=2; i<=10; i++)
|
for( int i=2; i<=11; i++)
|
||||||
myMainLayout->itemAt(i)->widget()->setVisible( false );
|
myMainLayout->itemAt(i)->widget()->setVisible( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3480,7 +3495,7 @@ void SMESHGUI_CtrlInfo::showInfo( SMESH::SMESH_IDSource_ptr obj )
|
|||||||
if( nbElemsByType[ SMESH::EDGE ] <= ctrlLimit )
|
if( nbElemsByType[ SMESH::EDGE ] <= ctrlLimit )
|
||||||
computeDoubleEdgesInfo();
|
computeDoubleEdgesInfo();
|
||||||
else
|
else
|
||||||
myButtons[2]->setEnabled( true );
|
myButtons[3]->setEnabled( true );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for( int i=11; i<=14; i++)
|
for( int i=11; i<=14; i++)
|
||||||
@ -3498,19 +3513,19 @@ void SMESHGUI_CtrlInfo::showInfo( SMESH::SMESH_IDSource_ptr obj )
|
|||||||
computeAspectRatio();
|
computeAspectRatio();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
myButtons[3]->setEnabled( true );
|
|
||||||
myButtons[4]->setEnabled( true );
|
myButtons[4]->setEnabled( true );
|
||||||
myButtons[5]->setEnabled( true );
|
myButtons[5]->setEnabled( true );
|
||||||
|
myButtons[6]->setEnabled( true );
|
||||||
}
|
}
|
||||||
#ifdef DISABLE_PLOT2DVIEWER
|
#ifdef DISABLE_PLOT2DVIEWER
|
||||||
myMainLayout->setRowStretch(11,0);
|
myMainLayout->setRowStretch(12,0);
|
||||||
for( int i=22; i<=24; i++)
|
for( int i=25; i<=27; i++)
|
||||||
myMainLayout->itemAt(i)->widget()->setVisible( false );
|
myMainLayout->itemAt(i)->widget()->setVisible( false );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
myMainLayout->setRowStretch(11,0);
|
myMainLayout->setRowStretch(12,0);
|
||||||
for( int i=15; i<=24; i++)
|
for( int i=18; i<=27; i++)
|
||||||
myMainLayout->itemAt(i)->widget()->setVisible( false );
|
myMainLayout->itemAt(i)->widget()->setVisible( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3525,19 +3540,19 @@ void SMESHGUI_CtrlInfo::showInfo( SMESH::SMESH_IDSource_ptr obj )
|
|||||||
computeAspectRatio3D();
|
computeAspectRatio3D();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
myButtons[6]->setEnabled( true );
|
|
||||||
myButtons[7]->setEnabled( true );
|
myButtons[7]->setEnabled( true );
|
||||||
myButtons[8]->setEnabled( true );
|
myButtons[8]->setEnabled( true );
|
||||||
|
myButtons[9]->setEnabled( true );
|
||||||
}
|
}
|
||||||
#ifdef DISABLE_PLOT2DVIEWER
|
#ifdef DISABLE_PLOT2DVIEWER
|
||||||
myMainLayout->setRowStretch(16,0);
|
myMainLayout->setRowStretch(17,0);
|
||||||
for( int i=32; i<=34; i++)
|
for( int i=35; i<=37; i++)
|
||||||
myMainLayout->itemAt(i)->widget()->setVisible( false );
|
myMainLayout->itemAt(i)->widget()->setVisible( false );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
myMainLayout->setRowStretch(16,0);
|
myMainLayout->setRowStretch(17,0);
|
||||||
for( int i=25; i<=34; i++)
|
for( int i=28; i<=37; i++)
|
||||||
myMainLayout->itemAt(i)->widget()->setVisible( false );
|
myMainLayout->itemAt(i)->widget()->setVisible( false );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3583,38 +3598,58 @@ void SMESHGUI_CtrlInfo::computeFreeNodesInfo()
|
|||||||
|
|
||||||
void SMESHGUI_CtrlInfo::computeDoubleNodesInfo()
|
void SMESHGUI_CtrlInfo::computeDoubleNodesInfo()
|
||||||
{
|
{
|
||||||
computeNb( SMESH::FT_EqualNodes, 1, 2 );
|
computeNb( SMESH::FT_EqualNodes, 2, 3 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESHGUI_CtrlInfo::computeDoubleEdgesInfo()
|
void SMESHGUI_CtrlInfo::computeDoubleEdgesInfo()
|
||||||
{
|
{
|
||||||
computeNb( SMESH::FT_EqualEdges, 2, 3 );
|
computeNb( SMESH::FT_EqualEdges, 3, 4 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESHGUI_CtrlInfo::computeDoubleFacesInfo()
|
void SMESHGUI_CtrlInfo::computeDoubleFacesInfo()
|
||||||
{
|
{
|
||||||
computeNb( SMESH::FT_EqualFaces, 3, 4 );
|
computeNb( SMESH::FT_EqualFaces, 4, 5 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESHGUI_CtrlInfo::computeOverConstrainedFacesInfo()
|
void SMESHGUI_CtrlInfo::computeOverConstrainedFacesInfo()
|
||||||
{
|
{
|
||||||
computeNb( SMESH::FT_OverConstrainedFace, 4, 5 );
|
computeNb( SMESH::FT_OverConstrainedFace, 5, 6 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESHGUI_CtrlInfo::computeDoubleVolumesInfo()
|
void SMESHGUI_CtrlInfo::computeDoubleVolumesInfo()
|
||||||
{
|
{
|
||||||
computeNb( SMESH::FT_EqualVolumes, 6, 6 );
|
computeNb( SMESH::FT_EqualVolumes, 7, 7 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESHGUI_CtrlInfo::computeOverConstrainedVolumesInfo()
|
void SMESHGUI_CtrlInfo::computeOverConstrainedVolumesInfo()
|
||||||
{
|
{
|
||||||
computeNb( SMESH::FT_OverConstrainedVolume, 7, 7 );
|
computeNb( SMESH::FT_OverConstrainedVolume, 8, 8 );
|
||||||
|
}
|
||||||
|
|
||||||
|
void SMESHGUI_CtrlInfo::computeNodesNbConnInfo()
|
||||||
|
{
|
||||||
|
myButtons[ 1 ]->setEnabled( false );
|
||||||
|
myWidgets[ 2 ]->setText( "" );
|
||||||
|
SMESH::SMESH_Mesh_var mesh = myObject->GetMesh();
|
||||||
|
if ( mesh->_is_nil() ) return;
|
||||||
|
if ( !mesh->IsLoaded() )
|
||||||
|
{
|
||||||
|
mesh->Load();
|
||||||
|
this->showInfo( myObject ); // try to show all values
|
||||||
|
if ( !myWidgets[ 2 ]->text().isEmpty() )
|
||||||
|
return; // already computed
|
||||||
|
}
|
||||||
|
myNodeConnFunctor->SetMesh( mesh );
|
||||||
|
SMESH::Histogram_var histogram =
|
||||||
|
myNodeConnFunctor->GetLocalHistogram( 1, /*isLogarithmic=*/false, myObject );
|
||||||
|
|
||||||
|
myWidgets[ 2 ]->setText( QString::number( histogram[0].max ));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESHGUI_CtrlInfo::computeAspectRatio()
|
void SMESHGUI_CtrlInfo::computeAspectRatio()
|
||||||
{
|
{
|
||||||
#ifndef DISABLE_PLOT2DVIEWER
|
#ifndef DISABLE_PLOT2DVIEWER
|
||||||
myButtons[5]->setEnabled( false );
|
myButtons[6]->setEnabled( false );
|
||||||
|
|
||||||
if ( myObject->_is_nil() ) return;
|
if ( myObject->_is_nil() ) return;
|
||||||
|
|
||||||
@ -3633,7 +3668,7 @@ void SMESHGUI_CtrlInfo::computeAspectRatio()
|
|||||||
void SMESHGUI_CtrlInfo::computeAspectRatio3D()
|
void SMESHGUI_CtrlInfo::computeAspectRatio3D()
|
||||||
{
|
{
|
||||||
#ifndef DISABLE_PLOT2DVIEWER
|
#ifndef DISABLE_PLOT2DVIEWER
|
||||||
myButtons[8]->setEnabled( false );
|
myButtons[9]->setEnabled( false );
|
||||||
|
|
||||||
if ( myObject->_is_nil() ) return;
|
if ( myObject->_is_nil() ) return;
|
||||||
|
|
||||||
@ -3654,9 +3689,9 @@ void SMESHGUI_CtrlInfo::computeAspectRatio3D()
|
|||||||
*/
|
*/
|
||||||
void SMESHGUI_CtrlInfo::clearInternal()
|
void SMESHGUI_CtrlInfo::clearInternal()
|
||||||
{
|
{
|
||||||
for( int i=0; i<=34; i++)
|
for( int i=0; i<=35; i++)
|
||||||
myMainLayout->itemAt(i)->widget()->setVisible( true );
|
myMainLayout->itemAt(i)->widget()->setVisible( true );
|
||||||
for( int i=0; i<=8; i++)
|
for( int i=0; i<=9; i++)
|
||||||
myButtons[i]->setEnabled( false );
|
myButtons[i]->setEnabled( false );
|
||||||
myPlot->detachItems();
|
myPlot->detachItems();
|
||||||
myPlot3D->detachItems();
|
myPlot3D->detachItems();
|
||||||
@ -3734,7 +3769,6 @@ void SMESHGUI_CtrlInfo::saveInfo( QTextStream &out ) {
|
|||||||
/*!
|
/*!
|
||||||
\brief Constructor
|
\brief Constructor
|
||||||
\param parent parent widget
|
\param parent parent widget
|
||||||
\param page specifies the dialog page to be shown at the start-up
|
|
||||||
*/
|
*/
|
||||||
SMESHGUI_CtrlInfoDlg::SMESHGUI_CtrlInfoDlg( QWidget* parent )
|
SMESHGUI_CtrlInfoDlg::SMESHGUI_CtrlInfoDlg( QWidget* parent )
|
||||||
: QDialog( parent )
|
: QDialog( parent )
|
||||||
|
@ -324,6 +324,7 @@ private slots:
|
|||||||
void computeAspectRatio();
|
void computeAspectRatio();
|
||||||
void computeAspectRatio3D();
|
void computeAspectRatio3D();
|
||||||
void computeFreeNodesInfo();
|
void computeFreeNodesInfo();
|
||||||
|
void computeNodesNbConnInfo();
|
||||||
void computeDoubleNodesInfo();
|
void computeDoubleNodesInfo();
|
||||||
void computeDoubleEdgesInfo();
|
void computeDoubleEdgesInfo();
|
||||||
void computeDoubleFacesInfo();
|
void computeDoubleFacesInfo();
|
||||||
@ -345,7 +346,7 @@ private:
|
|||||||
QwtPlot* myPlot3D;
|
QwtPlot* myPlot3D;
|
||||||
QList<QAbstractButton*> myButtons;
|
QList<QAbstractButton*> myButtons;
|
||||||
QList<TPredicate> myPredicates;
|
QList<TPredicate> myPredicates;
|
||||||
TNumFunctor myAspectRatio, myAspectRatio3D;
|
TNumFunctor myAspectRatio, myAspectRatio3D, myNodeConnFunctor;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SMESHGUI_EXPORT SMESHGUI_MeshInfoDlg : public QDialog
|
class SMESHGUI_EXPORT SMESHGUI_MeshInfoDlg : public QDialog
|
||||||
|
@ -98,6 +98,7 @@ namespace SMESHOp {
|
|||||||
// Controls -----------------------//--------------------------------
|
// Controls -----------------------//--------------------------------
|
||||||
OpFreeNode = 3000, // MENU CONTROLS - FREE NODES
|
OpFreeNode = 3000, // MENU CONTROLS - FREE NODES
|
||||||
OpEqualNode = 3001, // MENU CONTROLS - DOUBLE NODES
|
OpEqualNode = 3001, // MENU CONTROLS - DOUBLE NODES
|
||||||
|
OpNodeConnectivityNb = 3002, // MENU CONTROLS - NODE CONNECTIVITY NUMBER
|
||||||
OpFreeEdge = 3100, // MENU CONTROLS - FREE EDGES
|
OpFreeEdge = 3100, // MENU CONTROLS - FREE EDGES
|
||||||
OpFreeBorder = 3101, // MENU CONTROLS - FREE BORDERS
|
OpFreeBorder = 3101, // MENU CONTROLS - FREE BORDERS
|
||||||
OpLength = 3102, // MENU CONTROLS - LENGTH
|
OpLength = 3102, // MENU CONTROLS - LENGTH
|
||||||
|
@ -67,6 +67,10 @@
|
|||||||
<source>FREE_NODES</source>
|
<source>FREE_NODES</source>
|
||||||
<translation>Free nodes</translation>
|
<translation>Free nodes</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>NODE_CONNECTIVITY_NB</source>
|
||||||
|
<translation>Node connectivity number</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>FREE_EDGES</source>
|
<source>FREE_EDGES</source>
|
||||||
<translation>Free edges</translation>
|
<translation>Free edges</translation>
|
||||||
@ -624,6 +628,10 @@
|
|||||||
<source>MEN_FREE_NODE</source>
|
<source>MEN_FREE_NODE</source>
|
||||||
<translation>Free Nodes</translation>
|
<translation>Free Nodes</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>MEN_NODE_CONNECTIVITY_NB</source>
|
||||||
|
<translation>Node connectivity number</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>MEN_FREE_FACES</source>
|
<source>MEN_FREE_FACES</source>
|
||||||
<translation>Free Faces</translation>
|
<translation>Free Faces</translation>
|
||||||
@ -3190,6 +3198,10 @@ Use Display Entity menu command to show them.
|
|||||||
<source>STB_FREE_NODE</source>
|
<source>STB_FREE_NODE</source>
|
||||||
<translation>Free Nodes</translation>
|
<translation>Free Nodes</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>STB_NODE_CONNECTIVITY_NB</source>
|
||||||
|
<translation>Node connectivity number</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>STB_FREE_FACES</source>
|
<source>STB_FREE_FACES</source>
|
||||||
<translation>Free Faces</translation>
|
<translation>Free Faces</translation>
|
||||||
@ -3862,6 +3874,10 @@ Use Display Entity menu command to show them.
|
|||||||
<source>TOP_FREE_NODE</source>
|
<source>TOP_FREE_NODE</source>
|
||||||
<translation>Free Nodes</translation>
|
<translation>Free Nodes</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>TOP_NODE_CONNECTIVITY_NB</source>
|
||||||
|
<translation>Node connectivity number</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>TOP_FREE_FACES</source>
|
<source>TOP_FREE_FACES</source>
|
||||||
<translation>Free Faces</translation>
|
<translation>Free Faces</translation>
|
||||||
@ -5664,6 +5680,10 @@ Please check input data and try again</translation>
|
|||||||
<source>CONNECTED_ELEMS</source>
|
<source>CONNECTED_ELEMS</source>
|
||||||
<translation>Elements of a domain</translation>
|
<translation>Elements of a domain</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>NODE_CONN_NUMBER</source>
|
||||||
|
<translation>Connectivity number</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>NUMBEROFNODESINELEMENT</source>
|
<source>NUMBEROFNODESINELEMENT</source>
|
||||||
<translation>Number Of Nodes In Element</translation>
|
<translation>Number Of Nodes In Element</translation>
|
||||||
@ -7714,6 +7734,10 @@ as they are of improper type:
|
|||||||
<source>NUMBER_OF_THE_FREE_NODES</source>
|
<source>NUMBER_OF_THE_FREE_NODES</source>
|
||||||
<translation>Number of the free nodes</translation>
|
<translation>Number of the free nodes</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>MAX_NODE_CONNECTIVITY</source>
|
||||||
|
<translation>Max. number of connected elements</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>DOUBLE_NODES_TOLERANCE</source>
|
<source>DOUBLE_NODES_TOLERANCE</source>
|
||||||
<translation>Double nodes tolerance</translation>
|
<translation>Double nodes tolerance</translation>
|
||||||
|
@ -292,6 +292,8 @@ namespace {
|
|||||||
// - FT_ConnectedElements = 39
|
// - FT_ConnectedElements = 39
|
||||||
// v 7.6.0: FT_Undefined == 47, new items:
|
// v 7.6.0: FT_Undefined == 47, new items:
|
||||||
// - FT_BelongToMeshGroup = 22
|
// - FT_BelongToMeshGroup = 22
|
||||||
|
// v 8.1.0: FT_Undefined == 48, new items:
|
||||||
|
// - FT_NodeConnectivityNumber= 22
|
||||||
//
|
//
|
||||||
// It's necessary to continue recording this history and to fill
|
// It's necessary to continue recording this history and to fill
|
||||||
// undef2newItems (see below) accordingly.
|
// undef2newItems (see below) accordingly.
|
||||||
@ -313,6 +315,7 @@ namespace {
|
|||||||
undef2newItems[ 45 ].push_back( 36 );
|
undef2newItems[ 45 ].push_back( 36 );
|
||||||
undef2newItems[ 46 ].push_back( 39 );
|
undef2newItems[ 46 ].push_back( 39 );
|
||||||
undef2newItems[ 47 ].push_back( 22 );
|
undef2newItems[ 47 ].push_back( 22 );
|
||||||
|
undef2newItems[ 48 ].push_back( 22 );
|
||||||
|
|
||||||
ASSERT( undef2newItems.rbegin()->first == SMESH::FT_Undefined );
|
ASSERT( undef2newItems.rbegin()->first == SMESH::FT_Undefined );
|
||||||
}
|
}
|
||||||
@ -1564,7 +1567,7 @@ void _pyGen::CheckObjectIsReCreated( Handle(_pyObject)& theObj )
|
|||||||
const bool isHyp = theObj->IsKind( STANDARD_TYPE( _pyHypothesis ));
|
const bool isHyp = theObj->IsKind( STANDARD_TYPE( _pyHypothesis ));
|
||||||
Handle(_pyObject) existing;
|
Handle(_pyObject) existing;
|
||||||
if( isHyp )
|
if( isHyp )
|
||||||
existing = Handle(_pyObject)::DownCast( FindHyp( theObj->GetID() ) );
|
existing = FindHyp( theObj->GetID() );
|
||||||
else
|
else
|
||||||
existing = FindObject( theObj->GetID() );
|
existing = FindObject( theObj->GetID() );
|
||||||
if ( !existing.IsNull() && existing != theObj )
|
if ( !existing.IsNull() && existing != theObj )
|
||||||
@ -1622,9 +1625,10 @@ Handle(_pyObject) _pyGen::FindObject( const _pyID& theObjID ) const
|
|||||||
return id_obj->second;
|
return id_obj->second;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
map< _pyID, Handle(_pyMesh) >::const_iterator id_obj = myMeshes.find( theObjID );
|
_pyGen* me = const_cast< _pyGen* >( this );
|
||||||
|
map< _pyID, Handle(_pyMesh) >::iterator id_obj = me->myMeshes.find( theObjID );
|
||||||
if ( id_obj != myMeshes.end() )
|
if ( id_obj != myMeshes.end() )
|
||||||
return Handle(_pyObject)::DownCast( id_obj->second );
|
return id_obj->second;
|
||||||
}
|
}
|
||||||
// {
|
// {
|
||||||
// map< _pyID, Handle(_pyMeshEditor) >::const_iterator id_obj = myMeshEditors.find( theObjID );
|
// map< _pyID, Handle(_pyMeshEditor) >::const_iterator id_obj = myMeshEditors.find( theObjID );
|
||||||
|
@ -423,6 +423,7 @@ namespace SMESH
|
|||||||
case FT_MultiConnection2D: myStream<< "aMultiConnection2D"; break;
|
case FT_MultiConnection2D: myStream<< "aMultiConnection2D"; break;
|
||||||
case FT_Length: myStream<< "aLength"; break;
|
case FT_Length: myStream<< "aLength"; break;
|
||||||
case FT_Length2D: myStream<< "aLength2D"; break;
|
case FT_Length2D: myStream<< "aLength2D"; break;
|
||||||
|
case FT_NodeConnectivityNumber:myStream<< "aNodeConnectivityNumber";break;
|
||||||
case FT_BelongToMeshGroup: myStream<< "aBelongToMeshGroup"; break;
|
case FT_BelongToMeshGroup: myStream<< "aBelongToMeshGroup"; break;
|
||||||
case FT_BelongToGeom: myStream<< "aBelongToGeom"; break;
|
case FT_BelongToGeom: myStream<< "aBelongToGeom"; break;
|
||||||
case FT_BelongToPlane: myStream<< "aBelongToPlane"; break;
|
case FT_BelongToPlane: myStream<< "aBelongToPlane"; break;
|
||||||
@ -448,8 +449,8 @@ namespace SMESH
|
|||||||
case FT_LogicalNOT: myStream<< "aLogicalNOT"; break;
|
case FT_LogicalNOT: myStream<< "aLogicalNOT"; break;
|
||||||
case FT_LogicalAND: myStream<< "aLogicalAND"; break;
|
case FT_LogicalAND: myStream<< "aLogicalAND"; break;
|
||||||
case FT_LogicalOR: myStream<< "aLogicalOR"; break;
|
case FT_LogicalOR: myStream<< "aLogicalOR"; break;
|
||||||
case FT_Undefined:
|
case FT_Undefined: myStream<< "anUndefined"; break;
|
||||||
default: myStream<< "anUndefined"; break;
|
//default: -- commented to have a compilation warning
|
||||||
}
|
}
|
||||||
myStream<<theArg;
|
myStream<<theArg;
|
||||||
}
|
}
|
||||||
|
@ -564,6 +564,21 @@ FunctorType BallDiameter_i::GetFunctorType()
|
|||||||
return SMESH::FT_BallDiameter;
|
return SMESH::FT_BallDiameter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : NodeConnectivityNumber_i
|
||||||
|
Description : Functor returning diameter of a ball element
|
||||||
|
*/
|
||||||
|
NodeConnectivityNumber_i::NodeConnectivityNumber_i()
|
||||||
|
{
|
||||||
|
myNumericalFunctorPtr.reset( new Controls::NodeConnectivityNumber() );
|
||||||
|
myFunctorPtr = myNumericalFunctorPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
FunctorType NodeConnectivityNumber_i::GetFunctorType()
|
||||||
|
{
|
||||||
|
return SMESH::FT_NodeConnectivityNumber;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Class : MultiConnection2D_i
|
Class : MultiConnection2D_i
|
||||||
Description : Functor for calculating number of faces conneted to the edge
|
Description : Functor for calculating number of faces conneted to the edge
|
||||||
@ -2122,6 +2137,14 @@ BallDiameter_ptr FilterManager_i::CreateBallDiameter()
|
|||||||
return anObj._retn();
|
return anObj._retn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NodeConnectivityNumber_ptr FilterManager_i::CreateNodeConnectivityNumber()
|
||||||
|
{
|
||||||
|
SMESH::NodeConnectivityNumber_i* aServant = new SMESH::NodeConnectivityNumber_i();
|
||||||
|
SMESH::NodeConnectivityNumber_var anObj = aServant->_this();
|
||||||
|
TPythonDump()<<aServant<<" = "<<this<<".CreateNodeConnectivityNumber()";
|
||||||
|
return anObj._retn();
|
||||||
|
}
|
||||||
|
|
||||||
BelongToMeshGroup_ptr FilterManager_i::CreateBelongToMeshGroup()
|
BelongToMeshGroup_ptr FilterManager_i::CreateBelongToMeshGroup()
|
||||||
{
|
{
|
||||||
SMESH::BelongToMeshGroup_i* aServant = new SMESH::BelongToMeshGroup_i();
|
SMESH::BelongToMeshGroup_i* aServant = new SMESH::BelongToMeshGroup_i();
|
||||||
@ -2966,6 +2989,9 @@ CORBA::Boolean Filter_i::SetCriteria( const SMESH::Filter::Criteria& theCriteria
|
|||||||
case SMESH::FT_BallDiameter:
|
case SMESH::FT_BallDiameter:
|
||||||
aFunctor = aFilterMgr->CreateBallDiameter();
|
aFunctor = aFilterMgr->CreateBallDiameter();
|
||||||
break;
|
break;
|
||||||
|
case SMESH::FT_NodeConnectivityNumber:
|
||||||
|
aFunctor = aFilterMgr->CreateNodeConnectivityNumber();
|
||||||
|
break;
|
||||||
|
|
||||||
// Predicates
|
// Predicates
|
||||||
|
|
||||||
@ -4052,6 +4078,7 @@ static const char** getFunctNames()
|
|||||||
"FT_MultiConnection2D",
|
"FT_MultiConnection2D",
|
||||||
"FT_Length",
|
"FT_Length",
|
||||||
"FT_Length2D",
|
"FT_Length2D",
|
||||||
|
"FT_NodeConnectivityNumber",
|
||||||
"FT_BelongToMeshGroup",
|
"FT_BelongToMeshGroup",
|
||||||
"FT_BelongToGeom",
|
"FT_BelongToGeom",
|
||||||
"FT_BelongToPlane",
|
"FT_BelongToPlane",
|
||||||
|
@ -311,6 +311,18 @@ namespace SMESH
|
|||||||
FunctorType GetFunctorType();
|
FunctorType GetFunctorType();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : NodeConnectivityNumber_i
|
||||||
|
Description : Functor returning diameter of a ball element
|
||||||
|
*/
|
||||||
|
class SMESH_I_EXPORT NodeConnectivityNumber_i: public virtual POA_SMESH::NodeConnectivityNumber,
|
||||||
|
public virtual NumericalFunctor_i
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NodeConnectivityNumber_i();
|
||||||
|
FunctorType GetFunctorType();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
PREDICATES
|
PREDICATES
|
||||||
@ -1075,6 +1087,7 @@ namespace SMESH
|
|||||||
MaxElementLength3D_ptr CreateMaxElementLength3D();
|
MaxElementLength3D_ptr CreateMaxElementLength3D();
|
||||||
Length_ptr CreateLength();
|
Length_ptr CreateLength();
|
||||||
Length2D_ptr CreateLength2D();
|
Length2D_ptr CreateLength2D();
|
||||||
|
NodeConnectivityNumber_ptr CreateNodeConnectivityNumber();
|
||||||
MultiConnection_ptr CreateMultiConnection();
|
MultiConnection_ptr CreateMultiConnection();
|
||||||
MultiConnection2D_ptr CreateMultiConnection2D();
|
MultiConnection2D_ptr CreateMultiConnection2D();
|
||||||
BallDiameter_ptr CreateBallDiameter();
|
BallDiameter_ptr CreateBallDiameter();
|
||||||
|
@ -964,6 +964,10 @@ class smeshBuilder(object, SMESH._objref_SMESH_Gen):
|
|||||||
functor = aFilterMgr.CreateLength()
|
functor = aFilterMgr.CreateLength()
|
||||||
elif theCriterion == FT_Length2D:
|
elif theCriterion == FT_Length2D:
|
||||||
functor = aFilterMgr.CreateLength2D()
|
functor = aFilterMgr.CreateLength2D()
|
||||||
|
elif theCriterion == FT_NodeConnectivityNumber:
|
||||||
|
functor = aFilterMgr.CreateNodeConnectivityNumber()
|
||||||
|
elif theCriterion == FT_BallDiameter:
|
||||||
|
functor = aFilterMgr.CreateBallDiameter()
|
||||||
else:
|
else:
|
||||||
print "Error: given parameter is not numerical functor type."
|
print "Error: given parameter is not numerical functor type."
|
||||||
aFilterMgr.UnRegister()
|
aFilterMgr.UnRegister()
|
||||||
|
Loading…
Reference in New Issue
Block a user