mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-04-08 10:37:28 +05:00
IMP19938
This commit is contained in:
parent
6d82dda93c
commit
0dd6c95e10
@ -49,6 +49,7 @@ module SMESH
|
|||||||
FT_FreeBorders,
|
FT_FreeBorders,
|
||||||
FT_FreeEdges,
|
FT_FreeEdges,
|
||||||
FT_FreeNodes,
|
FT_FreeNodes,
|
||||||
|
FT_FreeFaces,
|
||||||
FT_MultiConnection,
|
FT_MultiConnection,
|
||||||
FT_MultiConnection2D,
|
FT_MultiConnection2D,
|
||||||
FT_Length,
|
FT_Length,
|
||||||
@ -60,6 +61,9 @@ module SMESH
|
|||||||
FT_LyingOnGeom,
|
FT_LyingOnGeom,
|
||||||
FT_RangeOfIds,
|
FT_RangeOfIds,
|
||||||
FT_BadOrientedVolume,
|
FT_BadOrientedVolume,
|
||||||
|
FT_LinearOrQuadratic,
|
||||||
|
FT_GroupColor,
|
||||||
|
FT_ElemGeomType,
|
||||||
FT_LessThan,
|
FT_LessThan,
|
||||||
FT_MoreThan,
|
FT_MoreThan,
|
||||||
FT_EqualTo,
|
FT_EqualTo,
|
||||||
@ -126,7 +130,7 @@ module SMESH
|
|||||||
typedef sequence<Value> Values;
|
typedef sequence<Value> Values;
|
||||||
Values GetValues();
|
Values GetValues();
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Predicates are intended for verification of criteria,
|
* Predicates are intended for verification of criteria,
|
||||||
* must return bool value by mesh id
|
* must return bool value by mesh id
|
||||||
@ -258,6 +262,12 @@ module SMESH
|
|||||||
*/
|
*/
|
||||||
interface FreeNodes: Predicate{};
|
interface FreeNodes: Predicate{};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Logical functor (predicate) "Free faces".
|
||||||
|
* Verify whether 2D mesh element is free ( i.e. connected to one volume only )
|
||||||
|
*/
|
||||||
|
interface FreeFaces: Predicate{};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Abstract logical functor (predicate) "RangeOfIds".
|
* Abstract logical functor (predicate) "RangeOfIds".
|
||||||
* Verify whether an Entity Id belongs to defined sequence of id's
|
* Verify whether an Entity Id belongs to defined sequence of id's
|
||||||
@ -308,6 +318,33 @@ module SMESH
|
|||||||
interface LogicalAND: LogicalBinary{};
|
interface LogicalAND: LogicalBinary{};
|
||||||
interface LogicalOR : LogicalBinary{};
|
interface LogicalOR : LogicalBinary{};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Logical functor (predicate) "Is element Linear or Quadratic".
|
||||||
|
* Verify whether a mesh element is linear
|
||||||
|
*/
|
||||||
|
interface LinearOrQuadratic: Predicate {
|
||||||
|
void SetElementType( in ElementType theType );
|
||||||
|
};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Functor "Group Color"
|
||||||
|
* Returns color of group to which mesh element belongs to
|
||||||
|
*/
|
||||||
|
interface GroupColor : Predicate{
|
||||||
|
void SetElementType( in ElementType theType );
|
||||||
|
void SetColorStr( in string theColor );
|
||||||
|
string GetColorStr();
|
||||||
|
};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Functor "Element geometry type"
|
||||||
|
* Returns is element has indicated geometry type
|
||||||
|
*/
|
||||||
|
interface ElemGeomType : Predicate{
|
||||||
|
void SetElementType ( in ElementType theType );
|
||||||
|
void SetGeometryType( in GeometryType theType );
|
||||||
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Filter
|
* Filter
|
||||||
*/
|
*/
|
||||||
@ -324,6 +361,7 @@ module SMESH
|
|||||||
* ThresholdStr - Threshold value defined as string. Used for:
|
* ThresholdStr - Threshold value defined as string. Used for:
|
||||||
* 1. Diaposon of identifiers. Example: "1,2,3,5-10,12,27-29"
|
* 1. Diaposon of identifiers. Example: "1,2,3,5-10,12,27-29"
|
||||||
* 2. BelongToGeom predicate for storing name of shape
|
* 2. BelongToGeom predicate for storing name of shape
|
||||||
|
* 3. GroupColor predicate for storing group color "0.2;0;0.5"
|
||||||
* ThresholdID - One more threshold value defined as string. Used for:
|
* ThresholdID - One more threshold value defined as string. Used for:
|
||||||
* 1. BelongToGeom predicate for storing id of shape
|
* 1. BelongToGeom predicate for storing id of shape
|
||||||
* Tolerance - Tolerance is used for comparators (EqualTo comparision) and for
|
* Tolerance - Tolerance is used for comparators (EqualTo comparision) and for
|
||||||
@ -429,10 +467,15 @@ module SMESH
|
|||||||
FreeBorders CreateFreeBorders();
|
FreeBorders CreateFreeBorders();
|
||||||
FreeEdges CreateFreeEdges();
|
FreeEdges CreateFreeEdges();
|
||||||
FreeNodes CreateFreeNodes();
|
FreeNodes CreateFreeNodes();
|
||||||
|
FreeFaces CreateFreeFaces();
|
||||||
|
|
||||||
RangeOfIds CreateRangeOfIds();
|
RangeOfIds CreateRangeOfIds();
|
||||||
|
|
||||||
BadOrientedVolume CreateBadOrientedVolume();
|
BadOrientedVolume CreateBadOrientedVolume();
|
||||||
|
LinearOrQuadratic CreateLinearOrQuadratic();
|
||||||
|
|
||||||
|
GroupColor CreateGroupColor();
|
||||||
|
ElemGeomType CreateElemGeomType();
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create comparators ( predicates )
|
* Create comparators ( predicates )
|
||||||
|
@ -114,6 +114,23 @@ module SMESH
|
|||||||
FACE,
|
FACE,
|
||||||
VOLUME
|
VOLUME
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* Enumeration for element geometry type, like in SMDS
|
||||||
|
*/
|
||||||
|
enum GeometryType
|
||||||
|
{
|
||||||
|
Geom_POINT,
|
||||||
|
Geom_EDGE,
|
||||||
|
Geom_TRIANGLE,
|
||||||
|
Geom_QUADRANGLE,
|
||||||
|
Geom_POLYGON,
|
||||||
|
Geom_TETRA,
|
||||||
|
Geom_PYRAMID,
|
||||||
|
Geom_HEXA,
|
||||||
|
Geom_PENTA,
|
||||||
|
Geom_POLYHEDRA
|
||||||
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* ElementOrder points out entities of what order are requested
|
* ElementOrder points out entities of what order are requested
|
||||||
|
@ -165,7 +165,8 @@ dist_salomeres_DATA = \
|
|||||||
mesh_node_to_point.png \
|
mesh_node_to_point.png \
|
||||||
mesh_tree_mesh_partial.png \
|
mesh_tree_mesh_partial.png \
|
||||||
mesh_extractGroup.png \
|
mesh_extractGroup.png \
|
||||||
mesh_precompute.png
|
mesh_precompute.png \
|
||||||
|
mesh_free_faces.png
|
||||||
|
|
||||||
# VSR: little trick to avoid putting if SMESHCatalog.xml to the distribution archive
|
# VSR: little trick to avoid putting if SMESHCatalog.xml to the distribution archive
|
||||||
nodist_salomeres_SCRIPTS = SMESHCatalog.xml
|
nodist_salomeres_SCRIPTS = SMESHCatalog.xml
|
||||||
|
@ -45,10 +45,12 @@ libSMESHControls_la_CPPFLAGS = \
|
|||||||
$(CAS_CPPFLAGS) \
|
$(CAS_CPPFLAGS) \
|
||||||
$(BOOST_CPPFLAGS) \
|
$(BOOST_CPPFLAGS) \
|
||||||
$(KERNEL_CXXFLAGS) \
|
$(KERNEL_CXXFLAGS) \
|
||||||
-I$(srcdir)/../SMDS
|
-I$(srcdir)/../SMDS \
|
||||||
|
-I$(srcdir)/../SMESHDS
|
||||||
|
|
||||||
libSMESHControls_la_LDFLAGS = \
|
libSMESHControls_la_LDFLAGS = \
|
||||||
../SMDS/libSMDS.la \
|
../SMDS/libSMDS.la \
|
||||||
|
../SMESHDS/libSMESHDS.la \
|
||||||
$(CAS_LDPATH) -lTKernel -lTKBRep -lTKG3d
|
$(CAS_LDPATH) -lTKernel -lTKBRep -lTKG3d
|
||||||
|
|
||||||
SMESHControls_CPPFLAGS = \
|
SMESHControls_CPPFLAGS = \
|
||||||
@ -57,6 +59,7 @@ SMESHControls_CPPFLAGS = \
|
|||||||
|
|
||||||
SMESHControls_LDADD = \
|
SMESHControls_LDADD = \
|
||||||
../SMDS/libSMDS.la \
|
../SMDS/libSMDS.la \
|
||||||
|
../SMESHDS/libSMESHDS.la \
|
||||||
libSMESHControls.la \
|
libSMESHControls.la \
|
||||||
$(KERNEL_LDFLAGS) -lOpUtil -lSALOMELocalTrace -lSALOMEBasics \
|
$(KERNEL_LDFLAGS) -lOpUtil -lSALOMELocalTrace -lSALOMEBasics \
|
||||||
$(GEOM_LDFLAGS) -lGEOMAlgo \
|
$(GEOM_LDFLAGS) -lGEOMAlgo \
|
||||||
|
@ -59,6 +59,9 @@
|
|||||||
#include "SMDS_QuadraticFaceOfNodes.hxx"
|
#include "SMDS_QuadraticFaceOfNodes.hxx"
|
||||||
#include "SMDS_QuadraticEdge.hxx"
|
#include "SMDS_QuadraticEdge.hxx"
|
||||||
|
|
||||||
|
#include "SMESHDS_Mesh.hxx"
|
||||||
|
#include "SMESHDS_GroupBase.hxx"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
AUXILIARY METHODS
|
AUXILIARY METHODS
|
||||||
*/
|
*/
|
||||||
@ -1722,6 +1725,275 @@ SMDSAbs_ElementType FreeNodes::GetType() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : FreeFaces
|
||||||
|
Description : Predicate for free faces
|
||||||
|
*/
|
||||||
|
|
||||||
|
FreeFaces::FreeFaces()
|
||||||
|
{
|
||||||
|
myMesh = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FreeFaces::SetMesh( const SMDS_Mesh* theMesh )
|
||||||
|
{
|
||||||
|
myMesh = theMesh;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool FreeFaces::IsSatisfy( long theId )
|
||||||
|
{
|
||||||
|
if (!myMesh) return false;
|
||||||
|
// check that faces nodes refers to less than two common volumes
|
||||||
|
const SMDS_MeshElement* aFace = myMesh->FindElement( theId );
|
||||||
|
if ( !aFace || aFace->GetType() != SMDSAbs_Face )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
int nbNode = aFace->NbNodes();
|
||||||
|
|
||||||
|
// collect volumes check that number of volumss with count equal nbNode not less than 2
|
||||||
|
typedef map< SMDS_MeshElement*, int > TMapOfVolume; // map of volume counters
|
||||||
|
typedef map< SMDS_MeshElement*, int >::iterator TItrMapOfVolume; // iterator
|
||||||
|
TMapOfVolume mapOfVol;
|
||||||
|
|
||||||
|
SMDS_ElemIteratorPtr nodeItr = aFace->nodesIterator();
|
||||||
|
while ( nodeItr->more() ) {
|
||||||
|
const SMDS_MeshNode* aNode = static_cast<const SMDS_MeshNode*>(nodeItr->next());
|
||||||
|
if ( !aNode ) continue;
|
||||||
|
SMDS_ElemIteratorPtr volItr = aNode->GetInverseElementIterator(SMDSAbs_Volume);
|
||||||
|
while ( volItr->more() ) {
|
||||||
|
SMDS_MeshElement* aVol = (SMDS_MeshElement*)volItr->next();
|
||||||
|
TItrMapOfVolume itr = mapOfVol.insert(make_pair(aVol, 0)).first;
|
||||||
|
(*itr).second++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int nbVol = 0;
|
||||||
|
TItrMapOfVolume volItr = mapOfVol.begin();
|
||||||
|
TItrMapOfVolume volEnd = mapOfVol.end();
|
||||||
|
for ( ; volItr != volEnd; ++volItr )
|
||||||
|
if ( (*volItr).second >= nbNode )
|
||||||
|
nbVol++;
|
||||||
|
// face is not free if number of volumes constructed on thier nodes more than one
|
||||||
|
return (nbVol < 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType FreeFaces::GetType() const
|
||||||
|
{
|
||||||
|
return SMDSAbs_Face;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : LinearOrQuadratic
|
||||||
|
Description : Predicate to verify whether a mesh element is linear
|
||||||
|
*/
|
||||||
|
|
||||||
|
LinearOrQuadratic::LinearOrQuadratic()
|
||||||
|
{
|
||||||
|
myMesh = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LinearOrQuadratic::SetMesh( const SMDS_Mesh* theMesh )
|
||||||
|
{
|
||||||
|
myMesh = theMesh;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool LinearOrQuadratic::IsSatisfy( long theId )
|
||||||
|
{
|
||||||
|
if (!myMesh) return false;
|
||||||
|
const SMDS_MeshElement* anElem = myMesh->FindElement( theId );
|
||||||
|
if ( !anElem || (myType != SMDSAbs_All && anElem->GetType() != myType) )
|
||||||
|
return false;
|
||||||
|
return (!anElem->IsQuadratic());
|
||||||
|
}
|
||||||
|
|
||||||
|
void LinearOrQuadratic::SetType( SMDSAbs_ElementType theType )
|
||||||
|
{
|
||||||
|
myType = theType;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType LinearOrQuadratic::GetType() const
|
||||||
|
{
|
||||||
|
return myType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : GroupColor
|
||||||
|
Description : Functor for check color of group to whic mesh element belongs to
|
||||||
|
*/
|
||||||
|
|
||||||
|
GroupColor::GroupColor()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GroupColor::IsSatisfy( long theId )
|
||||||
|
{
|
||||||
|
return (myIDs.find( theId ) != myIDs.end());
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupColor::SetType( SMDSAbs_ElementType theType )
|
||||||
|
{
|
||||||
|
myType = theType;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType GroupColor::GetType() const
|
||||||
|
{
|
||||||
|
return myType;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool isEqual( const Quantity_Color& theColor1,
|
||||||
|
const Quantity_Color& theColor2 )
|
||||||
|
{
|
||||||
|
// tolerance to compare colors
|
||||||
|
const double tol = 5*1e-3;
|
||||||
|
return ( fabs( theColor1.Red() - theColor2.Red() ) < tol &&
|
||||||
|
fabs( theColor1.Green() - theColor2.Green() ) < tol &&
|
||||||
|
fabs( theColor1.Blue() - theColor2.Blue() ) < tol );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GroupColor::SetMesh( const SMDS_Mesh* theMesh )
|
||||||
|
{
|
||||||
|
myIDs.clear();
|
||||||
|
|
||||||
|
const SMESHDS_Mesh* aMesh = dynamic_cast<const SMESHDS_Mesh*>(theMesh);
|
||||||
|
if ( !aMesh )
|
||||||
|
return;
|
||||||
|
|
||||||
|
int nbGrp = aMesh->GetNbGroups();
|
||||||
|
if ( !nbGrp )
|
||||||
|
return;
|
||||||
|
|
||||||
|
// iterates on groups and find necessary elements ids
|
||||||
|
const std::set<SMESHDS_GroupBase*>& aGroups = aMesh->GetGroups();
|
||||||
|
set<SMESHDS_GroupBase*>::const_iterator GrIt = aGroups.begin();
|
||||||
|
for (; GrIt != aGroups.end(); GrIt++) {
|
||||||
|
SMESHDS_GroupBase* aGrp = (*GrIt);
|
||||||
|
if ( !aGrp )
|
||||||
|
continue;
|
||||||
|
// check type and color of group
|
||||||
|
if ( !isEqual( myColor, aGrp->GetColor() ) )
|
||||||
|
continue;
|
||||||
|
if ( myType != SMDSAbs_All && myType != (SMDSAbs_ElementType)aGrp->GetType() )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// add elements IDS into control
|
||||||
|
int aSize = aGrp->Extent();
|
||||||
|
for (int i = 0; i < aSize; i++)
|
||||||
|
myIDs.insert( aGrp->GetID(i+1) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupColor::SetColorStr( const TCollection_AsciiString& theStr )
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aStr = theStr;
|
||||||
|
aStr.RemoveAll( ' ' );
|
||||||
|
aStr.RemoveAll( '\t' );
|
||||||
|
for ( int aPos = aStr.Search( ";;" ); aPos != -1; aPos = aStr.Search( ";;" ) )
|
||||||
|
aStr.Remove( aPos, 2 );
|
||||||
|
Standard_Real clr[3];
|
||||||
|
clr[0] = clr[1] = clr[2] = 0.;
|
||||||
|
for ( int i = 0; i < 3; i++ ) {
|
||||||
|
TCollection_AsciiString tmpStr = aStr.Token( ";", i+1 );
|
||||||
|
if ( !tmpStr.IsEmpty() && tmpStr.IsRealValue() )
|
||||||
|
clr[i] = tmpStr.RealValue();
|
||||||
|
}
|
||||||
|
myColor = Quantity_Color( clr[0], clr[1], clr[2], Quantity_TOC_RGB );
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
// name : GetRangeStr
|
||||||
|
// Purpose : Get range as a string.
|
||||||
|
// Example: "1,2,3,50-60,63,67,70-"
|
||||||
|
//=======================================================================
|
||||||
|
void GroupColor::GetColorStr( TCollection_AsciiString& theResStr ) const
|
||||||
|
{
|
||||||
|
theResStr.Clear();
|
||||||
|
theResStr += TCollection_AsciiString( myColor.Red() );
|
||||||
|
theResStr += TCollection_AsciiString( ";" ) + TCollection_AsciiString( myColor.Green() );
|
||||||
|
theResStr += TCollection_AsciiString( ";" ) + TCollection_AsciiString( myColor.Blue() );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : ElemGeomType
|
||||||
|
Description : Predicate to check element geometry type
|
||||||
|
*/
|
||||||
|
|
||||||
|
ElemGeomType::ElemGeomType()
|
||||||
|
{
|
||||||
|
myMesh = 0;
|
||||||
|
myType = SMDSAbs_All;
|
||||||
|
myGeomType = SMDSGeom_TRIANGLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ElemGeomType::SetMesh( const SMDS_Mesh* theMesh )
|
||||||
|
{
|
||||||
|
myMesh = theMesh;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ElemGeomType::IsSatisfy( long theId )
|
||||||
|
{
|
||||||
|
if (!myMesh) return false;
|
||||||
|
const SMDS_MeshElement* anElem = myMesh->FindElement( theId );
|
||||||
|
const SMDSAbs_ElementType anElemType = anElem->GetType();
|
||||||
|
if ( !anElem || (myType != SMDSAbs_All && anElemType != myType) )
|
||||||
|
return false;
|
||||||
|
const int aNbNode = anElem->NbNodes();
|
||||||
|
bool isOk = false;
|
||||||
|
switch( anElemType )
|
||||||
|
{
|
||||||
|
case SMDSAbs_Node:
|
||||||
|
isOk = (myGeomType == SMDSGeom_POINT);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SMDSAbs_Edge:
|
||||||
|
isOk = (myGeomType == SMDSGeom_EDGE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SMDSAbs_Face:
|
||||||
|
if ( myGeomType == SMDSGeom_TRIANGLE )
|
||||||
|
isOk = (!anElem->IsPoly() && aNbNode == 3);
|
||||||
|
else if ( myGeomType == SMDSGeom_QUADRANGLE )
|
||||||
|
isOk = (!anElem->IsPoly() && aNbNode == 4);
|
||||||
|
else if ( myGeomType == SMDSGeom_POLYGON )
|
||||||
|
isOk = anElem->IsPoly();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SMDSAbs_Volume:
|
||||||
|
if ( myGeomType == SMDSGeom_TETRA )
|
||||||
|
isOk = (!anElem->IsPoly() && aNbNode == 4);
|
||||||
|
else if ( myGeomType == SMDSGeom_PYRAMID )
|
||||||
|
isOk = (!anElem->IsPoly() && aNbNode == 5);
|
||||||
|
else if ( myGeomType == SMDSGeom_PENTA )
|
||||||
|
isOk = (!anElem->IsPoly() && aNbNode == 6);
|
||||||
|
else if ( myGeomType == SMDSGeom_HEXA )
|
||||||
|
isOk = (!anElem->IsPoly() && aNbNode == 8);
|
||||||
|
else if ( myGeomType == SMDSGeom_POLYHEDRA )
|
||||||
|
isOk = anElem->IsPoly();
|
||||||
|
break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
return isOk;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ElemGeomType::SetType( SMDSAbs_ElementType theType )
|
||||||
|
{
|
||||||
|
myType = theType;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_ElementType ElemGeomType::GetType() const
|
||||||
|
{
|
||||||
|
return myType;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ElemGeomType::SetGeomType( SMDSAbs_GeometryType theType )
|
||||||
|
{
|
||||||
|
myGeomType = theType;
|
||||||
|
}
|
||||||
|
|
||||||
|
SMDSAbs_GeometryType ElemGeomType::GetGeomType() const
|
||||||
|
{
|
||||||
|
return myGeomType;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Class : RangeOfIds
|
Class : RangeOfIds
|
||||||
Description : Predicate for Range of Ids.
|
Description : Predicate for Range of Ids.
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#include <TopoDS_Face.hxx>
|
#include <TopoDS_Face.hxx>
|
||||||
#include <TopTools_MapOfShape.hxx>
|
#include <TopTools_MapOfShape.hxx>
|
||||||
#include <BRepClass3d_SolidClassifier.hxx>
|
#include <BRepClass3d_SolidClassifier.hxx>
|
||||||
|
#include <Quantity_Color.hxx>
|
||||||
|
|
||||||
#include "SMDSAbs_ElementType.hxx"
|
#include "SMDSAbs_ElementType.hxx"
|
||||||
#include "SMDS_MeshNode.hxx"
|
#include "SMDS_MeshNode.hxx"
|
||||||
@ -710,6 +711,83 @@ namespace SMESH{
|
|||||||
typedef boost::shared_ptr<ElementsOnShape> ElementsOnShapePtr;
|
typedef boost::shared_ptr<ElementsOnShape> ElementsOnShapePtr;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : FreeFaces
|
||||||
|
Description : Predicate for free faces
|
||||||
|
*/
|
||||||
|
class SMESHCONTROLS_EXPORT FreeFaces: public virtual Predicate{
|
||||||
|
public:
|
||||||
|
FreeFaces();
|
||||||
|
virtual void SetMesh( const SMDS_Mesh* theMesh );
|
||||||
|
virtual bool IsSatisfy( long theElementId );
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
const SMDS_Mesh* myMesh;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : LinearOrQuadratic
|
||||||
|
Description : Predicate for free faces
|
||||||
|
*/
|
||||||
|
class SMESHCONTROLS_EXPORT LinearOrQuadratic: public virtual Predicate{
|
||||||
|
public:
|
||||||
|
LinearOrQuadratic();
|
||||||
|
virtual void SetMesh( const SMDS_Mesh* theMesh );
|
||||||
|
virtual bool IsSatisfy( long theElementId );
|
||||||
|
void SetType( SMDSAbs_ElementType theType );
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
const SMDS_Mesh* myMesh;
|
||||||
|
SMDSAbs_ElementType myType;
|
||||||
|
};
|
||||||
|
typedef boost::shared_ptr<LinearOrQuadratic> LinearOrQuadraticPtr;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : GroupColor
|
||||||
|
Description : Functor for check color of group to whic mesh element belongs to
|
||||||
|
*/
|
||||||
|
class SMESHCONTROLS_EXPORT GroupColor: public virtual Predicate{
|
||||||
|
public:
|
||||||
|
GroupColor();
|
||||||
|
virtual void SetMesh( const SMDS_Mesh* theMesh );
|
||||||
|
virtual bool IsSatisfy( long theElementId );
|
||||||
|
void SetType( SMDSAbs_ElementType theType );
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
void SetColorStr( const TCollection_AsciiString& );
|
||||||
|
void GetColorStr( TCollection_AsciiString& ) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
typedef std::set< long > TIDs;
|
||||||
|
|
||||||
|
Quantity_Color myColor;
|
||||||
|
SMDSAbs_ElementType myType;
|
||||||
|
TIDs myIDs;
|
||||||
|
};
|
||||||
|
typedef boost::shared_ptr<GroupColor> GroupColorPtr;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : ElemGeomType
|
||||||
|
Description : Predicate to check element geometry type
|
||||||
|
*/
|
||||||
|
class SMESHCONTROLS_EXPORT ElemGeomType: public virtual Predicate{
|
||||||
|
public:
|
||||||
|
ElemGeomType();
|
||||||
|
virtual void SetMesh( const SMDS_Mesh* theMesh );
|
||||||
|
virtual bool IsSatisfy( long theElementId );
|
||||||
|
void SetType( SMDSAbs_ElementType theType );
|
||||||
|
virtual SMDSAbs_ElementType GetType() const;
|
||||||
|
void SetGeomType( SMDSAbs_GeometryType theType );
|
||||||
|
virtual SMDSAbs_GeometryType GetGeomType() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
const SMDS_Mesh* myMesh;
|
||||||
|
SMDSAbs_ElementType myType;
|
||||||
|
SMDSAbs_GeometryType myGeomType;
|
||||||
|
};
|
||||||
|
typedef boost::shared_ptr<ElemGeomType> ElemGeomTypePtr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
FILTER
|
FILTER
|
||||||
*/
|
*/
|
||||||
|
@ -154,6 +154,27 @@ SMESH_ActorDef::SMESH_ActorDef()
|
|||||||
aFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE);
|
aFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE);
|
||||||
aFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD);
|
aFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD);
|
||||||
|
|
||||||
|
my2DExtProp = vtkProperty::New();
|
||||||
|
my2DExtProp->DeepCopy(mySurfaceProp);
|
||||||
|
SMESH::GetColor( "SMESH", "fill_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 170, 255 ) );
|
||||||
|
anRGB[0] = 1 - anRGB[0];
|
||||||
|
anRGB[1] = 1 - anRGB[1];
|
||||||
|
anRGB[2] = 1 - anRGB[2];
|
||||||
|
my2DExtProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
|
||||||
|
|
||||||
|
my2DExtActor = SMESH_DeviceActor::New();
|
||||||
|
my2DExtActor->SetUserMatrix(aMatrix);
|
||||||
|
my2DExtActor->PickableOff();
|
||||||
|
my2DExtActor->SetProperty(my2DExtProp);
|
||||||
|
my2DExtActor->SetBackfaceProperty(my2DExtProp);
|
||||||
|
my2DExtActor->SetRepresentation(SMESH_DeviceActor::eInsideframe);
|
||||||
|
aFilter = my2DExtActor->GetExtractUnstructuredGrid();
|
||||||
|
aFilter->RegisterCellsWithType(VTK_TRIANGLE);
|
||||||
|
aFilter->RegisterCellsWithType(VTK_POLYGON);
|
||||||
|
aFilter->RegisterCellsWithType(VTK_QUAD);
|
||||||
|
aFilter->RegisterCellsWithType(VTK_QUADRATIC_TRIANGLE);
|
||||||
|
aFilter->RegisterCellsWithType(VTK_QUADRATIC_QUAD);
|
||||||
|
|
||||||
my3DActor = SMESH_DeviceActor::New();
|
my3DActor = SMESH_DeviceActor::New();
|
||||||
my3DActor->SetUserMatrix(aMatrix);
|
my3DActor->SetUserMatrix(aMatrix);
|
||||||
my3DActor->PickableOff();
|
my3DActor->PickableOff();
|
||||||
@ -422,6 +443,8 @@ SMESH_ActorDef::~SMESH_ActorDef()
|
|||||||
my1DExtActor->Delete();
|
my1DExtActor->Delete();
|
||||||
|
|
||||||
my2DActor->Delete();
|
my2DActor->Delete();
|
||||||
|
my2DExtProp->Delete();
|
||||||
|
my2DExtActor->Delete();
|
||||||
my3DActor->Delete();
|
my3DActor->Delete();
|
||||||
|
|
||||||
myNodeActor->Delete();
|
myNodeActor->Delete();
|
||||||
@ -608,6 +631,10 @@ SetControlMode(eControl theMode,
|
|||||||
aFunctor.reset(new SMESH::Controls::FreeNodes());
|
aFunctor.reset(new SMESH::Controls::FreeNodes());
|
||||||
myControlActor = myNodeActor;
|
myControlActor = myNodeActor;
|
||||||
break;
|
break;
|
||||||
|
case eFreeFaces:
|
||||||
|
aFunctor.reset(new SMESH::Controls::FreeFaces());
|
||||||
|
myControlActor = my2DActor;
|
||||||
|
break;
|
||||||
case eMultiConnection:
|
case eMultiConnection:
|
||||||
aFunctor.reset(new SMESH::Controls::MultiConnection());
|
aFunctor.reset(new SMESH::Controls::MultiConnection());
|
||||||
myControlActor = my1DActor;
|
myControlActor = my1DActor;
|
||||||
@ -696,6 +723,9 @@ SetControlMode(eControl theMode,
|
|||||||
case eFreeBorders:
|
case eFreeBorders:
|
||||||
my1DExtActor->SetExtControlMode(aFunctor);
|
my1DExtActor->SetExtControlMode(aFunctor);
|
||||||
break;
|
break;
|
||||||
|
case eFreeFaces:
|
||||||
|
my2DExtActor->SetExtControlMode(aFunctor);
|
||||||
|
break;
|
||||||
case eLength2D:
|
case eLength2D:
|
||||||
case eMultiConnection2D:
|
case eMultiConnection2D:
|
||||||
my1DExtActor->SetExtControlMode(aFunctor,myScalarBarActor,myLookupTable);
|
my1DExtActor->SetExtControlMode(aFunctor,myScalarBarActor,myLookupTable);
|
||||||
@ -712,6 +742,7 @@ SetControlMode(eControl theMode,
|
|||||||
switch(myControlMode){
|
switch(myControlMode){
|
||||||
case eLength2D:
|
case eLength2D:
|
||||||
case eFreeEdges:
|
case eFreeEdges:
|
||||||
|
case eFreeFaces:
|
||||||
case eMultiConnection2D:
|
case eMultiConnection2D:
|
||||||
//SetEntityMode(eEdges);
|
//SetEntityMode(eEdges);
|
||||||
SetEntityMode(eFaces);
|
SetEntityMode(eFaces);
|
||||||
@ -744,6 +775,7 @@ void SMESH_ActorDef::AddToRender(vtkRenderer* theRenderer){
|
|||||||
|
|
||||||
my3DActor->AddToRender(theRenderer);
|
my3DActor->AddToRender(theRenderer);
|
||||||
my2DActor->AddToRender(theRenderer);
|
my2DActor->AddToRender(theRenderer);
|
||||||
|
my2DExtActor->AddToRender(theRenderer);
|
||||||
|
|
||||||
theRenderer->AddActor(my1DActor);
|
theRenderer->AddActor(my1DActor);
|
||||||
theRenderer->AddActor(my1DExtActor);
|
theRenderer->AddActor(my1DExtActor);
|
||||||
@ -773,6 +805,7 @@ void SMESH_ActorDef::RemoveFromRender(vtkRenderer* theRenderer){
|
|||||||
theRenderer->RemoveActor(my1DExtActor);
|
theRenderer->RemoveActor(my1DExtActor);
|
||||||
|
|
||||||
my2DActor->RemoveFromRender(theRenderer);
|
my2DActor->RemoveFromRender(theRenderer);
|
||||||
|
my2DExtActor->RemoveFromRender(theRenderer);
|
||||||
my3DActor->RemoveFromRender(theRenderer);
|
my3DActor->RemoveFromRender(theRenderer);
|
||||||
|
|
||||||
theRenderer->RemoveActor(myScalarBarActor);
|
theRenderer->RemoveActor(myScalarBarActor);
|
||||||
@ -804,17 +837,20 @@ bool SMESH_ActorDef::Init(TVisualObjPtr theVisualObj,
|
|||||||
my1DExtActor->Init(myVisualObj,myImplicitBoolean);
|
my1DExtActor->Init(myVisualObj,myImplicitBoolean);
|
||||||
|
|
||||||
my2DActor->Init(myVisualObj,myImplicitBoolean);
|
my2DActor->Init(myVisualObj,myImplicitBoolean);
|
||||||
|
my2DExtActor->Init(myVisualObj,myImplicitBoolean);
|
||||||
my3DActor->Init(myVisualObj,myImplicitBoolean);
|
my3DActor->Init(myVisualObj,myImplicitBoolean);
|
||||||
|
|
||||||
my1DActor->GetMapper()->SetLookupTable(myLookupTable);
|
my1DActor->GetMapper()->SetLookupTable(myLookupTable);
|
||||||
my1DExtActor->GetMapper()->SetLookupTable(myLookupTable);
|
my1DExtActor->GetMapper()->SetLookupTable(myLookupTable);
|
||||||
|
|
||||||
my2DActor->GetMapper()->SetLookupTable(myLookupTable);
|
my2DActor->GetMapper()->SetLookupTable(myLookupTable);
|
||||||
|
my2DExtActor->GetMapper()->SetLookupTable(myLookupTable);
|
||||||
my3DActor->GetMapper()->SetLookupTable(myLookupTable);
|
my3DActor->GetMapper()->SetLookupTable(myLookupTable);
|
||||||
|
|
||||||
vtkFloatingPointType aFactor, aUnits;
|
vtkFloatingPointType aFactor, aUnits;
|
||||||
my2DActor->GetPolygonOffsetParameters(aFactor,aUnits);
|
my2DActor->GetPolygonOffsetParameters(aFactor,aUnits);
|
||||||
my2DActor->SetPolygonOffsetParameters(aFactor,aUnits*0.75);
|
my2DActor->SetPolygonOffsetParameters(aFactor,aUnits*0.75);
|
||||||
|
my2DExtActor->SetPolygonOffsetParameters(aFactor,aUnits*0.5);
|
||||||
|
|
||||||
SUIT_ResourceMgr* mgr = SUIT_Session::session()->resourceMgr();
|
SUIT_ResourceMgr* mgr = SUIT_Session::session()->resourceMgr();
|
||||||
if( !mgr )
|
if( !mgr )
|
||||||
@ -870,6 +906,7 @@ void SMESH_ActorDef::SetTransform(VTKViewer_Transform* theTransform){
|
|||||||
my1DExtActor->SetTransform(theTransform);
|
my1DExtActor->SetTransform(theTransform);
|
||||||
|
|
||||||
my2DActor->SetTransform(theTransform);
|
my2DActor->SetTransform(theTransform);
|
||||||
|
my2DExtActor->SetTransform(theTransform);
|
||||||
my3DActor->SetTransform(theTransform);
|
my3DActor->SetTransform(theTransform);
|
||||||
|
|
||||||
Modified();
|
Modified();
|
||||||
@ -924,6 +961,7 @@ void SMESH_ActorDef::SetShrinkFactor(vtkFloatingPointType theValue){
|
|||||||
my1DExtActor->SetShrinkFactor(theValue);
|
my1DExtActor->SetShrinkFactor(theValue);
|
||||||
|
|
||||||
my2DActor->SetShrinkFactor(theValue);
|
my2DActor->SetShrinkFactor(theValue);
|
||||||
|
my2DExtActor->SetShrinkFactor(theValue);
|
||||||
my3DActor->SetShrinkFactor(theValue);
|
my3DActor->SetShrinkFactor(theValue);
|
||||||
|
|
||||||
Modified();
|
Modified();
|
||||||
@ -938,6 +976,7 @@ void SMESH_ActorDef::SetShrink(){
|
|||||||
my1DExtActor->SetShrink();
|
my1DExtActor->SetShrink();
|
||||||
|
|
||||||
my2DActor->SetShrink();
|
my2DActor->SetShrink();
|
||||||
|
my2DExtActor->SetShrink();
|
||||||
my3DActor->SetShrink();
|
my3DActor->SetShrink();
|
||||||
|
|
||||||
myIsShrunk = true;
|
myIsShrunk = true;
|
||||||
@ -953,6 +992,7 @@ void SMESH_ActorDef::UnShrink(){
|
|||||||
my1DExtActor->UnShrink();
|
my1DExtActor->UnShrink();
|
||||||
|
|
||||||
my2DActor->UnShrink();
|
my2DActor->UnShrink();
|
||||||
|
my2DExtActor->UnShrink();
|
||||||
my3DActor->UnShrink();
|
my3DActor->UnShrink();
|
||||||
|
|
||||||
myIsShrunk = false;
|
myIsShrunk = false;
|
||||||
@ -995,6 +1035,7 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){
|
|||||||
my1DExtActor->VisibilityOff();
|
my1DExtActor->VisibilityOff();
|
||||||
|
|
||||||
my2DActor->VisibilityOff();
|
my2DActor->VisibilityOff();
|
||||||
|
my2DExtActor->VisibilityOff();
|
||||||
my3DActor->VisibilityOff();
|
my3DActor->VisibilityOff();
|
||||||
|
|
||||||
myScalarBarActor->VisibilityOff();
|
myScalarBarActor->VisibilityOff();
|
||||||
@ -1014,6 +1055,9 @@ void SMESH_ActorDef::SetVisibility(int theMode, bool theIsUpdateRepersentation){
|
|||||||
case eFreeBorders:
|
case eFreeBorders:
|
||||||
my1DExtActor->VisibilityOn();
|
my1DExtActor->VisibilityOn();
|
||||||
break;
|
break;
|
||||||
|
case eFreeFaces:
|
||||||
|
my2DExtActor->VisibilityOn();
|
||||||
|
break;
|
||||||
case eLength2D:
|
case eLength2D:
|
||||||
case eMultiConnection2D:
|
case eMultiConnection2D:
|
||||||
my1DExtActor->VisibilityOn();
|
my1DExtActor->VisibilityOn();
|
||||||
@ -1185,12 +1229,15 @@ void SMESH_ActorDef::SetRepresentation(int theMode){
|
|||||||
my2DActor->SetProperty(aProp);
|
my2DActor->SetProperty(aProp);
|
||||||
my2DActor->SetBackfaceProperty(aBackProp);
|
my2DActor->SetBackfaceProperty(aBackProp);
|
||||||
my2DActor->SetRepresentation(aReperesent);
|
my2DActor->SetRepresentation(aReperesent);
|
||||||
|
|
||||||
|
my2DExtActor->SetRepresentation(aReperesent);
|
||||||
|
|
||||||
my3DActor->SetProperty(aProp);
|
my3DActor->SetProperty(aProp);
|
||||||
my3DActor->SetBackfaceProperty(aBackProp);
|
my3DActor->SetBackfaceProperty(aBackProp);
|
||||||
my3DActor->SetRepresentation(aReperesent);
|
my3DActor->SetRepresentation(aReperesent);
|
||||||
|
|
||||||
my1DExtActor->SetVisibility(false);
|
my1DExtActor->SetVisibility(false);
|
||||||
|
my2DExtActor->SetVisibility(false);
|
||||||
|
|
||||||
switch(myControlMode){
|
switch(myControlMode){
|
||||||
case eLength:
|
case eLength:
|
||||||
@ -1375,6 +1422,7 @@ void SMESH_ActorDef::SetSufaceColor(vtkFloatingPointType r,vtkFloatingPointType
|
|||||||
|
|
||||||
void SMESH_ActorDef::GetSufaceColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b){
|
void SMESH_ActorDef::GetSufaceColor(vtkFloatingPointType& r,vtkFloatingPointType& g,vtkFloatingPointType& b){
|
||||||
::GetColor(mySurfaceProp,r,g,b);
|
::GetColor(mySurfaceProp,r,g,b);
|
||||||
|
my2DExtProp->SetColor(1.0-r,1.0-g,1.0-b);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SMESH_ActorDef::SetBackSufaceColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b){
|
void SMESH_ActorDef::SetBackSufaceColor(vtkFloatingPointType r,vtkFloatingPointType g,vtkFloatingPointType b){
|
||||||
@ -1484,6 +1532,7 @@ SetImplicitFunctionUsed(bool theIsImplicitFunctionUsed)
|
|||||||
my1DExtActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
my1DExtActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
||||||
|
|
||||||
my2DActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
my2DActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
||||||
|
my2DExtActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
||||||
my3DActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
my3DActor->SetImplicitFunctionUsed(theIsImplicitFunctionUsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,8 +97,8 @@ class SMESHOBJECT_EXPORT SMESH_Actor: public SALOME_Actor
|
|||||||
virtual bool GetFacesOriented() = 0;
|
virtual bool GetFacesOriented() = 0;
|
||||||
|
|
||||||
enum eControl{eNone, eLength, eLength2D, eFreeBorders, eFreeEdges, eFreeNodes,
|
enum eControl{eNone, eLength, eLength2D, eFreeBorders, eFreeEdges, eFreeNodes,
|
||||||
eMultiConnection, eArea, eTaper, eAspectRatio, eMinimumAngle, eWarping,
|
eFreeFaces, eMultiConnection, eArea, eTaper, eAspectRatio,
|
||||||
eSkew, eAspectRatio3D, eMultiConnection2D, eVolume3D};
|
eMinimumAngle, eWarping, eSkew, eAspectRatio3D, eMultiConnection2D, eVolume3D};
|
||||||
virtual void SetControlMode(eControl theMode) = 0;
|
virtual void SetControlMode(eControl theMode) = 0;
|
||||||
virtual eControl GetControlMode() = 0;
|
virtual eControl GetControlMode() = 0;
|
||||||
|
|
||||||
|
@ -216,7 +216,9 @@ class SMESH_ActorDef : public SMESH_Actor
|
|||||||
SMESH_DeviceActor* myHighlitableActor;
|
SMESH_DeviceActor* myHighlitableActor;
|
||||||
|
|
||||||
eControl myControlMode;
|
eControl myControlMode;
|
||||||
|
vtkProperty* my2DExtProp;
|
||||||
SMESH_DeviceActor* my2DActor;
|
SMESH_DeviceActor* my2DActor;
|
||||||
|
SMESH_DeviceActor* my2DExtActor;
|
||||||
SMESH_DeviceActor* my3DActor;
|
SMESH_DeviceActor* my3DActor;
|
||||||
SMESH_DeviceActor* myControlActor;
|
SMESH_DeviceActor* myControlActor;
|
||||||
|
|
||||||
|
@ -485,13 +485,15 @@ SMESH_DeviceActor
|
|||||||
myVisualObj->UpdateFunctor(theFunctor);
|
myVisualObj->UpdateFunctor(theFunctor);
|
||||||
|
|
||||||
using namespace SMESH::Controls;
|
using namespace SMESH::Controls;
|
||||||
if(FreeBorders* aFreeBorders = dynamic_cast<FreeBorders*>(theFunctor.get())){
|
if ( dynamic_cast<FreeBorders*>(theFunctor.get()) ||
|
||||||
|
dynamic_cast<FreeFaces*>(theFunctor.get()) ) {
|
||||||
|
Predicate* aFreePredicate = dynamic_cast<Predicate*>(theFunctor.get());
|
||||||
myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
|
myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
|
||||||
vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
|
vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
|
||||||
vtkIdType aNbCells = aGrid->GetNumberOfCells();
|
vtkIdType aNbCells = aGrid->GetNumberOfCells();
|
||||||
for( vtkIdType i = 0; i < aNbCells; i++ ){
|
for( vtkIdType i = 0; i < aNbCells; i++ ){
|
||||||
vtkIdType anObjId = myVisualObj->GetElemObjId(i);
|
vtkIdType anObjId = myVisualObj->GetElemObjId(i);
|
||||||
if(aFreeBorders->IsSatisfy(anObjId))
|
if(aFreePredicate->IsSatisfy(anObjId))
|
||||||
myExtractUnstructuredGrid->RegisterCell(i);
|
myExtractUnstructuredGrid->RegisterCell(i);
|
||||||
}
|
}
|
||||||
if(!myExtractUnstructuredGrid->IsCellsRegistered())
|
if(!myExtractUnstructuredGrid->IsCellsRegistered())
|
||||||
@ -544,8 +546,7 @@ SMESH_DeviceActor
|
|||||||
|
|
||||||
SetUnstructuredGrid(aDataSet);
|
SetUnstructuredGrid(aDataSet);
|
||||||
aDataSet->Delete();
|
aDataSet->Delete();
|
||||||
}
|
}else if(FreeNodes* aFreeNodes = dynamic_cast<FreeNodes*>(theFunctor.get())){
|
||||||
else if(FreeNodes* aFreeNodes = dynamic_cast<FreeNodes*>(theFunctor.get())){
|
|
||||||
myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
|
myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
|
||||||
vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
|
vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
|
||||||
vtkIdType aNbCells = aGrid->GetNumberOfCells();
|
vtkIdType aNbCells = aGrid->GetNumberOfCells();
|
||||||
|
@ -39,6 +39,26 @@ enum SMDSAbs_ElementType
|
|||||||
SMDSAbs_NbElementTypes
|
SMDSAbs_NbElementTypes
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*! enumeration for element geometry type */
|
||||||
|
enum SMDSAbs_GeometryType
|
||||||
|
{
|
||||||
|
// 0D element
|
||||||
|
SMDSGeom_POINT,
|
||||||
|
// 1D element
|
||||||
|
SMDSGeom_EDGE,
|
||||||
|
// 2D element
|
||||||
|
SMDSGeom_TRIANGLE,
|
||||||
|
SMDSGeom_QUADRANGLE,
|
||||||
|
SMDSGeom_POLYGON,
|
||||||
|
// 3D element
|
||||||
|
SMDSGeom_TETRA,
|
||||||
|
SMDSGeom_PYRAMID,
|
||||||
|
SMDSGeom_PENTA,
|
||||||
|
SMDSGeom_HEXA,
|
||||||
|
SMDSGeom_POLYHEDRA,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
enum SMDSAbs_ElementOrder {
|
enum SMDSAbs_ElementOrder {
|
||||||
ORDER_ANY, /*! entities of any order */
|
ORDER_ANY, /*! entities of any order */
|
||||||
ORDER_LINEAR, /*! entities of 1st order */
|
ORDER_LINEAR, /*! entities of 1st order */
|
||||||
|
@ -811,6 +811,10 @@
|
|||||||
aTitle = QObject::tr( "SMESH_VOLUME" );
|
aTitle = QObject::tr( "SMESH_VOLUME" );
|
||||||
aControl = SMESH_Actor::eVolume3D;
|
aControl = SMESH_Actor::eVolume3D;
|
||||||
break;
|
break;
|
||||||
|
case 6021:
|
||||||
|
aTitle = QObject::tr( "FREE_FACES" );
|
||||||
|
aControl = SMESH_Actor::eFreeFaces;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
anActor->SetControlMode(aControl);
|
anActor->SetControlMode(aControl);
|
||||||
anActor->GetScalarBarActor()->SetTitle(aTitle.toLatin1().data());
|
anActor->GetScalarBarActor()->SetTitle(aTitle.toLatin1().data());
|
||||||
@ -2431,6 +2435,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
|
|||||||
case 6004:
|
case 6004:
|
||||||
case 6005:
|
case 6005:
|
||||||
case 6009:
|
case 6009:
|
||||||
|
case 6021:
|
||||||
if ( vtkwnd ) {
|
if ( vtkwnd ) {
|
||||||
|
|
||||||
LightApp_SelectionMgr* mgr = selectionMgr();
|
LightApp_SelectionMgr* mgr = selectionMgr();
|
||||||
@ -2654,6 +2659,7 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
createSMESHAction( 903, "WHAT_IS", "ICON_WHAT_IS" );
|
createSMESHAction( 903, "WHAT_IS", "ICON_WHAT_IS" );
|
||||||
createSMESHAction( 6001, "LENGTH", "ICON_LENGTH", 0, true );
|
createSMESHAction( 6001, "LENGTH", "ICON_LENGTH", 0, true );
|
||||||
createSMESHAction( 6002, "FREE_EDGE", "ICON_FREE_EDGE", 0, true );
|
createSMESHAction( 6002, "FREE_EDGE", "ICON_FREE_EDGE", 0, true );
|
||||||
|
createSMESHAction( 6021, "FREE_FACES", "ICON_FREE_FACES", 0, true );
|
||||||
createSMESHAction( 6003, "FREE_BORDER", "ICON_FREE_EDGE_2D", 0, true );
|
createSMESHAction( 6003, "FREE_BORDER", "ICON_FREE_EDGE_2D", 0, true );
|
||||||
createSMESHAction( 6004, "CONNECTION", "ICON_CONNECTION", 0, true );
|
createSMESHAction( 6004, "CONNECTION", "ICON_CONNECTION", 0, true );
|
||||||
createSMESHAction( 6005, "FREE_NODE", "ICON_FREE_NODE", 0, true );
|
createSMESHAction( 6005, "FREE_NODE", "ICON_FREE_NODE", 0, true );
|
||||||
@ -2813,6 +2819,7 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
createMenu( separator(), ctrlId, -1 );
|
createMenu( separator(), ctrlId, -1 );
|
||||||
createMenu( 6017, ctrlId, -1 );
|
createMenu( 6017, ctrlId, -1 );
|
||||||
createMenu( 6009, ctrlId, -1 );
|
createMenu( 6009, ctrlId, -1 );
|
||||||
|
createMenu( 6021, ctrlId, -1 );
|
||||||
createMenu( separator(), ctrlId, -1 );
|
createMenu( separator(), ctrlId, -1 );
|
||||||
|
|
||||||
createMenu( 400, addId, -1 );
|
createMenu( 400, addId, -1 );
|
||||||
@ -2905,6 +2912,7 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
createTool( separator(), ctrlTb );
|
createTool( separator(), ctrlTb );
|
||||||
createTool( 6017, ctrlTb );
|
createTool( 6017, ctrlTb );
|
||||||
createTool( 6009, ctrlTb );
|
createTool( 6009, ctrlTb );
|
||||||
|
createTool( 6021, ctrlTb );
|
||||||
createTool( separator(), ctrlTb );
|
createTool( separator(), ctrlTb );
|
||||||
|
|
||||||
createTool( 400, addRemTb );
|
createTool( 400, addRemTb );
|
||||||
@ -3223,6 +3231,11 @@ void SMESHGUI::initialize( CAM_Application* app )
|
|||||||
popupMgr()->setRule( action( 6009 ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
|
popupMgr()->setRule( action( 6009 ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
|
||||||
popupMgr()->setRule( action( 6009 ), "controlMode = 'eVolume3D'", QtxPopupMgr::ToggleRule );
|
popupMgr()->setRule( action( 6009 ), "controlMode = 'eVolume3D'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
|
popupMgr()->insert( action( 6021 ), anId, -1 ); // FREE_FACE
|
||||||
|
popupMgr()->setRule( action( 6021 ), aMeshInVtkHasFaces /*aMeshInVtkHasVolumes*/,
|
||||||
|
QtxPopupMgr::VisibleRule );
|
||||||
|
popupMgr()->setRule( action( 6021 ), "controlMode = 'eFreeFaces'", QtxPopupMgr::ToggleRule );
|
||||||
|
|
||||||
popupMgr()->insert( separator(), anId, -1 );
|
popupMgr()->insert( separator(), anId, -1 );
|
||||||
|
|
||||||
popupMgr()->insert( action( 201 ), anId, -1 ); // SCALAR_BAR_PROP
|
popupMgr()->insert( action( 201 ), anId, -1 ); // SCALAR_BAR_PROP
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "SMESHGUI_MeshUtils.h"
|
#include "SMESHGUI_MeshUtils.h"
|
||||||
#include "SMESHGUI_SpinBox.h"
|
#include "SMESHGUI_SpinBox.h"
|
||||||
#include "SMESHGUI_IdValidator.h"
|
#include "SMESHGUI_IdValidator.h"
|
||||||
|
#include "SMESHGUI_FilterDlg.h"
|
||||||
|
|
||||||
#include <SMESH_Actor.h>
|
#include <SMESH_Actor.h>
|
||||||
#include <SMESH_TypeFilter.hxx>
|
#include <SMESH_TypeFilter.hxx>
|
||||||
@ -109,7 +110,8 @@ private:
|
|||||||
SMESHGUI_ExtrusionAlongPathDlg::SMESHGUI_ExtrusionAlongPathDlg( SMESHGUI* theModule )
|
SMESHGUI_ExtrusionAlongPathDlg::SMESHGUI_ExtrusionAlongPathDlg( SMESHGUI* theModule )
|
||||||
: QDialog( SMESH::GetDesktop( theModule ) ),
|
: QDialog( SMESH::GetDesktop( theModule ) ),
|
||||||
mySMESHGUI( theModule ),
|
mySMESHGUI( theModule ),
|
||||||
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )
|
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ),
|
||||||
|
myFilterDlg( 0 )
|
||||||
{
|
{
|
||||||
SUIT_ResourceMgr* mgr = SMESH::GetResourceMgr( mySMESHGUI );
|
SUIT_ResourceMgr* mgr = SMESH::GetResourceMgr( mySMESHGUI );
|
||||||
QPixmap edgeImage ( mgr->loadPixmap("SMESH", tr("ICON_DLG_EDGE")));
|
QPixmap edgeImage ( mgr->loadPixmap("SMESH", tr("ICON_DLG_EDGE")));
|
||||||
@ -164,6 +166,8 @@ SMESHGUI_ExtrusionAlongPathDlg::SMESHGUI_ExtrusionAlongPathDlg( SMESHGUI* theMod
|
|||||||
|
|
||||||
ElementsLineEdit = new QLineEdit(GroupArguments);
|
ElementsLineEdit = new QLineEdit(GroupArguments);
|
||||||
ElementsLineEdit->setValidator(myIdValidator);
|
ElementsLineEdit->setValidator(myIdValidator);
|
||||||
|
QPushButton* filterBtn = new QPushButton( tr( "SMESH_BUT_FILTER" ), GroupArguments );
|
||||||
|
connect(filterBtn, SIGNAL(clicked()), this, SLOT(setFilters()));
|
||||||
|
|
||||||
// Controls for the whole mesh selection
|
// Controls for the whole mesh selection
|
||||||
MeshCheck = new QCheckBox(tr("SMESH_SELECT_WHOLE_MESH"), GroupArguments);
|
MeshCheck = new QCheckBox(tr("SMESH_SELECT_WHOLE_MESH"), GroupArguments);
|
||||||
@ -272,11 +276,12 @@ SMESHGUI_ExtrusionAlongPathDlg::SMESHGUI_ExtrusionAlongPathDlg( SMESHGUI* theMod
|
|||||||
GroupArgumentsLayout->addWidget(ElementsLab, 0, 0);
|
GroupArgumentsLayout->addWidget(ElementsLab, 0, 0);
|
||||||
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
|
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
|
||||||
GroupArgumentsLayout->addWidget(ElementsLineEdit, 0, 2);
|
GroupArgumentsLayout->addWidget(ElementsLineEdit, 0, 2);
|
||||||
GroupArgumentsLayout->addWidget(MeshCheck, 1, 0, 1, 3);
|
GroupArgumentsLayout->addWidget(filterBtn, 0, 3);
|
||||||
GroupArgumentsLayout->addWidget(PathGrp, 2, 0, 1, 3);
|
GroupArgumentsLayout->addWidget(MeshCheck, 1, 0, 1, 4);
|
||||||
GroupArgumentsLayout->addWidget(BasePointGrp, 3, 0, 1, 3);
|
GroupArgumentsLayout->addWidget(PathGrp, 2, 0, 1, 4);
|
||||||
GroupArgumentsLayout->addWidget(AnglesGrp, 4, 0, 1, 3);
|
GroupArgumentsLayout->addWidget(BasePointGrp, 3, 0, 1, 4);
|
||||||
GroupArgumentsLayout->addWidget(MakeGroupsCheck, 5, 0, 1, 3);
|
GroupArgumentsLayout->addWidget(AnglesGrp, 4, 0, 1, 4);
|
||||||
|
GroupArgumentsLayout->addWidget(MakeGroupsCheck, 5, 0, 1, 4);
|
||||||
|
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
// common buttons group box
|
// common buttons group box
|
||||||
@ -382,6 +387,10 @@ SMESHGUI_ExtrusionAlongPathDlg::SMESHGUI_ExtrusionAlongPathDlg( SMESHGUI* theMod
|
|||||||
SMESHGUI_ExtrusionAlongPathDlg::~SMESHGUI_ExtrusionAlongPathDlg()
|
SMESHGUI_ExtrusionAlongPathDlg::~SMESHGUI_ExtrusionAlongPathDlg()
|
||||||
{
|
{
|
||||||
// no need to delete child widgets, Qt does it all for us
|
// no need to delete child widgets, Qt does it all for us
|
||||||
|
if ( myFilterDlg != 0 ) {
|
||||||
|
myFilterDlg->setParent( 0 );
|
||||||
|
delete myFilterDlg;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -693,8 +702,11 @@ void SMESHGUI_ExtrusionAlongPathDlg::reject()
|
|||||||
disconnect(mySelectionMgr, 0, this, 0);
|
disconnect(mySelectionMgr, 0, this, 0);
|
||||||
mySelectionMgr->clearFilters();
|
mySelectionMgr->clearFilters();
|
||||||
//mySelectionMgr->clearSelected();
|
//mySelectionMgr->clearSelected();
|
||||||
SMESH::SetPickable(); // ???
|
if (SMESH::GetCurrentVtkView()) {
|
||||||
SMESH::SetPointRepresentation(false);
|
SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters
|
||||||
|
SMESH::SetPointRepresentation(false);
|
||||||
|
SMESH::SetPickable();
|
||||||
|
}
|
||||||
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
||||||
aViewWindow->SetSelectionMode(ActorSelection);
|
aViewWindow->SetSelectionMode(ActorSelection);
|
||||||
mySMESHGUI->ResetState();
|
mySMESHGUI->ResetState();
|
||||||
@ -1199,3 +1211,25 @@ void SMESHGUI_ExtrusionAlongPathDlg::keyPressEvent( QKeyEvent* e )
|
|||||||
ClickOnHelp();
|
ClickOnHelp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : setFilters()
|
||||||
|
// purpose : SLOT. Called when "Filter" button pressed.
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_ExtrusionAlongPathDlg::setFilters()
|
||||||
|
{
|
||||||
|
if ( !myFilterDlg )
|
||||||
|
{
|
||||||
|
QList<int> types;
|
||||||
|
types.append( SMESH::EDGE );
|
||||||
|
types.append( SMESH::FACE );
|
||||||
|
myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, types );
|
||||||
|
}
|
||||||
|
myFilterDlg->Init( Elements1dRB->isChecked() ? SMESH::EDGE : SMESH::FACE );
|
||||||
|
|
||||||
|
myFilterDlg->SetSelection();
|
||||||
|
myFilterDlg->SetMesh( myMesh );
|
||||||
|
myFilterDlg->SetSourceWg( ElementsLineEdit );
|
||||||
|
|
||||||
|
myFilterDlg->show();
|
||||||
|
}
|
||||||
|
@ -50,6 +50,7 @@ class SMESHGUI;
|
|||||||
class SMESH_Actor;
|
class SMESH_Actor;
|
||||||
class SMESHGUI_IdValidator;
|
class SMESHGUI_IdValidator;
|
||||||
class SMESHGUI_SpinBox;
|
class SMESHGUI_SpinBox;
|
||||||
|
class SMESHGUI_FilterDlg;
|
||||||
class SVTK_Selector;
|
class SVTK_Selector;
|
||||||
class LightApp_SelectionMgr;
|
class LightApp_SelectionMgr;
|
||||||
class SUIT_SelectionFilter;
|
class SUIT_SelectionFilter;
|
||||||
@ -134,6 +135,8 @@ private:
|
|||||||
|
|
||||||
QString myHelpFileName;
|
QString myHelpFileName;
|
||||||
|
|
||||||
|
SMESHGUI_FilterDlg* myFilterDlg;
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void reject();
|
void reject();
|
||||||
|
|
||||||
@ -150,6 +153,7 @@ private slots:
|
|||||||
void onSelectMesh();
|
void onSelectMesh();
|
||||||
void OnAngleAdded();
|
void OnAngleAdded();
|
||||||
void OnAngleRemoved();
|
void OnAngleRemoved();
|
||||||
|
void setFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SMESHGUI_EXTRUSIONALONGPATHDLG_H
|
#endif // SMESHGUI_EXTRUSIONALONGPATHDLG_H
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "SMESHGUI_MeshUtils.h"
|
#include "SMESHGUI_MeshUtils.h"
|
||||||
#include "SMESHGUI_SpinBox.h"
|
#include "SMESHGUI_SpinBox.h"
|
||||||
#include "SMESHGUI_IdValidator.h"
|
#include "SMESHGUI_IdValidator.h"
|
||||||
|
#include "SMESHGUI_FilterDlg.h"
|
||||||
|
|
||||||
#include <SMESH_Actor.h>
|
#include <SMESH_Actor.h>
|
||||||
#include <SMESH_TypeFilter.hxx>
|
#include <SMESH_TypeFilter.hxx>
|
||||||
@ -87,7 +88,8 @@
|
|||||||
SMESHGUI_ExtrusionDlg::SMESHGUI_ExtrusionDlg (SMESHGUI* theModule)
|
SMESHGUI_ExtrusionDlg::SMESHGUI_ExtrusionDlg (SMESHGUI* theModule)
|
||||||
: QDialog( SMESH::GetDesktop( theModule ) ),
|
: QDialog( SMESH::GetDesktop( theModule ) ),
|
||||||
mySMESHGUI( theModule ),
|
mySMESHGUI( theModule ),
|
||||||
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )
|
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ),
|
||||||
|
myFilterDlg( 0 )
|
||||||
{
|
{
|
||||||
QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_DLG_EDGE")));
|
QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_DLG_EDGE")));
|
||||||
QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_DLG_TRIANGLE")));
|
QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_DLG_TRIANGLE")));
|
||||||
@ -160,6 +162,8 @@ SMESHGUI_ExtrusionDlg::SMESHGUI_ExtrusionDlg (SMESHGUI* theModule)
|
|||||||
|
|
||||||
LineEditElements = new QLineEdit(GroupArguments);
|
LineEditElements = new QLineEdit(GroupArguments);
|
||||||
LineEditElements->setValidator(myIdValidator);
|
LineEditElements->setValidator(myIdValidator);
|
||||||
|
QPushButton* filterBtn = new QPushButton( tr( "SMESH_BUT_FILTER" ), GroupArguments );
|
||||||
|
connect(filterBtn, SIGNAL(clicked()), this, SLOT(setFilters()));
|
||||||
|
|
||||||
// Control for the whole mesh selection
|
// Control for the whole mesh selection
|
||||||
CheckBoxMesh = new QCheckBox(tr("SMESH_SELECT_WHOLE_MESH"), GroupArguments);
|
CheckBoxMesh = new QCheckBox(tr("SMESH_SELECT_WHOLE_MESH"), GroupArguments);
|
||||||
@ -200,7 +204,8 @@ SMESHGUI_ExtrusionDlg::SMESHGUI_ExtrusionDlg (SMESHGUI* theModule)
|
|||||||
|
|
||||||
GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
|
GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
|
||||||
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
|
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
|
||||||
GroupArgumentsLayout->addWidget(LineEditElements, 0, 2, 1, 6);
|
GroupArgumentsLayout->addWidget(LineEditElements, 0, 2, 1, 5);
|
||||||
|
GroupArgumentsLayout->addWidget(filterBtn, 0, 7);
|
||||||
GroupArgumentsLayout->addWidget(CheckBoxMesh, 1, 0, 1, 8);
|
GroupArgumentsLayout->addWidget(CheckBoxMesh, 1, 0, 1, 8);
|
||||||
GroupArgumentsLayout->addWidget(TextLabelDistance, 2, 0);
|
GroupArgumentsLayout->addWidget(TextLabelDistance, 2, 0);
|
||||||
GroupArgumentsLayout->addWidget(TextLabelDx, 2, 2);
|
GroupArgumentsLayout->addWidget(TextLabelDx, 2, 2);
|
||||||
@ -296,6 +301,10 @@ SMESHGUI_ExtrusionDlg::SMESHGUI_ExtrusionDlg (SMESHGUI* theModule)
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
SMESHGUI_ExtrusionDlg::~SMESHGUI_ExtrusionDlg()
|
SMESHGUI_ExtrusionDlg::~SMESHGUI_ExtrusionDlg()
|
||||||
{
|
{
|
||||||
|
if ( myFilterDlg != 0 ) {
|
||||||
|
myFilterDlg->setParent( 0 );
|
||||||
|
delete myFilterDlg;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -452,8 +461,11 @@ void SMESHGUI_ExtrusionDlg::ClickOnCancel()
|
|||||||
disconnect(mySelectionMgr, 0, this, 0);
|
disconnect(mySelectionMgr, 0, this, 0);
|
||||||
mySelectionMgr->clearFilters();
|
mySelectionMgr->clearFilters();
|
||||||
//mySelectionMgr->clearSelected();
|
//mySelectionMgr->clearSelected();
|
||||||
SMESH::SetPickable(); // ???
|
if (SMESH::GetCurrentVtkView()) {
|
||||||
SMESH::SetPointRepresentation(false);
|
SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters
|
||||||
|
SMESH::SetPointRepresentation(false);
|
||||||
|
SMESH::SetPickable();
|
||||||
|
}
|
||||||
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
||||||
aViewWindow->SetSelectionMode(ActorSelection);
|
aViewWindow->SetSelectionMode(ActorSelection);
|
||||||
mySMESHGUI->ResetState();
|
mySMESHGUI->ResetState();
|
||||||
@ -822,3 +834,25 @@ void SMESHGUI_ExtrusionDlg::keyPressEvent( QKeyEvent* e )
|
|||||||
ClickOnHelp();
|
ClickOnHelp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : setFilters()
|
||||||
|
// purpose : SLOT. Called when "Filter" button pressed.
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_ExtrusionDlg::setFilters()
|
||||||
|
{
|
||||||
|
if ( !myFilterDlg )
|
||||||
|
{
|
||||||
|
QList<int> types;
|
||||||
|
types.append( SMESH::EDGE );
|
||||||
|
types.append( SMESH::FACE );
|
||||||
|
myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, types );
|
||||||
|
}
|
||||||
|
myFilterDlg->Init( GetConstructorId() ? SMESH::FACE : SMESH::EDGE );
|
||||||
|
|
||||||
|
myFilterDlg->SetSelection();
|
||||||
|
myFilterDlg->SetMesh( myMesh );
|
||||||
|
myFilterDlg->SetSourceWg( LineEditElements );
|
||||||
|
|
||||||
|
myFilterDlg->show();
|
||||||
|
}
|
||||||
|
@ -52,6 +52,7 @@ class SMESHGUI;
|
|||||||
class SMESH_Actor;
|
class SMESH_Actor;
|
||||||
class SMESHGUI_IdValidator;
|
class SMESHGUI_IdValidator;
|
||||||
class SMESHGUI_SpinBox;
|
class SMESHGUI_SpinBox;
|
||||||
|
class SMESHGUI_FilterDlg;
|
||||||
class SVTK_Selector;
|
class SVTK_Selector;
|
||||||
class LightApp_SelectionMgr;
|
class LightApp_SelectionMgr;
|
||||||
class SUIT_SelectionFilter;
|
class SUIT_SelectionFilter;
|
||||||
@ -126,6 +127,8 @@ private:
|
|||||||
|
|
||||||
QString myHelpFileName;
|
QString myHelpFileName;
|
||||||
|
|
||||||
|
SMESHGUI_FilterDlg* myFilterDlg;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void ConstructorsClicked( int );
|
void ConstructorsClicked( int );
|
||||||
void CheckIsEnable();
|
void CheckIsEnable();
|
||||||
@ -139,6 +142,7 @@ private slots:
|
|||||||
void ActivateThisDialog();
|
void ActivateThisDialog();
|
||||||
void onTextChange( const QString& );
|
void onTextChange( const QString& );
|
||||||
void onSelectMesh( bool );
|
void onSelectMesh( bool );
|
||||||
|
void setFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SMESHGUI_EXTRUSIONDLG_H
|
#endif // SMESHGUI_EXTRUSIONDLG_H
|
||||||
|
@ -82,17 +82,18 @@ bool SMESHGUI_PredicateFilter::IsValid( const int theCellId ) const
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
|
SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
|
||||||
SMESH::ElementType anElemType = myPred->GetElementType();
|
SMDSAbs_ElementType anElemType = (SMDSAbs_ElementType)myPred->GetElementType();
|
||||||
int aMeshId = anElemType == SMESH::NODE ? anActor->GetNodeObjId( theCellId )
|
int aMeshId = anElemType == SMDSAbs_Node ? anActor->GetNodeObjId( theCellId )
|
||||||
: anActor->GetElemObjId( theCellId );
|
: anActor->GetElemObjId( theCellId );
|
||||||
|
|
||||||
// if type of element != type of predicate return true because
|
// if type of element != type of predicate return true because
|
||||||
// this predicate is not intended for filtering sush elements
|
// this predicate is not intended for filtering sush elements
|
||||||
const SMDS_MeshElement* anElem = anElemType == SMESH::NODE ? aMesh->FindNode( aMeshId )
|
const SMDS_MeshElement* anElem = anElemType == SMDSAbs_Node ? aMesh->FindNode( aMeshId )
|
||||||
: aMesh->FindElement( aMeshId );
|
: aMesh->FindElement( aMeshId );
|
||||||
if ( anElem != 0 && anElem->GetType() != (SMDSAbs_ElementType)myPred->GetElementType() )
|
// here we guess that predicate element type can not be All in case of node selection
|
||||||
return true;
|
if ( !anElem || (anElemType != SMDSAbs_All && anElem->GetType() != anElemType) )
|
||||||
|
return false;
|
||||||
|
|
||||||
return myPred->IsSatisfy( aMeshId );
|
return myPred->IsSatisfy( aMeshId );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,14 +111,15 @@ bool SMESHGUI_PredicateFilter::IsObjValid( const int theObjId ) const
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
|
SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh();
|
||||||
SMESH::ElementType anElemType = myPred->GetElementType();
|
SMDSAbs_ElementType anElemType = (SMDSAbs_ElementType)myPred->GetElementType();
|
||||||
|
|
||||||
// if type of element != type of predicate return true because
|
// if type of element != type of predicate return true because
|
||||||
// this predicate is not intended for filtering sush elements
|
// this predicate is not intended for filtering sush elements
|
||||||
const SMDS_MeshElement* anElem = anElemType == SMESH::NODE ? aMesh->FindNode( theObjId )
|
const SMDS_MeshElement* anElem = anElemType == SMDSAbs_Node ? aMesh->FindNode( theObjId )
|
||||||
: aMesh->FindElement( theObjId );
|
: aMesh->FindElement( theObjId );
|
||||||
if ( anElem != 0 && anElem->GetType() != (SMDSAbs_ElementType)myPred->GetElementType() )
|
// here we guess that predicate element type can not be All in case of node selection
|
||||||
return true;
|
if ( !anElem || (anElemType != SMDSAbs_All && anElem->GetType() != anElemType) )
|
||||||
|
return false;
|
||||||
|
|
||||||
return myPred->IsSatisfy( theObjId );
|
return myPred->IsSatisfy( theObjId );
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,8 @@
|
|||||||
#include <SUIT_ResourceMgr.h>
|
#include <SUIT_ResourceMgr.h>
|
||||||
#include <SUIT_Session.h>
|
#include <SUIT_Session.h>
|
||||||
#include <SUIT_MessageBox.h>
|
#include <SUIT_MessageBox.h>
|
||||||
|
#include <QtxComboBox.h>
|
||||||
|
#include <QtxColorButton.h>
|
||||||
|
|
||||||
#include <LightApp_Application.h>
|
#include <LightApp_Application.h>
|
||||||
#include <LightApp_SelectionMgr.h>
|
#include <LightApp_SelectionMgr.h>
|
||||||
@ -699,8 +701,6 @@ void SMESHGUI_FilterTable::Init (const QList<int>& theTypes)
|
|||||||
|
|
||||||
if (myTables.isEmpty())
|
if (myTables.isEmpty())
|
||||||
{
|
{
|
||||||
int aType = theTypes.first();
|
|
||||||
|
|
||||||
// create main layout
|
// create main layout
|
||||||
QVBoxLayout* aMainLay = new QVBoxLayout(this);
|
QVBoxLayout* aMainLay = new QVBoxLayout(this);
|
||||||
aMainLay->setMargin( 0 );
|
aMainLay->setMargin( 0 );
|
||||||
@ -730,8 +730,14 @@ void SMESHGUI_FilterTable::Init (const QList<int>& theTypes)
|
|||||||
mySwitchTableGrpLayout->setMargin(0);
|
mySwitchTableGrpLayout->setMargin(0);
|
||||||
mySwitchTableGrpLayout->setSpacing(0);
|
mySwitchTableGrpLayout->setSpacing(0);
|
||||||
|
|
||||||
myTables[ aType ] = createTable(mySwitchTableGrp, aType);
|
QList<int>::const_iterator typeIt = theTypes.begin();
|
||||||
mySwitchTableGrpLayout->addWidget(myTables[ aType ]);
|
for ( ; typeIt != theTypes.end(); ++typeIt ) {
|
||||||
|
Table* aTable = createTable(mySwitchTableGrp, *typeIt);
|
||||||
|
myTables[ *typeIt ] = aTable;
|
||||||
|
mySwitchTableGrpLayout->addWidget(aTable);
|
||||||
|
if ( typeIt != theTypes.begin() )
|
||||||
|
aTable->hide();
|
||||||
|
}
|
||||||
|
|
||||||
// create buttons
|
// create buttons
|
||||||
myAddBtn = new QPushButton(tr("ADD"), myTableGrp);
|
myAddBtn = new QPushButton(tr("ADD"), myTableGrp);
|
||||||
@ -899,41 +905,43 @@ bool SMESHGUI_FilterTable::IsValid (const bool theMess, const int theEntityType)
|
|||||||
for (int i = 0, n = aTable->rowCount(); i < n; i++)
|
for (int i = 0, n = aTable->rowCount(); i < n; i++)
|
||||||
{
|
{
|
||||||
int aCriterion = GetCriterionType(i, aType);
|
int aCriterion = GetCriterionType(i, aType);
|
||||||
|
QString errMsg;
|
||||||
if (aCriterion == SMESH::FT_RangeOfIds ||
|
if (aCriterion == SMESH::FT_GroupColor ) {
|
||||||
|
QtxColorButton* clrBtn = qobject_cast<QtxColorButton*>(aTable->cellWidget(i, 2));
|
||||||
|
if (clrBtn && !clrBtn->color().isValid())
|
||||||
|
errMsg = tr( "GROUPCOLOR_ERROR" );
|
||||||
|
} else if (aCriterion == SMESH::FT_ElemGeomType ) {
|
||||||
|
QtxComboBox* typeBox = qobject_cast<QtxComboBox*>(aTable->cellWidget(i, 2));
|
||||||
|
if (typeBox && typeBox->currentId() == -1)
|
||||||
|
errMsg = tr( "ERROR" );
|
||||||
|
} else if (aCriterion == SMESH::FT_RangeOfIds ||
|
||||||
aCriterion == SMESH::FT_BelongToGeom ||
|
aCriterion == SMESH::FT_BelongToGeom ||
|
||||||
aCriterion == SMESH::FT_BelongToPlane ||
|
aCriterion == SMESH::FT_BelongToPlane ||
|
||||||
aCriterion == SMESH::FT_BelongToCylinder ||
|
aCriterion == SMESH::FT_BelongToCylinder ||
|
||||||
aCriterion == SMESH::FT_BelongToGenSurface ||
|
aCriterion == SMESH::FT_BelongToGenSurface ||
|
||||||
aCriterion == SMESH::FT_LyingOnGeom) {
|
aCriterion == SMESH::FT_LyingOnGeom) {
|
||||||
if (aTable->text(i, 2).isEmpty()) {
|
if (aTable->text(i, 2).isEmpty());
|
||||||
if (theMess)
|
errMsg = tr( "ERROR" );
|
||||||
SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_INSUFFICIENT_DATA"),
|
}
|
||||||
tr("ERROR"));
|
else {
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bool aRes = false;
|
bool aRes = false;
|
||||||
bool isSignalsBlocked = aTable->signalsBlocked();
|
bool isSignalsBlocked = aTable->signalsBlocked();
|
||||||
aTable->blockSignals(true);
|
aTable->blockSignals(true);
|
||||||
double aThreshold = (int)aTable->text(i, 2).toDouble(&aRes);
|
double aThreshold = (int)aTable->text(i, 2).toDouble(&aRes);
|
||||||
aTable->blockSignals(isSignalsBlocked);
|
aTable->blockSignals(isSignalsBlocked);
|
||||||
|
|
||||||
if (!aRes && aTable->isEditable(i, 2)) {
|
if (!aRes && aTable->isEditable(i, 2))
|
||||||
if (theMess)
|
errMsg = tr( "ERROR" );
|
||||||
SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_INSUFFICIENT_DATA"),
|
|
||||||
tr("ERROR"));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else if (aType == SMESH::EDGE &&
|
else if (aType == SMESH::EDGE &&
|
||||||
GetCriterionType(i, aType) == SMESH::FT_MultiConnection &&
|
GetCriterionType(i, aType) == SMESH::FT_MultiConnection &&
|
||||||
aThreshold == 1)
|
aThreshold == 1)
|
||||||
{
|
errMsg = tr( "MULTIEDGES_ERROR" );
|
||||||
if (theMess)
|
}
|
||||||
SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_INSUFFICIENT_DATA"),
|
|
||||||
tr("MULTIEDGES_ERROR"));
|
if (!errMsg.isEmpty()) {
|
||||||
return false;
|
if (theMess)
|
||||||
}
|
SUIT_MessageBox::information(SMESHGUI::desktop(), tr("SMESH_INSUFFICIENT_DATA"), errMsg );
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
QTableWidgetItem* anItem = aTable->item(i, 0);
|
QTableWidgetItem* anItem = aTable->item(i, 0);
|
||||||
@ -1012,12 +1020,28 @@ void SMESHGUI_FilterTable::GetCriterion (const int theRow,
|
|||||||
|
|
||||||
int aCriterionType = GetCriterionType(theRow, aType);
|
int aCriterionType = GetCriterionType(theRow, aType);
|
||||||
|
|
||||||
if ( aCriterionType != SMESH::FT_RangeOfIds &&
|
if ( aCriterionType == SMESH::FT_GroupColor )
|
||||||
aCriterionType != SMESH::FT_BelongToGeom &&
|
{
|
||||||
aCriterionType != SMESH::FT_BelongToPlane &&
|
QtxColorButton* clrBtn = qobject_cast<QtxColorButton*>(aTable->cellWidget(theRow, 2));
|
||||||
aCriterionType != SMESH::FT_BelongToCylinder &&
|
if ( clrBtn )
|
||||||
aCriterionType != SMESH::FT_BelongToGenSurface &&
|
{
|
||||||
aCriterionType != SMESH::FT_LyingOnGeom)
|
const QColor qClr = clrBtn->color();
|
||||||
|
QString clrStr = QString( "%1;%2;%3" ).
|
||||||
|
arg( qClr.red()/256. ).arg( qClr.green()/256. ).arg( qClr.blue()/256. );
|
||||||
|
theCriterion.ThresholdStr = clrStr.toLatin1().constData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( aCriterionType == SMESH::FT_ElemGeomType ) {
|
||||||
|
QtxComboBox* typeBox = qobject_cast<QtxComboBox*>(aTable->cellWidget(theRow, 2));
|
||||||
|
if ( typeBox )
|
||||||
|
theCriterion.Threshold = (double)typeBox->currentId();
|
||||||
|
}
|
||||||
|
else if ( aCriterionType != SMESH::FT_RangeOfIds &&
|
||||||
|
aCriterionType != SMESH::FT_BelongToGeom &&
|
||||||
|
aCriterionType != SMESH::FT_BelongToPlane &&
|
||||||
|
aCriterionType != SMESH::FT_BelongToCylinder &&
|
||||||
|
aCriterionType != SMESH::FT_BelongToGenSurface &&
|
||||||
|
aCriterionType != SMESH::FT_LyingOnGeom)
|
||||||
{
|
{
|
||||||
theCriterion.Compare = ((ComboItem*)aTable->item(theRow, 1))->value();
|
theCriterion.Compare = ((ComboItem*)aTable->item(theRow, 1))->value();
|
||||||
theCriterion.Threshold = aTable->item(theRow, 2)->text().toDouble();
|
theCriterion.Threshold = aTable->item(theRow, 2)->text().toDouble();
|
||||||
@ -1063,7 +1087,28 @@ void SMESHGUI_FilterTable::SetCriterion (const int theRow,
|
|||||||
else
|
else
|
||||||
aTable->setEditable(false, theRow, 4);
|
aTable->setEditable(false, theRow, 4);
|
||||||
|
|
||||||
if (theCriterion.Type != SMESH::FT_RangeOfIds &&
|
if (theCriterion.Type == SMESH::FT_GroupColor )
|
||||||
|
{
|
||||||
|
QtxColorButton* clrBtn = qobject_cast<QtxColorButton*>(aTable->cellWidget(theRow, 2));
|
||||||
|
if ( clrBtn )
|
||||||
|
{
|
||||||
|
QColor qClr;
|
||||||
|
QString clrStr( theCriterion.ThresholdStr );
|
||||||
|
QStringList clrVals = clrStr.split( ";" );
|
||||||
|
if ( clrVals.count() > 2 )
|
||||||
|
qClr.setRgb( (int)256*clrVals[0].toDouble(),
|
||||||
|
(int)256*clrVals[1].toDouble(),
|
||||||
|
(int)256*clrVals[2].toDouble() );
|
||||||
|
clrBtn->setColor( qClr );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (theCriterion.Type == SMESH::FT_ElemGeomType )
|
||||||
|
{
|
||||||
|
QtxComboBox* typeBox = qobject_cast<QtxComboBox*>(aTable->cellWidget(theRow, 2));
|
||||||
|
if ( typeBox )
|
||||||
|
typeBox->setCurrentId( (int)(theCriterion.Threshold + 0.5) );
|
||||||
|
}
|
||||||
|
else if (theCriterion.Type != SMESH::FT_RangeOfIds &&
|
||||||
theCriterion.Type != SMESH::FT_BelongToGeom &&
|
theCriterion.Type != SMESH::FT_BelongToGeom &&
|
||||||
theCriterion.Type != SMESH::FT_BelongToPlane &&
|
theCriterion.Type != SMESH::FT_BelongToPlane &&
|
||||||
theCriterion.Type != SMESH::FT_BelongToCylinder &&
|
theCriterion.Type != SMESH::FT_BelongToCylinder &&
|
||||||
@ -1072,7 +1117,9 @@ void SMESHGUI_FilterTable::SetCriterion (const int theRow,
|
|||||||
theCriterion.Type != SMESH::FT_FreeBorders &&
|
theCriterion.Type != SMESH::FT_FreeBorders &&
|
||||||
theCriterion.Type != SMESH::FT_FreeEdges &&
|
theCriterion.Type != SMESH::FT_FreeEdges &&
|
||||||
theCriterion.Type != SMESH::FT_FreeNodes &&
|
theCriterion.Type != SMESH::FT_FreeNodes &&
|
||||||
theCriterion.Type != SMESH::FT_BadOrientedVolume)
|
theCriterion.Type != SMESH::FT_FreeFaces &&
|
||||||
|
theCriterion.Type != SMESH::FT_BadOrientedVolume &&
|
||||||
|
theCriterion.Type != SMESH::FT_LinearOrQuadratic)
|
||||||
aTable->item( theRow, 2 )->setText(QString("%1").arg(theCriterion.Threshold, 0, 'g', 15));
|
aTable->item( theRow, 2 )->setText(QString("%1").arg(theCriterion.Threshold, 0, 'g', 15));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1223,12 +1270,15 @@ void SMESHGUI_FilterTable::updateAdditionalWidget()
|
|||||||
}
|
}
|
||||||
|
|
||||||
ComboItem* anItem = ((ComboItem*)aTable->item(aRow, 0));
|
ComboItem* anItem = ((ComboItem*)aTable->item(aRow, 0));
|
||||||
|
int aCriterion = GetCriterionType(aRow);
|
||||||
bool toEnable = ((ComboItem*)aTable->item(aRow, 1))->value() == SMESH::FT_EqualTo &&
|
bool toEnable = ((ComboItem*)aTable->item(aRow, 1))->value() == SMESH::FT_EqualTo &&
|
||||||
GetCriterionType(aRow) != SMESH::FT_BelongToGeom &&
|
aCriterion != SMESH::FT_BelongToGeom &&
|
||||||
GetCriterionType(aRow) != SMESH::FT_LyingOnGeom &&
|
aCriterion != SMESH::FT_LyingOnGeom &&
|
||||||
GetCriterionType(aRow) != SMESH::FT_RangeOfIds &&
|
aCriterion != SMESH::FT_RangeOfIds &&
|
||||||
GetCriterionType(aRow) != SMESH::FT_FreeEdges &&
|
aCriterion != SMESH::FT_FreeEdges &&
|
||||||
GetCriterionType(aRow) != SMESH::FT_BadOrientedVolume;
|
aCriterion != SMESH::FT_FreeFaces &&
|
||||||
|
aCriterion != SMESH::FT_BadOrientedVolume;
|
||||||
|
|
||||||
if (!myAddWidgets.contains(anItem))
|
if (!myAddWidgets.contains(anItem))
|
||||||
{
|
{
|
||||||
myAddWidgets[ anItem ] = new AdditionalWidget(myWgStack);
|
myAddWidgets[ anItem ] = new AdditionalWidget(myWgStack);
|
||||||
@ -1288,6 +1338,34 @@ void SMESHGUI_FilterTable::onCurrentChanged (int theRow, int theCol)
|
|||||||
emit CurrentChanged(theRow, theCol);
|
emit CurrentChanged(theRow, theCol);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
// name : geomTypes
|
||||||
|
// Purpose : returns available geometry types of elements
|
||||||
|
//=======================================================================
|
||||||
|
static QList<int> geomTypes( const int theType )
|
||||||
|
{
|
||||||
|
QList<int> typeIds;
|
||||||
|
if ( theType == SMESH::NODE )
|
||||||
|
typeIds.append( SMESH::Geom_POINT );
|
||||||
|
if ( theType == SMESH::ALL || theType == SMESH::EDGE )
|
||||||
|
typeIds.append( SMESH::Geom_EDGE );
|
||||||
|
if ( theType == SMESH::ALL || theType == SMESH::FACE )
|
||||||
|
{
|
||||||
|
typeIds.append( SMESH::Geom_TRIANGLE );
|
||||||
|
typeIds.append( SMESH::Geom_QUADRANGLE );
|
||||||
|
typeIds.append( SMESH::Geom_POLYGON );
|
||||||
|
}
|
||||||
|
if ( theType == SMESH::ALL || theType == SMESH::VOLUME )
|
||||||
|
{
|
||||||
|
typeIds.append( SMESH::Geom_TETRA );
|
||||||
|
typeIds.append( SMESH::Geom_PYRAMID );
|
||||||
|
typeIds.append( SMESH::Geom_HEXA );
|
||||||
|
typeIds.append( SMESH::Geom_PENTA );
|
||||||
|
typeIds.append( SMESH::Geom_POLYHEDRA );
|
||||||
|
}
|
||||||
|
return typeIds;
|
||||||
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
// name : SMESHGUI_FilterTable::onCriterionChanged()
|
// name : SMESHGUI_FilterTable::onCriterionChanged()
|
||||||
// Purpose : Provides reaction on change of criterion
|
// Purpose : Provides reaction on change of criterion
|
||||||
@ -1299,11 +1377,47 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con
|
|||||||
ComboItem* aCompareItem = (ComboItem*)aTable->item(row, 1);
|
ComboItem* aCompareItem = (ComboItem*)aTable->item(row, 1);
|
||||||
|
|
||||||
int aCriterionType = GetCriterionType(row);
|
int aCriterionType = GetCriterionType(row);
|
||||||
|
QtxColorButton* clrBtn = qobject_cast<QtxColorButton*>(aTable->cellWidget(row, 2));
|
||||||
|
QtxComboBox* typeBox = qobject_cast<QtxComboBox*>(aTable->cellWidget(row, 2));
|
||||||
|
|
||||||
|
if ( (aCriterionType == SMESH::FT_GroupColor && !clrBtn) ||
|
||||||
|
(aCriterionType == SMESH::FT_ElemGeomType && !typeBox) )
|
||||||
|
{
|
||||||
|
bool isSignalsBlocked = aTable->signalsBlocked();
|
||||||
|
aTable->blockSignals( true );
|
||||||
|
if ( aCriterionType == SMESH::FT_GroupColor )
|
||||||
|
aTable->setCellWidget( row, 2, new QtxColorButton( aTable ) );
|
||||||
|
else {
|
||||||
|
QtxComboBox* typeBox = new QtxComboBox( aTable );
|
||||||
|
aTable->setCellWidget( row, 2, typeBox );
|
||||||
|
QList<int> typeIds = geomTypes( aType );
|
||||||
|
QList<int>::const_iterator anIter = typeIds.begin();
|
||||||
|
for ( int i = 0; anIter != typeIds.end(); ++anIter, ++i) {
|
||||||
|
QString typeKey = QString( "GEOM_TYPE_%1" ).arg( *anIter );
|
||||||
|
typeBox->addItem( tr( typeKey.toLatin1().data() ) );
|
||||||
|
typeBox->setId( i, *anIter );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
aTable->blockSignals( isSignalsBlocked );
|
||||||
|
}
|
||||||
|
else if ( (aCriterionType != SMESH::FT_GroupColor && clrBtn) ||
|
||||||
|
(aCriterionType != SMESH::FT_ElemGeomType && typeBox) )
|
||||||
|
{
|
||||||
|
bool isSignalsBlocked = aTable->signalsBlocked();
|
||||||
|
aTable->blockSignals( true );
|
||||||
|
aTable->setCellWidget( row, 2, 0 );
|
||||||
|
aTable->setItem( row, 2, new QTableWidgetItem() );
|
||||||
|
aTable->blockSignals( isSignalsBlocked );
|
||||||
|
}
|
||||||
|
|
||||||
if ( aType == SMESH::NODE && aCriterionType == SMESH::FT_FreeNodes ||
|
if (aType == SMESH::NODE && aCriterionType == SMESH::FT_FreeNodes ||
|
||||||
aType == SMESH::EDGE && aCriterionType == SMESH::FT_FreeBorders ||
|
aType == SMESH::EDGE && aCriterionType == SMESH::FT_FreeBorders ||
|
||||||
aType == SMESH::FACE && aCriterionType == SMESH::FT_FreeEdges ||
|
aType == SMESH::FACE && (aCriterionType == SMESH::FT_FreeEdges ||
|
||||||
aType == SMESH::VOLUME && aCriterionType == SMESH::FT_BadOrientedVolume)
|
aCriterionType == SMESH::FT_FreeFaces) ||
|
||||||
|
aType == SMESH::VOLUME && aCriterionType == SMESH::FT_BadOrientedVolume ||
|
||||||
|
aCriterionType == SMESH::FT_LinearOrQuadratic ||
|
||||||
|
aCriterionType == SMESH::FT_GroupColor ||
|
||||||
|
aCriterionType == SMESH::FT_ElemGeomType)
|
||||||
{
|
{
|
||||||
bool isSignalsBlocked = aTable->signalsBlocked();
|
bool isSignalsBlocked = aTable->signalsBlocked();
|
||||||
aTable->blockSignals( true );
|
aTable->blockSignals( true );
|
||||||
@ -1311,8 +1425,8 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con
|
|||||||
if (aCompareItem->count() > 0)
|
if (aCompareItem->count() > 0)
|
||||||
aCompareItem->clear();
|
aCompareItem->clear();
|
||||||
aTable->setEditable(false, row, 1);
|
aTable->setEditable(false, row, 1);
|
||||||
aTable->setEditable(false, row, 2);
|
aTable->setEditable(aCriterionType == SMESH::FT_GroupColor ||
|
||||||
|
aCriterionType == SMESH::FT_ElemGeomType, row, 2);
|
||||||
aTable->blockSignals( isSignalsBlocked );
|
aTable->blockSignals( isSignalsBlocked );
|
||||||
}
|
}
|
||||||
else if (aCriterionType == SMESH::FT_RangeOfIds ||
|
else if (aCriterionType == SMESH::FT_RangeOfIds ||
|
||||||
@ -1330,6 +1444,12 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con
|
|||||||
if (!aTable->isEditable(row, 2))
|
if (!aTable->isEditable(row, 2))
|
||||||
aTable->setEditable(true, row, 2);
|
aTable->setEditable(true, row, 2);
|
||||||
}
|
}
|
||||||
|
else if (aCriterionType == SMESH::FT_GroupColor ||
|
||||||
|
aCriterionType == SMESH::FT_ElemGeomType)
|
||||||
|
{
|
||||||
|
if (!aTable->isEditable(row, 2))
|
||||||
|
aTable->setEditable(true, row, 2);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (aCompareItem->count() != 3)
|
if (aCompareItem->count() != 3)
|
||||||
@ -1507,6 +1627,7 @@ const QMap<int, QString>& SMESHGUI_FilterTable::getSupportedTypes() const
|
|||||||
aTypes[ SMESH::EDGE ] = tr("EDGES");
|
aTypes[ SMESH::EDGE ] = tr("EDGES");
|
||||||
aTypes[ SMESH::FACE ] = tr("FACES");
|
aTypes[ SMESH::FACE ] = tr("FACES");
|
||||||
aTypes[ SMESH::VOLUME ] = tr("VOLUMES");
|
aTypes[ SMESH::VOLUME ] = tr("VOLUMES");
|
||||||
|
aTypes[ SMESH::ALL ] = tr("ELEMENTS");
|
||||||
}
|
}
|
||||||
|
|
||||||
return aTypes;
|
return aTypes;
|
||||||
@ -1530,6 +1651,7 @@ const QMap<int, QString>& SMESHGUI_FilterTable::getCriteria (const int theType)
|
|||||||
aCriteria[ SMESH::FT_BelongToGenSurface ] = tr("BELONG_TO_GENSURFACE");
|
aCriteria[ SMESH::FT_BelongToGenSurface ] = tr("BELONG_TO_GENSURFACE");
|
||||||
aCriteria[ SMESH::FT_LyingOnGeom ] = tr("LYING_ON_GEOM");
|
aCriteria[ SMESH::FT_LyingOnGeom ] = tr("LYING_ON_GEOM");
|
||||||
aCriteria[ SMESH::FT_FreeNodes ] = tr("FREE_NODES");
|
aCriteria[ SMESH::FT_FreeNodes ] = tr("FREE_NODES");
|
||||||
|
aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR");
|
||||||
}
|
}
|
||||||
return aCriteria;
|
return aCriteria;
|
||||||
}
|
}
|
||||||
@ -1547,6 +1669,9 @@ const QMap<int, QString>& SMESHGUI_FilterTable::getCriteria (const int theType)
|
|||||||
aCriteria[ SMESH::FT_BelongToCylinder ] = tr("BELONG_TO_CYLINDER");
|
aCriteria[ SMESH::FT_BelongToCylinder ] = tr("BELONG_TO_CYLINDER");
|
||||||
aCriteria[ SMESH::FT_BelongToGenSurface ] = tr("BELONG_TO_GENSURFACE");
|
aCriteria[ SMESH::FT_BelongToGenSurface ] = tr("BELONG_TO_GENSURFACE");
|
||||||
aCriteria[ SMESH::FT_LyingOnGeom ] = tr("LYING_ON_GEOM");
|
aCriteria[ SMESH::FT_LyingOnGeom ] = tr("LYING_ON_GEOM");
|
||||||
|
aCriteria[ SMESH::FT_LinearOrQuadratic ] = tr("LINEAR");
|
||||||
|
aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR");
|
||||||
|
aCriteria[ SMESH::FT_ElemGeomType ] = tr("GEOM_TYPE");
|
||||||
}
|
}
|
||||||
return aCriteria;
|
return aCriteria;
|
||||||
}
|
}
|
||||||
@ -1570,6 +1695,10 @@ const QMap<int, QString>& SMESHGUI_FilterTable::getCriteria (const int theType)
|
|||||||
aCriteria[ SMESH::FT_LyingOnGeom ] = tr("LYING_ON_GEOM");
|
aCriteria[ SMESH::FT_LyingOnGeom ] = tr("LYING_ON_GEOM");
|
||||||
aCriteria[ SMESH::FT_Length2D ] = tr("LENGTH2D");
|
aCriteria[ SMESH::FT_Length2D ] = tr("LENGTH2D");
|
||||||
aCriteria[ SMESH::FT_MultiConnection2D ] = tr("MULTI2D_BORDERS");
|
aCriteria[ SMESH::FT_MultiConnection2D ] = tr("MULTI2D_BORDERS");
|
||||||
|
aCriteria[ SMESH::FT_FreeFaces ] = tr("FREE_FACES");
|
||||||
|
aCriteria[ SMESH::FT_LinearOrQuadratic ] = tr("LINEAR");
|
||||||
|
aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR");
|
||||||
|
aCriteria[ SMESH::FT_ElemGeomType ] = tr("GEOM_TYPE");
|
||||||
}
|
}
|
||||||
return aCriteria;
|
return aCriteria;
|
||||||
}
|
}
|
||||||
@ -1584,12 +1713,25 @@ const QMap<int, QString>& SMESHGUI_FilterTable::getCriteria (const int theType)
|
|||||||
aCriteria[ SMESH::FT_LyingOnGeom ] = tr("LYING_ON_GEOM");
|
aCriteria[ SMESH::FT_LyingOnGeom ] = tr("LYING_ON_GEOM");
|
||||||
aCriteria[ SMESH::FT_BadOrientedVolume ] = tr("BAD_ORIENTED_VOLUME");
|
aCriteria[ SMESH::FT_BadOrientedVolume ] = tr("BAD_ORIENTED_VOLUME");
|
||||||
aCriteria[ SMESH::FT_Volume3D ] = tr("VOLUME_3D");
|
aCriteria[ SMESH::FT_Volume3D ] = tr("VOLUME_3D");
|
||||||
|
aCriteria[ SMESH::FT_LinearOrQuadratic ] = tr("LINEAR");
|
||||||
|
aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR");
|
||||||
|
aCriteria[ SMESH::FT_ElemGeomType ] = tr("GEOM_TYPE");
|
||||||
}
|
}
|
||||||
return aCriteria;
|
return aCriteria;
|
||||||
}
|
}
|
||||||
else
|
else // SMESH::ALL
|
||||||
{
|
{
|
||||||
static QMap<int, QString> aCriteria;
|
static QMap<int, QString> aCriteria;
|
||||||
|
if (aCriteria.isEmpty())
|
||||||
|
{
|
||||||
|
aCriteria[ SMESH::FT_RangeOfIds ] = tr("RANGE_OF_IDS");
|
||||||
|
aCriteria[ SMESH::FT_BelongToGeom ] = tr("BELONG_TO_GEOM");
|
||||||
|
aCriteria[ SMESH::FT_LyingOnGeom ] = tr("LYING_ON_GEOM");
|
||||||
|
aCriteria[ SMESH::FT_LinearOrQuadratic ] = tr("LINEAR");
|
||||||
|
aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR");
|
||||||
|
aCriteria[ SMESH::FT_ElemGeomType ] = tr("GEOM_TYPE");
|
||||||
|
}
|
||||||
|
|
||||||
return aCriteria;
|
return aCriteria;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2037,15 +2179,15 @@ QWidget* SMESHGUI_FilterDlg::createSourceGroup (QWidget* theParent)
|
|||||||
|
|
||||||
QRadioButton* aMeshBtn = new QRadioButton(tr("MESH"), aBox);
|
QRadioButton* aMeshBtn = new QRadioButton(tr("MESH"), aBox);
|
||||||
QRadioButton* aSelBtn = new QRadioButton(tr("SELECTION"), aBox);
|
QRadioButton* aSelBtn = new QRadioButton(tr("SELECTION"), aBox);
|
||||||
QRadioButton* aGrpBtn = new QRadioButton(tr("CURRENT_GROUP"), aBox);
|
QRadioButton* aDlgBtn = new QRadioButton(tr("CURRENT_DIALOG"),aBox);
|
||||||
|
|
||||||
aLay->addWidget(aMeshBtn);
|
aLay->addWidget(aMeshBtn);
|
||||||
aLay->addWidget(aSelBtn);
|
aLay->addWidget(aSelBtn);
|
||||||
aLay->addWidget(aGrpBtn);
|
aLay->addWidget(aDlgBtn);
|
||||||
|
|
||||||
mySourceGrp->addButton(aMeshBtn, Mesh);
|
mySourceGrp->addButton(aMeshBtn, Mesh);
|
||||||
mySourceGrp->addButton(aSelBtn, Selection);
|
mySourceGrp->addButton(aSelBtn, Selection);
|
||||||
mySourceGrp->addButton(aGrpBtn, Dialog);
|
mySourceGrp->addButton(aDlgBtn, Dialog);
|
||||||
|
|
||||||
aSelBtn->setChecked(true);
|
aSelBtn->setChecked(true);
|
||||||
|
|
||||||
@ -2357,6 +2499,7 @@ Selection_Mode SMESHGUI_FilterDlg::getSelMode (const int theType) const
|
|||||||
case SMESH::EDGE : return EdgeSelection;
|
case SMESH::EDGE : return EdgeSelection;
|
||||||
case SMESH::FACE : return FaceSelection;
|
case SMESH::FACE : return FaceSelection;
|
||||||
case SMESH::VOLUME : return VolumeSelection;
|
case SMESH::VOLUME : return VolumeSelection;
|
||||||
|
case SMESH::ALL : return CellSelection;
|
||||||
default : return ActorSelection;
|
default : return ActorSelection;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2486,10 +2629,9 @@ void SMESHGUI_FilterDlg::SetSourceWg (QWidget* theWg)
|
|||||||
void SMESHGUI_FilterDlg::SetMesh (SMESH::SMESH_Mesh_var theMesh)
|
void SMESHGUI_FilterDlg::SetMesh (SMESH::SMESH_Mesh_var theMesh)
|
||||||
{
|
{
|
||||||
myMesh = theMesh;
|
myMesh = theMesh;
|
||||||
if ( myMesh->_is_nil() ) {
|
const bool isEnable = !(myMesh->_is_nil());
|
||||||
myButtons[BTN_OK]->setEnabled(false);
|
myButtons[BTN_OK]->setEnabled(isEnable);
|
||||||
myButtons[BTN_Apply]->setEnabled(false);
|
myButtons[BTN_Apply]->setEnabled(isEnable);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -2832,13 +2974,14 @@ void SMESHGUI_FilterDlg::onSelectionDone()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int aCriterionType = myTable->GetCriterionType(aRow);
|
||||||
if (aList.Extent() != 1 ||
|
if (aList.Extent() != 1 ||
|
||||||
!myTable->CurrentCell(aRow, aCol) ||
|
!myTable->CurrentCell(aRow, aCol) ||
|
||||||
myTable->GetCriterionType(aRow) != SMESH::FT_BelongToGeom &&
|
aCriterionType != SMESH::FT_BelongToGeom &&
|
||||||
myTable->GetCriterionType(aRow) != SMESH::FT_BelongToPlane &&
|
aCriterionType != SMESH::FT_BelongToPlane &&
|
||||||
myTable->GetCriterionType(aRow) != SMESH::FT_BelongToCylinder &&
|
aCriterionType != SMESH::FT_BelongToCylinder &&
|
||||||
myTable->GetCriterionType(aRow) != SMESH::FT_BelongToGenSurface &&
|
aCriterionType != SMESH::FT_BelongToGenSurface &&
|
||||||
myTable->GetCriterionType(aRow) != SMESH::FT_LyingOnGeom)
|
aCriterionType != SMESH::FT_LyingOnGeom)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Handle(SALOME_InteractiveObject) anIO = aList.First();
|
Handle(SALOME_InteractiveObject) anIO = aList.First();
|
||||||
@ -2891,23 +3034,24 @@ void SMESHGUI_FilterDlg::updateSelection()
|
|||||||
|
|
||||||
int aRow, aCol;
|
int aRow, aCol;
|
||||||
|
|
||||||
|
int aCriterionType = myTable->GetCriterionType(aRow);
|
||||||
if (myTable->CurrentCell(aRow, aCol) &&
|
if (myTable->CurrentCell(aRow, aCol) &&
|
||||||
(myTable->GetCriterionType(aRow) == SMESH::FT_BelongToGeom ||
|
(aCriterionType == SMESH::FT_BelongToGeom ||
|
||||||
myTable->GetCriterionType(aRow) == SMESH::FT_BelongToPlane ||
|
aCriterionType == SMESH::FT_BelongToPlane ||
|
||||||
myTable->GetCriterionType(aRow) == SMESH::FT_BelongToCylinder ||
|
aCriterionType == SMESH::FT_BelongToCylinder ||
|
||||||
myTable->GetCriterionType(aRow) == SMESH::FT_BelongToGenSurface ||
|
aCriterionType == SMESH::FT_BelongToGenSurface ||
|
||||||
myTable->GetCriterionType(aRow) == SMESH::FT_LyingOnGeom)) {
|
aCriterionType == SMESH::FT_LyingOnGeom)) {
|
||||||
|
|
||||||
if (myTable->GetCriterionType(aRow) == SMESH::FT_BelongToGeom ||
|
if (aCriterionType == SMESH::FT_BelongToGeom ||
|
||||||
myTable->GetCriterionType(aRow) == SMESH::FT_BelongToGenSurface ||
|
aCriterionType == SMESH::FT_BelongToGenSurface ||
|
||||||
myTable->GetCriterionType(aRow) == SMESH::FT_LyingOnGeom) {
|
aCriterionType == SMESH::FT_LyingOnGeom) {
|
||||||
|
|
||||||
mySelectionMgr->installFilter(new GEOM_SelectionFilter( aStudy, true ));
|
mySelectionMgr->installFilter(new GEOM_SelectionFilter( aStudy, true ));
|
||||||
|
|
||||||
} else if (myTable->GetCriterionType(aRow) == SMESH::FT_BelongToPlane) {
|
} else if (aCriterionType == SMESH::FT_BelongToPlane) {
|
||||||
mySelectionMgr->installFilter(new GEOM_FaceFilter( aStudy, StdSelect_Plane ) );
|
mySelectionMgr->installFilter(new GEOM_FaceFilter( aStudy, StdSelect_Plane ) );
|
||||||
|
|
||||||
} else if (myTable->GetCriterionType(aRow) == SMESH::FT_BelongToCylinder) {
|
} else if (aCriterionType == SMESH::FT_BelongToCylinder) {
|
||||||
mySelectionMgr->installFilter(new GEOM_FaceFilter( aStudy, StdSelect_Cylinder ) );
|
mySelectionMgr->installFilter(new GEOM_FaceFilter( aStudy, StdSelect_Cylinder ) );
|
||||||
}
|
}
|
||||||
myIsSelectionChanged = true;
|
myIsSelectionChanged = true;
|
||||||
|
@ -594,6 +594,7 @@ void SMESHGUI_GroupDlg::init (SMESH::SMESH_GroupBase_ptr theGroup,
|
|||||||
myName->setText( "Group On " + aShapeName);
|
myName->setText( "Group On " + aShapeName);
|
||||||
myName->blockSignals(false);
|
myName->blockSignals(false);
|
||||||
}
|
}
|
||||||
|
updateButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include "SMESHGUI_VTKUtils.h"
|
#include "SMESHGUI_VTKUtils.h"
|
||||||
#include "SMESHGUI_MeshUtils.h"
|
#include "SMESHGUI_MeshUtils.h"
|
||||||
#include "SMESHGUI_IdValidator.h"
|
#include "SMESHGUI_IdValidator.h"
|
||||||
|
#include "SMESHGUI_FilterDlg.h"
|
||||||
|
|
||||||
#include <SMESH_Actor.h>
|
#include <SMESH_Actor.h>
|
||||||
#include <SMDS_Mesh.hxx>
|
#include <SMDS_Mesh.hxx>
|
||||||
@ -81,7 +82,8 @@ SMESHGUI_RemoveElementsDlg
|
|||||||
mySelector(SMESH::GetViewWindow(theModule)->GetSelector()),
|
mySelector(SMESH::GetViewWindow(theModule)->GetSelector()),
|
||||||
mySelectionMgr(SMESH::GetSelectionMgr(theModule)),
|
mySelectionMgr(SMESH::GetSelectionMgr(theModule)),
|
||||||
mySMESHGUI(theModule),
|
mySMESHGUI(theModule),
|
||||||
myBusy(false)
|
myBusy(false),
|
||||||
|
myFilterDlg(0)
|
||||||
{
|
{
|
||||||
setModal( false );
|
setModal( false );
|
||||||
setAttribute( Qt::WA_DeleteOnClose, true );
|
setAttribute( Qt::WA_DeleteOnClose, true );
|
||||||
@ -120,10 +122,13 @@ SMESHGUI_RemoveElementsDlg
|
|||||||
SelectButtonC1A1->setIcon(image1);
|
SelectButtonC1A1->setIcon(image1);
|
||||||
LineEditC1A1 = new QLineEdit(GroupC1);
|
LineEditC1A1 = new QLineEdit(GroupC1);
|
||||||
LineEditC1A1->setValidator(new SMESHGUI_IdValidator(this));
|
LineEditC1A1->setValidator(new SMESHGUI_IdValidator(this));
|
||||||
|
QPushButton* filterBtn = new QPushButton( tr( "SMESH_BUT_FILTER" ), GroupC1 );
|
||||||
|
connect(filterBtn, SIGNAL(clicked()), this, SLOT(setFilters()));
|
||||||
|
|
||||||
GroupC1Layout->addWidget(TextLabelC1A1);
|
GroupC1Layout->addWidget(TextLabelC1A1);
|
||||||
GroupC1Layout->addWidget(SelectButtonC1A1);
|
GroupC1Layout->addWidget(SelectButtonC1A1);
|
||||||
GroupC1Layout->addWidget(LineEditC1A1);
|
GroupC1Layout->addWidget(LineEditC1A1);
|
||||||
|
GroupC1Layout->addWidget(filterBtn );
|
||||||
|
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
GroupButtons = new QGroupBox(this);
|
GroupButtons = new QGroupBox(this);
|
||||||
@ -165,6 +170,11 @@ SMESHGUI_RemoveElementsDlg
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
SMESHGUI_RemoveElementsDlg::~SMESHGUI_RemoveElementsDlg()
|
SMESHGUI_RemoveElementsDlg::~SMESHGUI_RemoveElementsDlg()
|
||||||
{
|
{
|
||||||
|
if ( myFilterDlg ) {
|
||||||
|
myFilterDlg->setParent( 0 );
|
||||||
|
delete myFilterDlg;
|
||||||
|
myFilterDlg = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -253,10 +263,13 @@ void SMESHGUI_RemoveElementsDlg::ClickOnOk()
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
void SMESHGUI_RemoveElementsDlg::ClickOnCancel()
|
void SMESHGUI_RemoveElementsDlg::ClickOnCancel()
|
||||||
{
|
{
|
||||||
|
if (SMESH::GetCurrentVtkView())
|
||||||
|
SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters
|
||||||
//mySelectionMgr->clearSelected();
|
//mySelectionMgr->clearSelected();
|
||||||
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
||||||
aViewWindow->SetSelectionMode(ActorSelection);
|
aViewWindow->SetSelectionMode(ActorSelection);
|
||||||
disconnect(mySelectionMgr, 0, this, 0);
|
disconnect(mySelectionMgr, 0, this, 0);
|
||||||
|
mySelectionMgr->clearFilters();
|
||||||
mySMESHGUI->ResetState();
|
mySMESHGUI->ResetState();
|
||||||
reject();
|
reject();
|
||||||
}
|
}
|
||||||
@ -487,3 +500,19 @@ void SMESHGUI_RemoveElementsDlg::keyPressEvent( QKeyEvent* e )
|
|||||||
ClickOnHelp();
|
ClickOnHelp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : setFilters()
|
||||||
|
// purpose : SLOT. Called when "Filter" button pressed.
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_RemoveElementsDlg::setFilters()
|
||||||
|
{
|
||||||
|
if ( !myFilterDlg )
|
||||||
|
myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, SMESH::ALL );
|
||||||
|
|
||||||
|
myFilterDlg->SetSelection();
|
||||||
|
myFilterDlg->SetMesh( myMesh );
|
||||||
|
myFilterDlg->SetSourceWg( LineEditC1A1 );
|
||||||
|
|
||||||
|
myFilterDlg->show();
|
||||||
|
}
|
||||||
|
@ -43,6 +43,7 @@ class QPushButton;
|
|||||||
class QRadioButton;
|
class QRadioButton;
|
||||||
|
|
||||||
class SMESHGUI;
|
class SMESHGUI;
|
||||||
|
class SMESHGUI_FilterDlg;
|
||||||
class SMESH_Actor;
|
class SMESH_Actor;
|
||||||
class SVTK_Selector;
|
class SVTK_Selector;
|
||||||
class LightApp_SelectionMgr;
|
class LightApp_SelectionMgr;
|
||||||
@ -92,6 +93,8 @@ private:
|
|||||||
|
|
||||||
QString myHelpFileName;
|
QString myHelpFileName;
|
||||||
|
|
||||||
|
SMESHGUI_FilterDlg* myFilterDlg;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void ClickOnOk();
|
void ClickOnOk();
|
||||||
void ClickOnCancel();
|
void ClickOnCancel();
|
||||||
@ -102,6 +105,7 @@ private slots:
|
|||||||
void DeactivateActiveDialog();
|
void DeactivateActiveDialog();
|
||||||
void ActivateThisDialog();
|
void ActivateThisDialog();
|
||||||
void onTextChange( const QString& );
|
void onTextChange( const QString& );
|
||||||
|
void setFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SMESHGUI_REMOVEELEMENTSDLG_H
|
#endif // SMESHGUI_REMOVEELEMENTSDLG_H
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include "SMESHGUI_VTKUtils.h"
|
#include "SMESHGUI_VTKUtils.h"
|
||||||
#include "SMESHGUI_MeshUtils.h"
|
#include "SMESHGUI_MeshUtils.h"
|
||||||
#include "SMESHGUI_IdValidator.h"
|
#include "SMESHGUI_IdValidator.h"
|
||||||
|
#include "SMESHGUI_FilterDlg.h"
|
||||||
|
|
||||||
#include <SMESH_Actor.h>
|
#include <SMESH_Actor.h>
|
||||||
#include <SMDS_Mesh.hxx>
|
#include <SMDS_Mesh.hxx>
|
||||||
@ -81,7 +82,8 @@ SMESHGUI_RemoveNodesDlg
|
|||||||
mySelector(SMESH::GetViewWindow(theModule)->GetSelector()),
|
mySelector(SMESH::GetViewWindow(theModule)->GetSelector()),
|
||||||
mySelectionMgr(SMESH::GetSelectionMgr(theModule)),
|
mySelectionMgr(SMESH::GetSelectionMgr(theModule)),
|
||||||
mySMESHGUI(theModule),
|
mySMESHGUI(theModule),
|
||||||
myBusy(false)
|
myBusy(false),
|
||||||
|
myFilterDlg(0)
|
||||||
{
|
{
|
||||||
setModal( false );
|
setModal( false );
|
||||||
setAttribute( Qt::WA_DeleteOnClose, true );
|
setAttribute( Qt::WA_DeleteOnClose, true );
|
||||||
@ -120,10 +122,13 @@ SMESHGUI_RemoveNodesDlg
|
|||||||
SelectButtonC1A1->setIcon(image1);
|
SelectButtonC1A1->setIcon(image1);
|
||||||
LineEditC1A1 = new QLineEdit(GroupC1);
|
LineEditC1A1 = new QLineEdit(GroupC1);
|
||||||
LineEditC1A1->setValidator(new SMESHGUI_IdValidator(this));
|
LineEditC1A1->setValidator(new SMESHGUI_IdValidator(this));
|
||||||
|
QPushButton* filterBtn = new QPushButton( tr( "SMESH_BUT_FILTER" ), GroupC1 );
|
||||||
|
connect(filterBtn, SIGNAL(clicked()), this, SLOT(setFilters()));
|
||||||
|
|
||||||
GroupC1Layout->addWidget(TextLabelC1A1);
|
GroupC1Layout->addWidget(TextLabelC1A1);
|
||||||
GroupC1Layout->addWidget(SelectButtonC1A1);
|
GroupC1Layout->addWidget(SelectButtonC1A1);
|
||||||
GroupC1Layout->addWidget(LineEditC1A1);
|
GroupC1Layout->addWidget(LineEditC1A1);
|
||||||
|
GroupC1Layout->addWidget(filterBtn );
|
||||||
|
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
GroupButtons = new QGroupBox(this);
|
GroupButtons = new QGroupBox(this);
|
||||||
@ -165,6 +170,11 @@ SMESHGUI_RemoveNodesDlg
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
SMESHGUI_RemoveNodesDlg::~SMESHGUI_RemoveNodesDlg()
|
SMESHGUI_RemoveNodesDlg::~SMESHGUI_RemoveNodesDlg()
|
||||||
{
|
{
|
||||||
|
if ( myFilterDlg ) {
|
||||||
|
myFilterDlg->setParent( 0 );
|
||||||
|
delete myFilterDlg;
|
||||||
|
myFilterDlg = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -258,10 +268,14 @@ void SMESHGUI_RemoveNodesDlg::ClickOnOk()
|
|||||||
void SMESHGUI_RemoveNodesDlg::ClickOnCancel()
|
void SMESHGUI_RemoveNodesDlg::ClickOnCancel()
|
||||||
{
|
{
|
||||||
//mySelectionMgr->clearSelected();
|
//mySelectionMgr->clearSelected();
|
||||||
SMESH::SetPointRepresentation(false);
|
if (SMESH::GetCurrentVtkView()) {
|
||||||
|
SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters
|
||||||
|
SMESH::SetPointRepresentation(false);
|
||||||
|
}
|
||||||
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
||||||
aViewWindow->SetSelectionMode(ActorSelection);
|
aViewWindow->SetSelectionMode(ActorSelection);
|
||||||
disconnect(mySelectionMgr, 0, this, 0);
|
disconnect(mySelectionMgr, 0, this, 0);
|
||||||
|
mySelectionMgr->clearFilters();
|
||||||
mySMESHGUI->ResetState();
|
mySMESHGUI->ResetState();
|
||||||
reject();
|
reject();
|
||||||
}
|
}
|
||||||
@ -493,3 +507,19 @@ void SMESHGUI_RemoveNodesDlg::keyPressEvent( QKeyEvent* e )
|
|||||||
ClickOnHelp();
|
ClickOnHelp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : setFilters()
|
||||||
|
// purpose : SLOT. Called when "Filter" button pressed.
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_RemoveNodesDlg::setFilters()
|
||||||
|
{
|
||||||
|
if ( !myFilterDlg )
|
||||||
|
myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, SMESH::NODE );
|
||||||
|
|
||||||
|
myFilterDlg->SetSelection();
|
||||||
|
myFilterDlg->SetMesh( myMesh );
|
||||||
|
myFilterDlg->SetSourceWg( LineEditC1A1 );
|
||||||
|
|
||||||
|
myFilterDlg->show();
|
||||||
|
}
|
||||||
|
@ -43,6 +43,7 @@ class QPushButton;
|
|||||||
class QRadioButton;
|
class QRadioButton;
|
||||||
|
|
||||||
class SMESHGUI;
|
class SMESHGUI;
|
||||||
|
class SMESHGUI_FilterDlg;
|
||||||
class SMESH_Actor;
|
class SMESH_Actor;
|
||||||
class SVTK_Selector;
|
class SVTK_Selector;
|
||||||
class LightApp_SelectionMgr;
|
class LightApp_SelectionMgr;
|
||||||
@ -91,6 +92,8 @@ private:
|
|||||||
QLineEdit* LineEditC1A1;
|
QLineEdit* LineEditC1A1;
|
||||||
|
|
||||||
QString myHelpFileName;
|
QString myHelpFileName;
|
||||||
|
|
||||||
|
SMESHGUI_FilterDlg* myFilterDlg;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void ClickOnOk();
|
void ClickOnOk();
|
||||||
@ -102,6 +105,7 @@ private slots:
|
|||||||
void DeactivateActiveDialog();
|
void DeactivateActiveDialog();
|
||||||
void ActivateThisDialog();
|
void ActivateThisDialog();
|
||||||
void onTextChange( const QString& );
|
void onTextChange( const QString& );
|
||||||
|
void setFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SMESHGUI_REMOVENODESDLG_H
|
#endif // SMESHGUI_REMOVENODESDLG_H
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#include "SMESHGUI_MeshUtils.h"
|
#include "SMESHGUI_MeshUtils.h"
|
||||||
#include "SMESHGUI_IdValidator.h"
|
#include "SMESHGUI_IdValidator.h"
|
||||||
#include "SMESHGUI_MeshEditPreview.h"
|
#include "SMESHGUI_MeshEditPreview.h"
|
||||||
|
#include "SMESHGUI_FilterDlg.h"
|
||||||
|
|
||||||
#include <SMESH_Actor.h>
|
#include <SMESH_Actor.h>
|
||||||
#include <SMESH_TypeFilter.hxx>
|
#include <SMESH_TypeFilter.hxx>
|
||||||
@ -90,7 +91,8 @@ SMESHGUI_RevolutionDlg::SMESHGUI_RevolutionDlg( SMESHGUI* theModule )
|
|||||||
: QDialog( SMESH::GetDesktop( theModule ) ),
|
: QDialog( SMESH::GetDesktop( theModule ) ),
|
||||||
mySMESHGUI( theModule ),
|
mySMESHGUI( theModule ),
|
||||||
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ),
|
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ),
|
||||||
myVectorDefinition(NONE_SELECT)
|
myVectorDefinition(NONE_SELECT),
|
||||||
|
myFilterDlg( 0 )
|
||||||
{
|
{
|
||||||
mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI ));
|
mySimulation = new SMESHGUI_MeshEditPreview(SMESH::GetViewWindow( mySMESHGUI ));
|
||||||
|
|
||||||
@ -141,6 +143,8 @@ SMESHGUI_RevolutionDlg::SMESHGUI_RevolutionDlg( SMESHGUI* theModule )
|
|||||||
|
|
||||||
LineEditElements = new QLineEdit(GroupArguments);
|
LineEditElements = new QLineEdit(GroupArguments);
|
||||||
LineEditElements->setValidator(myIdValidator);
|
LineEditElements->setValidator(myIdValidator);
|
||||||
|
QPushButton* filterBtn = new QPushButton( tr( "SMESH_BUT_FILTER" ), GroupArguments );
|
||||||
|
connect(filterBtn, SIGNAL(clicked()), this, SLOT(setFilters()));
|
||||||
|
|
||||||
// Control for the whole mesh selection
|
// Control for the whole mesh selection
|
||||||
CheckBoxMesh = new QCheckBox(tr("SMESH_SELECT_WHOLE_MESH"), GroupArguments);
|
CheckBoxMesh = new QCheckBox(tr("SMESH_SELECT_WHOLE_MESH"), GroupArguments);
|
||||||
@ -233,13 +237,14 @@ SMESHGUI_RevolutionDlg::SMESHGUI_RevolutionDlg( SMESHGUI* theModule )
|
|||||||
GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
|
GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
|
||||||
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
|
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
|
||||||
GroupArgumentsLayout->addWidget(LineEditElements, 0, 2);
|
GroupArgumentsLayout->addWidget(LineEditElements, 0, 2);
|
||||||
GroupArgumentsLayout->addWidget(CheckBoxMesh, 1, 0, 1, 3);
|
GroupArgumentsLayout->addWidget(filterBtn, 0, 3);
|
||||||
GroupArgumentsLayout->addWidget(GroupAxis, 2, 0, 1, 3);
|
GroupArgumentsLayout->addWidget(CheckBoxMesh, 1, 0, 1, 4);
|
||||||
GroupArgumentsLayout->addWidget(GroupAngleBox, 3, 0, 1, 3);
|
GroupArgumentsLayout->addWidget(GroupAxis, 2, 0, 1, 4);
|
||||||
|
GroupArgumentsLayout->addWidget(GroupAngleBox, 3, 0, 1, 4);
|
||||||
GroupArgumentsLayout->addWidget(TextLabelTolerance, 4, 0, 1, 2);
|
GroupArgumentsLayout->addWidget(TextLabelTolerance, 4, 0, 1, 2);
|
||||||
GroupArgumentsLayout->addWidget(SpinBox_Tolerance, 4, 2);
|
GroupArgumentsLayout->addWidget(SpinBox_Tolerance, 4, 2, 1, 2);
|
||||||
GroupArgumentsLayout->addWidget(CheckBoxPreview, 5, 0, 1, 3);
|
GroupArgumentsLayout->addWidget(CheckBoxPreview, 5, 0, 1, 4);
|
||||||
GroupArgumentsLayout->addWidget(MakeGroupsCheck, 6, 0, 1, 3);
|
GroupArgumentsLayout->addWidget(MakeGroupsCheck, 6, 0, 1, 4);
|
||||||
|
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
GroupButtons = new QGroupBox(this);
|
GroupButtons = new QGroupBox(this);
|
||||||
@ -356,6 +361,11 @@ SMESHGUI_RevolutionDlg::SMESHGUI_RevolutionDlg( SMESHGUI* theModule )
|
|||||||
SMESHGUI_RevolutionDlg::~SMESHGUI_RevolutionDlg()
|
SMESHGUI_RevolutionDlg::~SMESHGUI_RevolutionDlg()
|
||||||
{
|
{
|
||||||
delete mySimulation;
|
delete mySimulation;
|
||||||
|
if ( myFilterDlg ) {
|
||||||
|
myFilterDlg->setParent( 0 );
|
||||||
|
delete myFilterDlg;
|
||||||
|
myFilterDlg = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -523,7 +533,10 @@ void SMESHGUI_RevolutionDlg::ClickOnCancel()
|
|||||||
disconnect(mySelectionMgr, 0, this, 0);
|
disconnect(mySelectionMgr, 0, this, 0);
|
||||||
mySelectionMgr->clearFilters();
|
mySelectionMgr->clearFilters();
|
||||||
//mySelectionMgr->clearSelected();
|
//mySelectionMgr->clearSelected();
|
||||||
SMESH::SetPointRepresentation(false);
|
if (SMESH::GetCurrentVtkView()) {
|
||||||
|
SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters
|
||||||
|
SMESH::SetPointRepresentation(false);
|
||||||
|
}
|
||||||
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
||||||
aViewWindow->SetSelectionMode(ActorSelection);
|
aViewWindow->SetSelectionMode(ActorSelection);
|
||||||
mySMESHGUI->ResetState();
|
mySMESHGUI->ResetState();
|
||||||
@ -1119,3 +1132,25 @@ void SMESHGUI_RevolutionDlg::onSelectVectorMenu( QAction* action){
|
|||||||
connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
|
connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
|
||||||
SelectionIntoArgument();
|
SelectionIntoArgument();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : setFilters()
|
||||||
|
// purpose : SLOT. Called when "Filter" button pressed.
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_RevolutionDlg::setFilters()
|
||||||
|
{
|
||||||
|
if ( !myFilterDlg )
|
||||||
|
{
|
||||||
|
QList<int> types;
|
||||||
|
types.append( SMESH::EDGE );
|
||||||
|
types.append( SMESH::FACE );
|
||||||
|
myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, types );
|
||||||
|
}
|
||||||
|
myFilterDlg->Init( GetConstructorId() ? SMESH::FACE : SMESH::EDGE );
|
||||||
|
|
||||||
|
myFilterDlg->SetSelection();
|
||||||
|
myFilterDlg->SetMesh( myMesh );
|
||||||
|
myFilterDlg->SetSourceWg( LineEditElements );
|
||||||
|
|
||||||
|
myFilterDlg->show();
|
||||||
|
}
|
||||||
|
@ -48,6 +48,7 @@ class QSpinBox;
|
|||||||
class SMESHGUI_IdValidator;
|
class SMESHGUI_IdValidator;
|
||||||
class SMESHGUI_SpinBox;
|
class SMESHGUI_SpinBox;
|
||||||
class SMESHGUI;
|
class SMESHGUI;
|
||||||
|
class SMESHGUI_FilterDlg;
|
||||||
class SMESH_Actor;
|
class SMESH_Actor;
|
||||||
class SVTK_Selector;
|
class SVTK_Selector;
|
||||||
class LightApp_SelectionMgr;
|
class LightApp_SelectionMgr;
|
||||||
@ -148,6 +149,8 @@ private:
|
|||||||
|
|
||||||
QString myHelpFileName;
|
QString myHelpFileName;
|
||||||
|
|
||||||
|
SMESHGUI_FilterDlg* myFilterDlg;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void ConstructorsClicked( int );
|
void ConstructorsClicked( int );
|
||||||
void ClickOnOk();
|
void ClickOnOk();
|
||||||
@ -165,6 +168,7 @@ private slots:
|
|||||||
void onDisplaySimulation( bool );
|
void onDisplaySimulation( bool );
|
||||||
void onSelectVectorMenu( QAction* );
|
void onSelectVectorMenu( QAction* );
|
||||||
void onSelectVectorButton();
|
void onSelectVectorButton();
|
||||||
|
void setFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SMESHGUI_REVOLUTIONDLG_H
|
#endif // SMESHGUI_REVOLUTIONDLG_H
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "SMESHGUI_VTKUtils.h"
|
#include "SMESHGUI_VTKUtils.h"
|
||||||
#include "SMESHGUI_MeshUtils.h"
|
#include "SMESHGUI_MeshUtils.h"
|
||||||
#include "SMESHGUI_IdValidator.h"
|
#include "SMESHGUI_IdValidator.h"
|
||||||
|
#include "SMESHGUI_FilterDlg.h"
|
||||||
|
|
||||||
#include <SMESH_Actor.h>
|
#include <SMESH_Actor.h>
|
||||||
#include <SMESH_TypeFilter.hxx>
|
#include <SMESH_TypeFilter.hxx>
|
||||||
@ -89,7 +90,8 @@ enum { MOVE_ELEMS_BUTTON = 0, COPY_ELEMS_BUTTON, MAKE_MESH_BUTTON }; //!< action
|
|||||||
SMESHGUI_RotationDlg::SMESHGUI_RotationDlg( SMESHGUI* theModule )
|
SMESHGUI_RotationDlg::SMESHGUI_RotationDlg( SMESHGUI* theModule )
|
||||||
: QDialog( SMESH::GetDesktop( theModule ) ),
|
: QDialog( SMESH::GetDesktop( theModule ) ),
|
||||||
mySMESHGUI( theModule ),
|
mySMESHGUI( theModule ),
|
||||||
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )
|
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ),
|
||||||
|
myFilterDlg(0)
|
||||||
{
|
{
|
||||||
QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_DLG_MESH_ROTATION")));
|
QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_DLG_MESH_ROTATION")));
|
||||||
QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT")));
|
QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT")));
|
||||||
@ -130,6 +132,8 @@ SMESHGUI_RotationDlg::SMESHGUI_RotationDlg( SMESHGUI* theModule )
|
|||||||
SelectElementsButton->setIcon(image1);
|
SelectElementsButton->setIcon(image1);
|
||||||
LineEditElements = new QLineEdit(GroupArguments);
|
LineEditElements = new QLineEdit(GroupArguments);
|
||||||
LineEditElements->setValidator(myIdValidator);
|
LineEditElements->setValidator(myIdValidator);
|
||||||
|
QPushButton* filterBtn = new QPushButton( tr( "SMESH_BUT_FILTER" ), GroupArguments );
|
||||||
|
connect(filterBtn, SIGNAL(clicked()), this, SLOT(setFilters()));
|
||||||
|
|
||||||
// Control for the whole mesh selection
|
// Control for the whole mesh selection
|
||||||
CheckBoxMesh = new QCheckBox(tr("SMESH_SELECT_WHOLE_MESH"), GroupArguments);
|
CheckBoxMesh = new QCheckBox(tr("SMESH_SELECT_WHOLE_MESH"), GroupArguments);
|
||||||
@ -209,7 +213,8 @@ SMESHGUI_RotationDlg::SMESHGUI_RotationDlg( SMESHGUI* theModule )
|
|||||||
|
|
||||||
GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
|
GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
|
||||||
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
|
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
|
||||||
GroupArgumentsLayout->addWidget(LineEditElements, 0, 2, 1, 2);
|
GroupArgumentsLayout->addWidget(LineEditElements, 0, 2, 1, 1);
|
||||||
|
GroupArgumentsLayout->addWidget(filterBtn, 0, 3);
|
||||||
GroupArgumentsLayout->addWidget(CheckBoxMesh, 1, 0, 1, 4);
|
GroupArgumentsLayout->addWidget(CheckBoxMesh, 1, 0, 1, 4);
|
||||||
GroupArgumentsLayout->addWidget(GroupAxis, 2, 0, 1, 4);
|
GroupArgumentsLayout->addWidget(GroupAxis, 2, 0, 1, 4);
|
||||||
GroupArgumentsLayout->addWidget(TextLabelAngle, 3, 0, 1, 2);
|
GroupArgumentsLayout->addWidget(TextLabelAngle, 3, 0, 1, 2);
|
||||||
@ -310,6 +315,11 @@ SMESHGUI_RotationDlg::SMESHGUI_RotationDlg( SMESHGUI* theModule )
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
SMESHGUI_RotationDlg::~SMESHGUI_RotationDlg()
|
SMESHGUI_RotationDlg::~SMESHGUI_RotationDlg()
|
||||||
{
|
{
|
||||||
|
if ( myFilterDlg ) {
|
||||||
|
myFilterDlg->setParent( 0 );
|
||||||
|
delete myFilterDlg;
|
||||||
|
myFilterDlg = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -431,7 +441,10 @@ void SMESHGUI_RotationDlg::ClickOnCancel()
|
|||||||
disconnect(mySelectionMgr, 0, this, 0);
|
disconnect(mySelectionMgr, 0, this, 0);
|
||||||
mySelectionMgr->clearFilters();
|
mySelectionMgr->clearFilters();
|
||||||
//mySelectionMgr->clearSelected();
|
//mySelectionMgr->clearSelected();
|
||||||
SMESH::SetPointRepresentation(false);
|
if (SMESH::GetCurrentVtkView()) {
|
||||||
|
SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters
|
||||||
|
SMESH::SetPointRepresentation(false);
|
||||||
|
}
|
||||||
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
||||||
aViewWindow->SetSelectionMode(ActorSelection);
|
aViewWindow->SetSelectionMode(ActorSelection);
|
||||||
mySMESHGUI->ResetState();
|
mySMESHGUI->ResetState();
|
||||||
@ -909,3 +922,19 @@ void SMESHGUI_RotationDlg::keyPressEvent( QKeyEvent* e )
|
|||||||
ClickOnHelp();
|
ClickOnHelp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : setFilters()
|
||||||
|
// purpose : SLOT. Called when "Filter" button pressed.
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_RotationDlg::setFilters()
|
||||||
|
{
|
||||||
|
if ( !myFilterDlg )
|
||||||
|
myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, SMESH::ALL );
|
||||||
|
|
||||||
|
myFilterDlg->SetSelection();
|
||||||
|
myFilterDlg->SetMesh( myMesh );
|
||||||
|
myFilterDlg->SetSourceWg( LineEditElements );
|
||||||
|
|
||||||
|
myFilterDlg->show();
|
||||||
|
}
|
||||||
|
@ -47,6 +47,7 @@ class SMESHGUI;
|
|||||||
class SMESH_Actor;
|
class SMESH_Actor;
|
||||||
class SMESHGUI_IdValidator;
|
class SMESHGUI_IdValidator;
|
||||||
class SMESHGUI_SpinBox;
|
class SMESHGUI_SpinBox;
|
||||||
|
class SMESHGUI_FilterDlg;
|
||||||
class SVTK_Selector;
|
class SVTK_Selector;
|
||||||
class LightApp_SelectionMgr;
|
class LightApp_SelectionMgr;
|
||||||
class SMESH_LogicalFilter;
|
class SMESH_LogicalFilter;
|
||||||
@ -127,6 +128,8 @@ private:
|
|||||||
|
|
||||||
QString myHelpFileName;
|
QString myHelpFileName;
|
||||||
|
|
||||||
|
SMESHGUI_FilterDlg* myFilterDlg;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void ClickOnOk();
|
void ClickOnOk();
|
||||||
void ClickOnCancel();
|
void ClickOnCancel();
|
||||||
@ -140,6 +143,7 @@ private slots:
|
|||||||
void onSelectMesh( bool );
|
void onSelectMesh( bool );
|
||||||
void onVectorChanged();
|
void onVectorChanged();
|
||||||
void onActionClicked( int );
|
void onActionClicked( int );
|
||||||
|
void setFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SMESHGUI_ROTATIONDLG_H
|
#endif // SMESHGUI_ROTATIONDLG_H
|
||||||
|
@ -240,6 +240,7 @@ QString SMESHGUI_Selection::controlMode( int ind ) const
|
|||||||
case SMESH_Actor::eLength2D: return "eLength2D";
|
case SMESH_Actor::eLength2D: return "eLength2D";
|
||||||
case SMESH_Actor::eFreeEdges: return "eFreeEdges";
|
case SMESH_Actor::eFreeEdges: return "eFreeEdges";
|
||||||
case SMESH_Actor::eFreeBorders: return "eFreeBorders";
|
case SMESH_Actor::eFreeBorders: return "eFreeBorders";
|
||||||
|
case SMESH_Actor::eFreeFaces: return "eFreeFaces";
|
||||||
case SMESH_Actor::eMultiConnection: return "eMultiConnection";
|
case SMESH_Actor::eMultiConnection: return "eMultiConnection";
|
||||||
case SMESH_Actor::eMultiConnection2D: return "eMultiConnection2D";
|
case SMESH_Actor::eMultiConnection2D: return "eMultiConnection2D";
|
||||||
case SMESH_Actor::eArea: return "eArea";
|
case SMESH_Actor::eArea: return "eArea";
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "SMESHGUI_MeshUtils.h"
|
#include "SMESHGUI_MeshUtils.h"
|
||||||
#include "SMESHGUI_SpinBox.h"
|
#include "SMESHGUI_SpinBox.h"
|
||||||
#include "SMESHGUI_IdValidator.h"
|
#include "SMESHGUI_IdValidator.h"
|
||||||
|
#include "SMESHGUI_FilterDlg.h"
|
||||||
|
|
||||||
#include <SMESH_Actor.h>
|
#include <SMESH_Actor.h>
|
||||||
#include <SMESH_TypeFilter.hxx>
|
#include <SMESH_TypeFilter.hxx>
|
||||||
@ -89,7 +90,8 @@
|
|||||||
SMESHGUI_SmoothingDlg::SMESHGUI_SmoothingDlg( SMESHGUI* theModule )
|
SMESHGUI_SmoothingDlg::SMESHGUI_SmoothingDlg( SMESHGUI* theModule )
|
||||||
: QDialog( SMESH::GetDesktop( theModule ) ),
|
: QDialog( SMESH::GetDesktop( theModule ) ),
|
||||||
mySMESHGUI( theModule ),
|
mySMESHGUI( theModule ),
|
||||||
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )
|
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ),
|
||||||
|
myFilterDlg(0)
|
||||||
{
|
{
|
||||||
QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_DLG_SMOOTHING")));
|
QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_DLG_SMOOTHING")));
|
||||||
QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT")));
|
QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT")));
|
||||||
@ -133,6 +135,8 @@ SMESHGUI_SmoothingDlg::SMESHGUI_SmoothingDlg( SMESHGUI* theModule )
|
|||||||
|
|
||||||
LineEditElements = new QLineEdit(GroupArguments);
|
LineEditElements = new QLineEdit(GroupArguments);
|
||||||
LineEditElements->setValidator(myIdValidator);
|
LineEditElements->setValidator(myIdValidator);
|
||||||
|
QPushButton* filterElemBtn = new QPushButton( tr( "SMESH_BUT_FILTER" ), GroupArguments );
|
||||||
|
connect(filterElemBtn, SIGNAL(clicked()), this, SLOT(setElemFilters()));
|
||||||
|
|
||||||
// Control for the whole mesh selection
|
// Control for the whole mesh selection
|
||||||
CheckBoxMesh = new QCheckBox(tr("SMESH_SELECT_WHOLE_MESH"), GroupArguments);
|
CheckBoxMesh = new QCheckBox(tr("SMESH_SELECT_WHOLE_MESH"), GroupArguments);
|
||||||
@ -145,6 +149,8 @@ SMESHGUI_SmoothingDlg::SMESHGUI_SmoothingDlg( SMESHGUI* theModule )
|
|||||||
|
|
||||||
LineEditNodes = new QLineEdit(GroupArguments);
|
LineEditNodes = new QLineEdit(GroupArguments);
|
||||||
LineEditNodes->setValidator(myIdValidator);
|
LineEditNodes->setValidator(myIdValidator);
|
||||||
|
QPushButton* filterNodeBtn = new QPushButton( tr( "SMESH_BUT_FILTER" ), GroupArguments );
|
||||||
|
connect(filterNodeBtn, SIGNAL(clicked()), this, SLOT(setNodeFilters()));
|
||||||
|
|
||||||
// Controls for method selection
|
// Controls for method selection
|
||||||
TextLabelMethod = new QLabel(tr("METHOD"), GroupArguments);
|
TextLabelMethod = new QLabel(tr("METHOD"), GroupArguments);
|
||||||
@ -167,17 +173,19 @@ SMESHGUI_SmoothingDlg::SMESHGUI_SmoothingDlg( SMESHGUI* theModule )
|
|||||||
GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
|
GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
|
||||||
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
|
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
|
||||||
GroupArgumentsLayout->addWidget(LineEditElements, 0, 2);
|
GroupArgumentsLayout->addWidget(LineEditElements, 0, 2);
|
||||||
GroupArgumentsLayout->addWidget(CheckBoxMesh, 1, 0, 1, 3);
|
GroupArgumentsLayout->addWidget(filterElemBtn, 0, 3);
|
||||||
|
GroupArgumentsLayout->addWidget(CheckBoxMesh, 1, 0, 1, 4);
|
||||||
GroupArgumentsLayout->addWidget(TextLabelNodes, 2, 0);
|
GroupArgumentsLayout->addWidget(TextLabelNodes, 2, 0);
|
||||||
GroupArgumentsLayout->addWidget(SelectNodesButton, 2, 1);
|
GroupArgumentsLayout->addWidget(SelectNodesButton, 2, 1);
|
||||||
GroupArgumentsLayout->addWidget(LineEditNodes, 2, 2);
|
GroupArgumentsLayout->addWidget(LineEditNodes, 2, 2);
|
||||||
|
GroupArgumentsLayout->addWidget(filterNodeBtn, 2, 3);
|
||||||
GroupArgumentsLayout->addWidget(TextLabelMethod, 3, 0);
|
GroupArgumentsLayout->addWidget(TextLabelMethod, 3, 0);
|
||||||
GroupArgumentsLayout->addWidget(ComboBoxMethod, 3, 2);
|
GroupArgumentsLayout->addWidget(ComboBoxMethod, 3, 2, 1, 2);
|
||||||
GroupArgumentsLayout->addWidget(TextLabelLimit, 4, 0);
|
GroupArgumentsLayout->addWidget(TextLabelLimit, 4, 0);
|
||||||
GroupArgumentsLayout->addWidget(SpinBox_IterationLimit, 4, 2);
|
GroupArgumentsLayout->addWidget(SpinBox_IterationLimit, 4, 2, 1, 2);
|
||||||
GroupArgumentsLayout->addWidget(TextLabelAspectRatio, 5, 0);
|
GroupArgumentsLayout->addWidget(TextLabelAspectRatio, 5, 0);
|
||||||
GroupArgumentsLayout->addWidget(SpinBox_AspectRatio, 5, 2);
|
GroupArgumentsLayout->addWidget(SpinBox_AspectRatio, 5, 2, 1, 2);
|
||||||
GroupArgumentsLayout->addWidget(CheckBoxParametric, 6, 0, 1, 3);
|
GroupArgumentsLayout->addWidget(CheckBoxParametric, 6, 0, 1, 4);
|
||||||
|
|
||||||
/***************************************************************/
|
/***************************************************************/
|
||||||
GroupButtons = new QGroupBox(this);
|
GroupButtons = new QGroupBox(this);
|
||||||
@ -273,6 +281,10 @@ SMESHGUI_SmoothingDlg::SMESHGUI_SmoothingDlg( SMESHGUI* theModule )
|
|||||||
SMESHGUI_SmoothingDlg::~SMESHGUI_SmoothingDlg()
|
SMESHGUI_SmoothingDlg::~SMESHGUI_SmoothingDlg()
|
||||||
{
|
{
|
||||||
// no need to delete child widgets, Qt does it all for us
|
// no need to delete child widgets, Qt does it all for us
|
||||||
|
if ( myFilterDlg != 0 ) {
|
||||||
|
myFilterDlg->setParent( 0 );
|
||||||
|
delete myFilterDlg;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -382,8 +394,11 @@ void SMESHGUI_SmoothingDlg::ClickOnCancel()
|
|||||||
disconnect(mySelectionMgr, 0, this, 0);
|
disconnect(mySelectionMgr, 0, this, 0);
|
||||||
mySelectionMgr->clearFilters();
|
mySelectionMgr->clearFilters();
|
||||||
//mySelectionMgr->clearSelected();
|
//mySelectionMgr->clearSelected();
|
||||||
SMESH::SetPickable(); // ???
|
if (SMESH::GetCurrentVtkView()) {
|
||||||
SMESH::SetPointRepresentation(false);
|
SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters
|
||||||
|
SMESH::SetPointRepresentation(false);
|
||||||
|
SMESH::SetPickable();
|
||||||
|
}
|
||||||
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
||||||
aViewWindow->SetSelectionMode(ActorSelection);
|
aViewWindow->SetSelectionMode(ActorSelection);
|
||||||
mySMESHGUI->ResetState();
|
mySMESHGUI->ResetState();
|
||||||
@ -494,9 +509,13 @@ void SMESHGUI_SmoothingDlg::SelectionIntoArgument()
|
|||||||
QString aString = "";
|
QString aString = "";
|
||||||
|
|
||||||
myBusy = true;
|
myBusy = true;
|
||||||
if (myEditCurrentArgument == (QWidget*)LineEditElements) {
|
if (myEditCurrentArgument == LineEditElements ||
|
||||||
LineEditElements->setText(aString);
|
myEditCurrentArgument == LineEditNodes) {
|
||||||
myNbOkElements = 0;
|
myEditCurrentArgument->setText(aString);
|
||||||
|
if (myEditCurrentArgument == LineEditElements)
|
||||||
|
myNbOkElements = 0;
|
||||||
|
else
|
||||||
|
myNbOkNodes = 0;
|
||||||
buttonOk->setEnabled(false);
|
buttonOk->setEnabled(false);
|
||||||
buttonApply->setEnabled(false);
|
buttonApply->setEnabled(false);
|
||||||
myActor = 0;
|
myActor = 0;
|
||||||
@ -583,17 +602,17 @@ void SMESHGUI_SmoothingDlg::SelectionIntoArgument()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
myBusy = true;
|
myBusy = true;
|
||||||
LineEditElements->setEnabled(true);
|
myEditCurrentArgument->setEnabled(true);
|
||||||
LineEditElements->setText(aString);
|
myEditCurrentArgument->setText(aString);
|
||||||
LineEditElements->repaint();
|
myEditCurrentArgument->repaint();
|
||||||
LineEditElements->setEnabled(false);
|
myEditCurrentArgument->setEnabled(false);
|
||||||
myBusy = false;
|
myBusy = false;
|
||||||
|
|
||||||
// OK
|
// OK
|
||||||
if (myEditCurrentArgument == LineEditElements)
|
if (myEditCurrentArgument == LineEditElements)
|
||||||
myNbOkElements = true;
|
myNbOkElements = aNbUnits;
|
||||||
else if (myEditCurrentArgument == LineEditNodes)
|
else if (myEditCurrentArgument == LineEditNodes)
|
||||||
myNbOkNodes = true;
|
myNbOkNodes = aNbUnits;
|
||||||
|
|
||||||
if (myNbOkElements && (myNbOkNodes || LineEditNodes->text().trimmed().isEmpty())) {
|
if (myNbOkElements && (myNbOkNodes || LineEditNodes->text().trimmed().isEmpty())) {
|
||||||
buttonOk->setEnabled(true);
|
buttonOk->setEnabled(true);
|
||||||
@ -719,8 +738,10 @@ void SMESHGUI_SmoothingDlg::onSelectMesh (bool toSelectMesh)
|
|||||||
else
|
else
|
||||||
TextLabelElements->setText(tr("SMESH_ID_ELEMENTS"));
|
TextLabelElements->setText(tr("SMESH_ID_ELEMENTS"));
|
||||||
|
|
||||||
if (myEditCurrentArgument != LineEditElements) {
|
if (myEditCurrentArgument != LineEditElements &&
|
||||||
|
myEditCurrentArgument != LineEditNodes) {
|
||||||
LineEditElements->clear();
|
LineEditElements->clear();
|
||||||
|
LineEditNodes->clear();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -732,14 +753,15 @@ void SMESHGUI_SmoothingDlg::onSelectMesh (bool toSelectMesh)
|
|||||||
aViewWindow->SetSelectionMode(ActorSelection);
|
aViewWindow->SetSelectionMode(ActorSelection);
|
||||||
// mySelectionMgr->setSelectionModes(ActorSelection);
|
// mySelectionMgr->setSelectionModes(ActorSelection);
|
||||||
mySelectionMgr->installFilter(myMeshOrSubMeshOrGroupFilter);
|
mySelectionMgr->installFilter(myMeshOrSubMeshOrGroupFilter);
|
||||||
LineEditElements->setReadOnly(true);
|
myEditCurrentArgument->setReadOnly(true);
|
||||||
LineEditElements->setValidator(0);
|
myEditCurrentArgument->setValidator(0);
|
||||||
} else {
|
} else {
|
||||||
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
||||||
aViewWindow->SetSelectionMode(FaceSelection);
|
aViewWindow->SetSelectionMode(myEditCurrentArgument == LineEditElements ? FaceSelection
|
||||||
LineEditElements->setReadOnly(false);
|
: NodeSelection );
|
||||||
|
myEditCurrentArgument->setReadOnly(false);
|
||||||
LineEditElements->setValidator(myIdValidator);
|
LineEditElements->setValidator(myIdValidator);
|
||||||
onTextChange(LineEditElements->text());
|
onTextChange(myEditCurrentArgument->text());
|
||||||
}
|
}
|
||||||
|
|
||||||
SelectionIntoArgument();
|
SelectionIntoArgument();
|
||||||
@ -760,3 +782,43 @@ void SMESHGUI_SmoothingDlg::keyPressEvent( QKeyEvent* e )
|
|||||||
ClickOnHelp();
|
ClickOnHelp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : setFilters()
|
||||||
|
// purpose : activate filter dialog
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_SmoothingDlg::setFilters( const bool theIsElem )
|
||||||
|
{
|
||||||
|
if ( !myFilterDlg )
|
||||||
|
{
|
||||||
|
QList<int> types;
|
||||||
|
types.append( SMESH::NODE );
|
||||||
|
types.append( SMESH::ALL );
|
||||||
|
myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, types );
|
||||||
|
}
|
||||||
|
myFilterDlg->Init( theIsElem ? SMESH::ALL : SMESH::NODE );
|
||||||
|
|
||||||
|
myFilterDlg->SetSelection();
|
||||||
|
myFilterDlg->SetMesh( myMesh );
|
||||||
|
myFilterDlg->SetSourceWg( theIsElem ? LineEditElements : LineEditNodes );
|
||||||
|
|
||||||
|
myFilterDlg->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : setElemFilters()
|
||||||
|
// purpose : SLOT. Called when element "Filter" button pressed.
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_SmoothingDlg::setElemFilters()
|
||||||
|
{
|
||||||
|
setFilters( true );
|
||||||
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : setNodeFilters()
|
||||||
|
// purpose : SLOT. Called when node "Filter" button pressed.
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_SmoothingDlg::setNodeFilters()
|
||||||
|
{
|
||||||
|
setFilters( false );
|
||||||
|
}
|
||||||
|
@ -44,9 +44,10 @@ class QRadioButton;
|
|||||||
class QComboBox;
|
class QComboBox;
|
||||||
class QCheckBox;
|
class QCheckBox;
|
||||||
class QSpinBox;
|
class QSpinBox;
|
||||||
|
class SMESHGUI;
|
||||||
class SMESHGUI_IdValidator;
|
class SMESHGUI_IdValidator;
|
||||||
class SMESHGUI_SpinBox;
|
class SMESHGUI_SpinBox;
|
||||||
class SMESHGUI;
|
class SMESHGUI_FilterDlg;
|
||||||
class SMESH_Actor;
|
class SMESH_Actor;
|
||||||
class SVTK_Selector;
|
class SVTK_Selector;
|
||||||
class LightApp_SelectionMgr;
|
class LightApp_SelectionMgr;
|
||||||
@ -70,6 +71,7 @@ private:
|
|||||||
void enterEvent( QEvent* ); /* mouse enter the QWidget */
|
void enterEvent( QEvent* ); /* mouse enter the QWidget */
|
||||||
void hideEvent( QHideEvent* ); /* ESC key */
|
void hideEvent( QHideEvent* ); /* ESC key */
|
||||||
void keyPressEvent( QKeyEvent* );
|
void keyPressEvent( QKeyEvent* );
|
||||||
|
void setFilters( const bool theIsElem );
|
||||||
|
|
||||||
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
|
SMESHGUI* mySMESHGUI; /* Current SMESHGUI object */
|
||||||
SMESHGUI_IdValidator* myIdValidator;
|
SMESHGUI_IdValidator* myIdValidator;
|
||||||
@ -111,6 +113,8 @@ private:
|
|||||||
|
|
||||||
QString myHelpFileName;
|
QString myHelpFileName;
|
||||||
|
|
||||||
|
SMESHGUI_FilterDlg* myFilterDlg;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void ClickOnOk();
|
void ClickOnOk();
|
||||||
void ClickOnCancel();
|
void ClickOnCancel();
|
||||||
@ -122,6 +126,8 @@ private slots:
|
|||||||
void ActivateThisDialog();
|
void ActivateThisDialog();
|
||||||
void onTextChange( const QString& );
|
void onTextChange( const QString& );
|
||||||
void onSelectMesh( bool );
|
void onSelectMesh( bool );
|
||||||
|
void setElemFilters();
|
||||||
|
void setNodeFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SMESHGUI_SMOOTHINGDLG_H
|
#endif // SMESHGUI_SMOOTHINGDLG_H
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "SMESHGUI_VTKUtils.h"
|
#include "SMESHGUI_VTKUtils.h"
|
||||||
#include "SMESHGUI_MeshUtils.h"
|
#include "SMESHGUI_MeshUtils.h"
|
||||||
#include "SMESHGUI_IdValidator.h"
|
#include "SMESHGUI_IdValidator.h"
|
||||||
|
#include "SMESHGUI_FilterDlg.h"
|
||||||
|
|
||||||
#include <SMESH_Actor.h>
|
#include <SMESH_Actor.h>
|
||||||
#include <SMESH_TypeFilter.hxx>
|
#include <SMESH_TypeFilter.hxx>
|
||||||
@ -90,7 +91,8 @@ enum { MOVE_ELEMS_BUTTON = 0, COPY_ELEMS_BUTTON, MAKE_MESH_BUTTON }; //!< action
|
|||||||
SMESHGUI_SymmetryDlg::SMESHGUI_SymmetryDlg( SMESHGUI* theModule )
|
SMESHGUI_SymmetryDlg::SMESHGUI_SymmetryDlg( SMESHGUI* theModule )
|
||||||
: QDialog( SMESH::GetDesktop( theModule ) ),
|
: QDialog( SMESH::GetDesktop( theModule ) ),
|
||||||
mySMESHGUI( theModule ),
|
mySMESHGUI( theModule ),
|
||||||
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )
|
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ),
|
||||||
|
myFilterDlg(0)
|
||||||
{
|
{
|
||||||
QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SMESH_SYMMETRY_POINT")));
|
QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SMESH_SYMMETRY_POINT")));
|
||||||
QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SMESH_SYMMETRY_AXIS")));
|
QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SMESH_SYMMETRY_AXIS")));
|
||||||
@ -141,6 +143,8 @@ SMESHGUI_SymmetryDlg::SMESHGUI_SymmetryDlg( SMESHGUI* theModule )
|
|||||||
SelectElementsButton->setIcon(image3);
|
SelectElementsButton->setIcon(image3);
|
||||||
LineEditElements = new QLineEdit(GroupArguments);
|
LineEditElements = new QLineEdit(GroupArguments);
|
||||||
LineEditElements->setValidator(myIdValidator);
|
LineEditElements->setValidator(myIdValidator);
|
||||||
|
QPushButton* filterBtn = new QPushButton( tr( "SMESH_BUT_FILTER" ), GroupArguments );
|
||||||
|
connect(filterBtn, SIGNAL(clicked()), this, SLOT(setFilters()));
|
||||||
|
|
||||||
// Control for the whole mesh selection
|
// Control for the whole mesh selection
|
||||||
CheckBoxMesh = new QCheckBox(tr("SMESH_SELECT_WHOLE_MESH"), GroupArguments);
|
CheckBoxMesh = new QCheckBox(tr("SMESH_SELECT_WHOLE_MESH"), GroupArguments);
|
||||||
@ -218,7 +222,8 @@ SMESHGUI_SymmetryDlg::SMESHGUI_SymmetryDlg( SMESHGUI* theModule )
|
|||||||
// layout
|
// layout
|
||||||
GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
|
GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
|
||||||
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
|
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
|
||||||
GroupArgumentsLayout->addWidget(LineEditElements, 0, 2, 1, 2);
|
GroupArgumentsLayout->addWidget(LineEditElements, 0, 2, 1, 1);
|
||||||
|
GroupArgumentsLayout->addWidget(filterBtn, 0, 3);
|
||||||
GroupArgumentsLayout->addWidget(CheckBoxMesh, 1, 0, 1, 4);
|
GroupArgumentsLayout->addWidget(CheckBoxMesh, 1, 0, 1, 4);
|
||||||
GroupArgumentsLayout->addWidget(GroupMirror, 2, 0, 1, 4);
|
GroupArgumentsLayout->addWidget(GroupMirror, 2, 0, 1, 4);
|
||||||
GroupArgumentsLayout->addWidget(ActionBox, 3, 0, 3, 3);
|
GroupArgumentsLayout->addWidget(ActionBox, 3, 0, 3, 3);
|
||||||
@ -317,6 +322,10 @@ SMESHGUI_SymmetryDlg::SMESHGUI_SymmetryDlg( SMESHGUI* theModule )
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
SMESHGUI_SymmetryDlg::~SMESHGUI_SymmetryDlg()
|
SMESHGUI_SymmetryDlg::~SMESHGUI_SymmetryDlg()
|
||||||
{
|
{
|
||||||
|
if ( myFilterDlg != 0 ) {
|
||||||
|
myFilterDlg->setParent( 0 );
|
||||||
|
delete myFilterDlg;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -520,7 +529,10 @@ void SMESHGUI_SymmetryDlg::ClickOnCancel()
|
|||||||
disconnect(mySelectionMgr, 0, this, 0);
|
disconnect(mySelectionMgr, 0, this, 0);
|
||||||
mySelectionMgr->clearFilters();
|
mySelectionMgr->clearFilters();
|
||||||
//mySelectionMgr->clearSelected();
|
//mySelectionMgr->clearSelected();
|
||||||
SMESH::SetPointRepresentation(false);
|
if (SMESH::GetCurrentVtkView()) {
|
||||||
|
SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters
|
||||||
|
SMESH::SetPointRepresentation(false);
|
||||||
|
}
|
||||||
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
||||||
aViewWindow->SetSelectionMode(ActorSelection);
|
aViewWindow->SetSelectionMode(ActorSelection);
|
||||||
mySMESHGUI->ResetState();
|
mySMESHGUI->ResetState();
|
||||||
@ -1007,3 +1019,19 @@ void SMESHGUI_SymmetryDlg::keyPressEvent( QKeyEvent* e )
|
|||||||
ClickOnHelp();
|
ClickOnHelp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : setFilters()
|
||||||
|
// purpose : SLOT. Called when "Filter" button pressed.
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_SymmetryDlg::setFilters()
|
||||||
|
{
|
||||||
|
if ( !myFilterDlg )
|
||||||
|
myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, SMESH::ALL );
|
||||||
|
|
||||||
|
myFilterDlg->SetSelection();
|
||||||
|
myFilterDlg->SetMesh( myMesh );
|
||||||
|
myFilterDlg->SetSourceWg( LineEditElements );
|
||||||
|
|
||||||
|
myFilterDlg->show();
|
||||||
|
}
|
||||||
|
@ -43,9 +43,10 @@ class QLineEdit;
|
|||||||
class QPushButton;
|
class QPushButton;
|
||||||
class QRadioButton;
|
class QRadioButton;
|
||||||
class QCheckBox;
|
class QCheckBox;
|
||||||
|
class SMESHGUI;
|
||||||
class SMESHGUI_IdValidator;
|
class SMESHGUI_IdValidator;
|
||||||
class SMESHGUI_SpinBox;
|
class SMESHGUI_SpinBox;
|
||||||
class SMESHGUI;
|
class SMESHGUI_FilterDlg;
|
||||||
class SMESH_Actor;
|
class SMESH_Actor;
|
||||||
class SVTK_Selector;
|
class SVTK_Selector;
|
||||||
class LightApp_SelectionMgr;
|
class LightApp_SelectionMgr;
|
||||||
@ -128,6 +129,8 @@ private:
|
|||||||
|
|
||||||
QString myHelpFileName;
|
QString myHelpFileName;
|
||||||
|
|
||||||
|
SMESHGUI_FilterDlg* myFilterDlg;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void ConstructorsClicked( int );
|
void ConstructorsClicked( int );
|
||||||
void ClickOnOk();
|
void ClickOnOk();
|
||||||
@ -142,6 +145,7 @@ private slots:
|
|||||||
void onSelectMesh( bool );
|
void onSelectMesh( bool );
|
||||||
void onVectorChanged();
|
void onVectorChanged();
|
||||||
void onActionClicked( int );
|
void onActionClicked( int );
|
||||||
|
void setFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SMESHGUI_SYMMETRYDLG_H
|
#endif // SMESHGUI_SYMMETRYDLG_H
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "SMESHGUI_VTKUtils.h"
|
#include "SMESHGUI_VTKUtils.h"
|
||||||
#include "SMESHGUI_MeshUtils.h"
|
#include "SMESHGUI_MeshUtils.h"
|
||||||
#include "SMESHGUI_IdValidator.h"
|
#include "SMESHGUI_IdValidator.h"
|
||||||
|
#include "SMESHGUI_FilterDlg.h"
|
||||||
|
|
||||||
#include <SMESH_Actor.h>
|
#include <SMESH_Actor.h>
|
||||||
#include <SMESH_TypeFilter.hxx>
|
#include <SMESH_TypeFilter.hxx>
|
||||||
@ -107,7 +108,8 @@ private:
|
|||||||
SMESHGUI_TranslationDlg::SMESHGUI_TranslationDlg( SMESHGUI* theModule )
|
SMESHGUI_TranslationDlg::SMESHGUI_TranslationDlg( SMESHGUI* theModule )
|
||||||
: QDialog( SMESH::GetDesktop( theModule ) ),
|
: QDialog( SMESH::GetDesktop( theModule ) ),
|
||||||
mySMESHGUI( theModule ),
|
mySMESHGUI( theModule ),
|
||||||
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )
|
mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ),
|
||||||
|
myFilterDlg(0)
|
||||||
{
|
{
|
||||||
QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SMESH_TRANSLATION_POINTS")));
|
QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SMESH_TRANSLATION_POINTS")));
|
||||||
QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SMESH_TRANSLATION_VECTOR")));
|
QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SMESH_TRANSLATION_VECTOR")));
|
||||||
@ -153,6 +155,8 @@ SMESHGUI_TranslationDlg::SMESHGUI_TranslationDlg( SMESHGUI* theModule )
|
|||||||
SelectElementsButton->setIcon(image2);
|
SelectElementsButton->setIcon(image2);
|
||||||
LineEditElements = new QLineEdit(GroupArguments);
|
LineEditElements = new QLineEdit(GroupArguments);
|
||||||
LineEditElements->setValidator(myIdValidator);
|
LineEditElements->setValidator(myIdValidator);
|
||||||
|
QPushButton* filterBtn = new QPushButton( tr( "SMESH_BUT_FILTER" ), GroupArguments );
|
||||||
|
connect(filterBtn, SIGNAL(clicked()), this, SLOT(setFilters()));
|
||||||
|
|
||||||
// Control for the whole mesh selection
|
// Control for the whole mesh selection
|
||||||
CheckBoxMesh = new QCheckBox(tr("SMESH_SELECT_WHOLE_MESH"), GroupArguments);
|
CheckBoxMesh = new QCheckBox(tr("SMESH_SELECT_WHOLE_MESH"), GroupArguments);
|
||||||
@ -208,7 +212,8 @@ SMESHGUI_TranslationDlg::SMESHGUI_TranslationDlg( SMESHGUI* theModule )
|
|||||||
// layout
|
// layout
|
||||||
GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
|
GroupArgumentsLayout->addWidget(TextLabelElements, 0, 0);
|
||||||
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
|
GroupArgumentsLayout->addWidget(SelectElementsButton, 0, 1);
|
||||||
GroupArgumentsLayout->addWidget(LineEditElements, 0, 2, 1, 6);
|
GroupArgumentsLayout->addWidget(LineEditElements, 0, 2, 1, 5);
|
||||||
|
GroupArgumentsLayout->addWidget(filterBtn, 0, 7);
|
||||||
GroupArgumentsLayout->addWidget(CheckBoxMesh, 1, 0, 1, 8);
|
GroupArgumentsLayout->addWidget(CheckBoxMesh, 1, 0, 1, 8);
|
||||||
GroupArgumentsLayout->addWidget(TextLabel1, 2, 0);
|
GroupArgumentsLayout->addWidget(TextLabel1, 2, 0);
|
||||||
GroupArgumentsLayout->addWidget(SelectButton1, 2, 1);
|
GroupArgumentsLayout->addWidget(SelectButton1, 2, 1);
|
||||||
@ -318,6 +323,11 @@ SMESHGUI_TranslationDlg::SMESHGUI_TranslationDlg( SMESHGUI* theModule )
|
|||||||
//=================================================================================
|
//=================================================================================
|
||||||
SMESHGUI_TranslationDlg::~SMESHGUI_TranslationDlg()
|
SMESHGUI_TranslationDlg::~SMESHGUI_TranslationDlg()
|
||||||
{
|
{
|
||||||
|
if ( myFilterDlg ) {
|
||||||
|
myFilterDlg->setParent( 0 );
|
||||||
|
delete myFilterDlg;
|
||||||
|
myFilterDlg = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -504,7 +514,10 @@ void SMESHGUI_TranslationDlg::ClickOnCancel()
|
|||||||
disconnect(mySelectionMgr, 0, this, 0);
|
disconnect(mySelectionMgr, 0, this, 0);
|
||||||
mySelectionMgr->clearFilters();
|
mySelectionMgr->clearFilters();
|
||||||
//mySelectionMgr->clearSelected();
|
//mySelectionMgr->clearSelected();
|
||||||
SMESH::SetPointRepresentation(false);
|
if (SMESH::GetCurrentVtkView()) {
|
||||||
|
SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters
|
||||||
|
SMESH::SetPointRepresentation(false);
|
||||||
|
}
|
||||||
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
|
||||||
aViewWindow->SetSelectionMode( ActorSelection );
|
aViewWindow->SetSelectionMode( ActorSelection );
|
||||||
mySMESHGUI->ResetState();
|
mySMESHGUI->ResetState();
|
||||||
@ -957,3 +970,19 @@ void SMESHGUI_TranslationDlg::keyPressEvent( QKeyEvent* e )
|
|||||||
ClickOnHelp();
|
ClickOnHelp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=================================================================================
|
||||||
|
// function : setFilters()
|
||||||
|
// purpose : SLOT. Called when "Filter" button pressed.
|
||||||
|
//=================================================================================
|
||||||
|
void SMESHGUI_TranslationDlg::setFilters()
|
||||||
|
{
|
||||||
|
if ( !myFilterDlg )
|
||||||
|
myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, SMESH::ALL );
|
||||||
|
|
||||||
|
myFilterDlg->SetSelection();
|
||||||
|
myFilterDlg->SetMesh( myMesh );
|
||||||
|
myFilterDlg->SetSourceWg( LineEditElements );
|
||||||
|
|
||||||
|
myFilterDlg->show();
|
||||||
|
}
|
||||||
|
@ -46,6 +46,7 @@ class QCheckBox;
|
|||||||
class SMESHGUI;
|
class SMESHGUI;
|
||||||
class SMESHGUI_IdValidator;
|
class SMESHGUI_IdValidator;
|
||||||
class SMESHGUI_SpinBox;
|
class SMESHGUI_SpinBox;
|
||||||
|
class SMESHGUI_FilterDlg;
|
||||||
class SMESH_Actor;
|
class SMESH_Actor;
|
||||||
class SVTK_Selector;
|
class SVTK_Selector;
|
||||||
class LightApp_SelectionMgr;
|
class LightApp_SelectionMgr;
|
||||||
@ -124,6 +125,8 @@ private:
|
|||||||
QLineEdit* LineEditNewMesh;
|
QLineEdit* LineEditNewMesh;
|
||||||
|
|
||||||
QString myHelpFileName;
|
QString myHelpFileName;
|
||||||
|
|
||||||
|
SMESHGUI_FilterDlg* myFilterDlg;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void ConstructorsClicked( int );
|
void ConstructorsClicked( int );
|
||||||
@ -138,6 +141,7 @@ private slots:
|
|||||||
void onTextChange( const QString& );
|
void onTextChange( const QString& );
|
||||||
void onSelectMesh( bool );
|
void onSelectMesh( bool );
|
||||||
void onActionClicked( int );
|
void onActionClicked( int );
|
||||||
|
void setFilters();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SMESHGUI_TRANSLATIONDLG_H
|
#endif // SMESHGUI_TRANSLATIONDLG_H
|
||||||
|
@ -226,6 +226,10 @@
|
|||||||
<source>ICON_FREE_NODE</source>
|
<source>ICON_FREE_NODE</source>
|
||||||
<translation>mesh_free_nodes.png</translation>
|
<translation>mesh_free_nodes.png</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ICON_FREE_FACES</source>
|
||||||
|
<translation>mesh_free_faces.png</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>ICON_HYPO</source>
|
<source>ICON_HYPO</source>
|
||||||
<translation>mesh_hypo_length.png</translation>
|
<translation>mesh_hypo_length.png</translation>
|
||||||
|
@ -310,6 +310,10 @@
|
|||||||
<source>MEN_FREE_NODE</source>
|
<source>MEN_FREE_NODE</source>
|
||||||
<translation>Free Nodes</translation>
|
<translation>Free Nodes</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>MEN_FREE_FACES</source>
|
||||||
|
<translation>Free Faces</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>MEN_GLOBAL_HYPO</source>
|
<source>MEN_GLOBAL_HYPO</source>
|
||||||
<translation>Global Hypothesis</translation>
|
<translation>Global Hypothesis</translation>
|
||||||
@ -2070,6 +2074,10 @@ Consider saving your work before application crash</translation>
|
|||||||
</message>
|
</message>
|
||||||
|
|
||||||
|
|
||||||
|
<message>
|
||||||
|
<source>STB_FREE_FACES</source>
|
||||||
|
<translation>Free Faces</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>STB_GLOBAL_HYPO</source>
|
<source>STB_GLOBAL_HYPO</source>
|
||||||
<translation>Global Hypothesis</translation>
|
<translation>Global Hypothesis</translation>
|
||||||
@ -2548,6 +2556,10 @@ Consider saving your work before application crash</translation>
|
|||||||
</message>
|
</message>
|
||||||
|
|
||||||
|
|
||||||
|
<message>
|
||||||
|
<source>TOP_FREE_FACES</source>
|
||||||
|
<translation>Free Faces</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>TOP_GLOBAL_HYPO</source>
|
<source>TOP_GLOBAL_HYPO</source>
|
||||||
<translation>Global Hypothesis</translation>
|
<translation>Global Hypothesis</translation>
|
||||||
@ -3460,8 +3472,8 @@ Please select a groups and try again</translation>
|
|||||||
Please select valid object and try again</translation>
|
Please select valid object and try again</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>CURRENT_GROUP</source>
|
<source>CURRENT_DIALOG</source>
|
||||||
<translation>Current Group</translation>
|
<translation>Current Dialog</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>EDGES_TLT</source>
|
<source>EDGES_TLT</source>
|
||||||
@ -3756,6 +3768,10 @@ Please enter correct value and try again</translation>
|
|||||||
</message>
|
</message>
|
||||||
|
|
||||||
|
|
||||||
|
<message>
|
||||||
|
<source>FREE_FACES</source>
|
||||||
|
<translation>Free faces</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>ID</source>
|
<source>ID</source>
|
||||||
<translation>ID</translation>
|
<translation>ID</translation>
|
||||||
@ -3768,6 +3784,10 @@ Please enter correct value and try again</translation>
|
|||||||
<source>LENGTH</source>
|
<source>LENGTH</source>
|
||||||
<translation>Length</translation>
|
<translation>Length</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>LENGTH2D</source>
|
||||||
|
<translation>Length 2D</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>LESS_THAN</source>
|
<source>LESS_THAN</source>
|
||||||
<translation>Less than</translation>
|
<translation>Less than</translation>
|
||||||
@ -3787,6 +3807,11 @@ Please enter correct value and try again</translation>
|
|||||||
<message>
|
<message>
|
||||||
<source>MULTIEDGES_ERROR</source>
|
<source>MULTIEDGES_ERROR</source>
|
||||||
<translation>Threshold value of borders at multi-connections can not be equal 1
|
<translation>Threshold value of borders at multi-connections can not be equal 1
|
||||||
|
Please enter correct value and try again</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GROUPCOLOR_ERROR</source>
|
||||||
|
<translation>Color of group can not be undefied
|
||||||
Please enter correct value and try again</translation>
|
Please enter correct value and try again</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
@ -3841,6 +3866,66 @@ Please enter correct value and try again</translation>
|
|||||||
<source>WARPING</source>
|
<source>WARPING</source>
|
||||||
<translation>Warping</translation>
|
<translation>Warping</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>LINEAR</source>
|
||||||
|
<translation>Linear</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GROUP_COLOR</source>
|
||||||
|
<translation>Color of Group</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>ELEMENTS</source>
|
||||||
|
<translation>Elements</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_TYPE</source>
|
||||||
|
<translation>Geomtry type</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_TYPE_0</source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_TYPE_0</source>
|
||||||
|
<translation>Point</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_TYPE_1</source>
|
||||||
|
<translation>Edge</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_TYPE_2</source>
|
||||||
|
<translation>Triangle</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_TYPE_3</source>
|
||||||
|
<translation>Quadrangle</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_TYPE_4</source>
|
||||||
|
<translation>Polygon</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_TYPE_5</source>
|
||||||
|
<translation>Tetrahedron</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_TYPE_6</source>
|
||||||
|
<translation>Pyramid</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_TYPE_7</source>
|
||||||
|
<translation>Hexahedron</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_TYPE_8</source>
|
||||||
|
<translation>Pentahedron</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>GEOM_TYPE_9</source>
|
||||||
|
<translation>Polyhedra</translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>SMESHGUI_GroupOpDlg</name>
|
<name>SMESHGUI_GroupOpDlg</name>
|
||||||
|
@ -1283,6 +1283,21 @@ FunctorType FreeEdges_i::GetFunctorType()
|
|||||||
return SMESH::FT_FreeEdges;
|
return SMESH::FT_FreeEdges;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : FreeFaces_i
|
||||||
|
Description : Predicate for free faces
|
||||||
|
*/
|
||||||
|
FreeFaces_i::FreeFaces_i()
|
||||||
|
{
|
||||||
|
myPredicatePtr.reset(new Controls::FreeFaces());
|
||||||
|
myFunctorPtr = myPredicatePtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
FunctorType FreeFaces_i::GetFunctorType()
|
||||||
|
{
|
||||||
|
return SMESH::FT_FreeFaces;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Class : FreeNodes_i
|
Class : FreeNodes_i
|
||||||
Description : Predicate for free nodes
|
Description : Predicate for free nodes
|
||||||
@ -1346,6 +1361,94 @@ FunctorType RangeOfIds_i::GetFunctorType()
|
|||||||
return SMESH::FT_RangeOfIds;
|
return SMESH::FT_RangeOfIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : LinearOrQuadratic_i
|
||||||
|
Description : Predicate to verify whether a mesh element is linear
|
||||||
|
*/
|
||||||
|
LinearOrQuadratic_i::LinearOrQuadratic_i()
|
||||||
|
{
|
||||||
|
myLinearOrQuadraticPtr.reset(new Controls::LinearOrQuadratic());
|
||||||
|
myFunctorPtr = myPredicatePtr = myLinearOrQuadraticPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LinearOrQuadratic_i::SetElementType(ElementType theType)
|
||||||
|
{
|
||||||
|
myLinearOrQuadraticPtr->SetType(SMDSAbs_ElementType(theType));
|
||||||
|
TPythonDump()<<this<<".SetElementType("<<theType<<")";
|
||||||
|
}
|
||||||
|
|
||||||
|
FunctorType LinearOrQuadratic_i::GetFunctorType()
|
||||||
|
{
|
||||||
|
return SMESH::FT_LinearOrQuadratic;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : GroupColor_i
|
||||||
|
Description : Functor for check color of group to whic mesh element belongs to
|
||||||
|
*/
|
||||||
|
GroupColor_i::GroupColor_i()
|
||||||
|
{
|
||||||
|
myGroupColorPtr.reset(new Controls::GroupColor());
|
||||||
|
myFunctorPtr = myPredicatePtr = myGroupColorPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
FunctorType GroupColor_i::GetFunctorType()
|
||||||
|
{
|
||||||
|
return SMESH::FT_GroupColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupColor_i::SetColorStr( const char* theColor )
|
||||||
|
{
|
||||||
|
myGroupColorPtr->SetColorStr(
|
||||||
|
TCollection_AsciiString( (Standard_CString)theColor ) );
|
||||||
|
TPythonDump()<<this<<".SetColorStr('"<<theColor<<"')";
|
||||||
|
}
|
||||||
|
|
||||||
|
char* GroupColor_i::GetColorStr()
|
||||||
|
{
|
||||||
|
TCollection_AsciiString aStr;
|
||||||
|
myGroupColorPtr->GetColorStr( aStr );
|
||||||
|
return CORBA::string_dup( aStr.ToCString() );
|
||||||
|
}
|
||||||
|
|
||||||
|
void GroupColor_i::SetElementType(ElementType theType)
|
||||||
|
{
|
||||||
|
myGroupColorPtr->SetType(SMDSAbs_ElementType(theType));
|
||||||
|
TPythonDump()<<this<<".SetElementType("<<theType<<")";
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : ElemGeomType_i
|
||||||
|
Description : Predicate check is element has indicated geometry type
|
||||||
|
*/
|
||||||
|
ElemGeomType_i::ElemGeomType_i()
|
||||||
|
{
|
||||||
|
myElemGeomTypePtr.reset(new Controls::ElemGeomType());
|
||||||
|
myFunctorPtr = myPredicatePtr = myElemGeomTypePtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ElemGeomType_i::SetElementType(ElementType theType)
|
||||||
|
{
|
||||||
|
myElemGeomTypePtr->SetType(SMDSAbs_ElementType(theType));
|
||||||
|
TPythonDump()<<this<<".SetElementType("<<theType<<")";
|
||||||
|
}
|
||||||
|
|
||||||
|
void ElemGeomType_i::SetGeometryType(GeometryType theType)
|
||||||
|
{
|
||||||
|
myElemGeomTypePtr->SetGeomType(SMDSAbs_GeometryType(theType));
|
||||||
|
TPythonDump()<<this<<".SetGeometryType("<<theType<<")";
|
||||||
|
}
|
||||||
|
|
||||||
|
GeometryType ElemGeomType_i::GetGeometryType() const
|
||||||
|
{
|
||||||
|
return (GeometryType)myElemGeomTypePtr->GetGeomType();;
|
||||||
|
}
|
||||||
|
|
||||||
|
FunctorType ElemGeomType_i::GetFunctorType()
|
||||||
|
{
|
||||||
|
return SMESH::FT_ElemGeomType;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Class : Comparator_i
|
Class : Comparator_i
|
||||||
Description : Base class for comparators
|
Description : Base class for comparators
|
||||||
@ -1778,6 +1881,14 @@ FreeEdges_ptr FilterManager_i::CreateFreeEdges()
|
|||||||
return anObj._retn();
|
return anObj._retn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FreeFaces_ptr FilterManager_i::CreateFreeFaces()
|
||||||
|
{
|
||||||
|
SMESH::FreeFaces_i* aServant = new SMESH::FreeFaces_i();
|
||||||
|
SMESH::FreeFaces_var anObj = aServant->_this();
|
||||||
|
TPythonDump()<<aServant<<" = "<<this<<".CreateFreeFaces()";
|
||||||
|
return anObj._retn();
|
||||||
|
}
|
||||||
|
|
||||||
FreeNodes_ptr FilterManager_i::CreateFreeNodes()
|
FreeNodes_ptr FilterManager_i::CreateFreeNodes()
|
||||||
{
|
{
|
||||||
SMESH::FreeNodes_i* aServant = new SMESH::FreeNodes_i();
|
SMESH::FreeNodes_i* aServant = new SMESH::FreeNodes_i();
|
||||||
@ -1810,7 +1921,6 @@ LessThan_ptr FilterManager_i::CreateLessThan()
|
|||||||
return anObj._retn();
|
return anObj._retn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MoreThan_ptr FilterManager_i::CreateMoreThan()
|
MoreThan_ptr FilterManager_i::CreateMoreThan()
|
||||||
{
|
{
|
||||||
SMESH::MoreThan_i* aServant = new SMESH::MoreThan_i();
|
SMESH::MoreThan_i* aServant = new SMESH::MoreThan_i();
|
||||||
@ -1827,7 +1937,6 @@ EqualTo_ptr FilterManager_i::CreateEqualTo()
|
|||||||
return anObj._retn();
|
return anObj._retn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
LogicalNOT_ptr FilterManager_i::CreateLogicalNOT()
|
LogicalNOT_ptr FilterManager_i::CreateLogicalNOT()
|
||||||
{
|
{
|
||||||
SMESH::LogicalNOT_i* aServant = new SMESH::LogicalNOT_i();
|
SMESH::LogicalNOT_i* aServant = new SMESH::LogicalNOT_i();
|
||||||
@ -1836,7 +1945,6 @@ LogicalNOT_ptr FilterManager_i::CreateLogicalNOT()
|
|||||||
return anObj._retn();
|
return anObj._retn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
LogicalAND_ptr FilterManager_i::CreateLogicalAND()
|
LogicalAND_ptr FilterManager_i::CreateLogicalAND()
|
||||||
{
|
{
|
||||||
SMESH::LogicalAND_i* aServant = new SMESH::LogicalAND_i();
|
SMESH::LogicalAND_i* aServant = new SMESH::LogicalAND_i();
|
||||||
@ -1845,7 +1953,6 @@ LogicalAND_ptr FilterManager_i::CreateLogicalAND()
|
|||||||
return anObj._retn();
|
return anObj._retn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
LogicalOR_ptr FilterManager_i::CreateLogicalOR()
|
LogicalOR_ptr FilterManager_i::CreateLogicalOR()
|
||||||
{
|
{
|
||||||
SMESH::LogicalOR_i* aServant = new SMESH::LogicalOR_i();
|
SMESH::LogicalOR_i* aServant = new SMESH::LogicalOR_i();
|
||||||
@ -1854,6 +1961,30 @@ LogicalOR_ptr FilterManager_i::CreateLogicalOR()
|
|||||||
return anObj._retn();
|
return anObj._retn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LinearOrQuadratic_ptr FilterManager_i::CreateLinearOrQuadratic()
|
||||||
|
{
|
||||||
|
SMESH::LinearOrQuadratic_i* aServant = new SMESH::LinearOrQuadratic_i();
|
||||||
|
SMESH::LinearOrQuadratic_var anObj = aServant->_this();
|
||||||
|
TPythonDump()<<aServant<<" = "<<this<<".CreateLinearOrQuadratic()";
|
||||||
|
return anObj._retn();
|
||||||
|
}
|
||||||
|
|
||||||
|
GroupColor_ptr FilterManager_i::CreateGroupColor()
|
||||||
|
{
|
||||||
|
SMESH::GroupColor_i* aServant = new SMESH::GroupColor_i();
|
||||||
|
SMESH::GroupColor_var anObj = aServant->_this();
|
||||||
|
TPythonDump()<<aServant<<" = "<<this<<".CreateGroupColor()";
|
||||||
|
return anObj._retn();
|
||||||
|
}
|
||||||
|
|
||||||
|
ElemGeomType_ptr FilterManager_i::CreateElemGeomType()
|
||||||
|
{
|
||||||
|
SMESH::ElemGeomType_i* aServant = new SMESH::ElemGeomType_i();
|
||||||
|
SMESH::ElemGeomType_var anObj = aServant->_this();
|
||||||
|
TPythonDump()<<aServant<<" = "<<this<<".CreateElemGeomType()";
|
||||||
|
return anObj._retn();
|
||||||
|
}
|
||||||
|
|
||||||
Filter_ptr FilterManager_i::CreateFilter()
|
Filter_ptr FilterManager_i::CreateFilter()
|
||||||
{
|
{
|
||||||
SMESH::Filter_i* aServant = new SMESH::Filter_i();
|
SMESH::Filter_i* aServant = new SMESH::Filter_i();
|
||||||
@ -2034,6 +2165,8 @@ static inline bool getCriteria( Predicate_i* thePred,
|
|||||||
{
|
{
|
||||||
case FT_FreeBorders:
|
case FT_FreeBorders:
|
||||||
case FT_FreeEdges:
|
case FT_FreeEdges:
|
||||||
|
case FT_FreeFaces:
|
||||||
|
case FT_LinearOrQuadratic:
|
||||||
case FT_FreeNodes:
|
case FT_FreeNodes:
|
||||||
{
|
{
|
||||||
CORBA::ULong i = theCriteria->length();
|
CORBA::ULong i = theCriteria->length();
|
||||||
@ -2167,6 +2300,33 @@ static inline bool getCriteria( Predicate_i* thePred,
|
|||||||
theCriteria[ theCriteria->length() - 1 ].BinaryOp = aFType;
|
theCriteria[ theCriteria->length() - 1 ].BinaryOp = aFType;
|
||||||
return getCriteria( aPred2, theCriteria );
|
return getCriteria( aPred2, theCriteria );
|
||||||
}
|
}
|
||||||
|
case FT_GroupColor:
|
||||||
|
{
|
||||||
|
CORBA::ULong i = theCriteria->length();
|
||||||
|
theCriteria->length( i + 1 );
|
||||||
|
|
||||||
|
theCriteria[ i ] = createCriterion();
|
||||||
|
|
||||||
|
GroupColor_i* aPred = dynamic_cast<GroupColor_i*>( thePred );
|
||||||
|
theCriteria[ i ].Type = aFType;
|
||||||
|
theCriteria[ i ].TypeOfElement = aPred->GetElementType();
|
||||||
|
theCriteria[ i ].ThresholdStr = aPred->GetColorStr();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case FT_ElemGeomType:
|
||||||
|
{
|
||||||
|
CORBA::ULong i = theCriteria->length();
|
||||||
|
theCriteria->length( i + 1 );
|
||||||
|
|
||||||
|
theCriteria[ i ] = createCriterion();
|
||||||
|
|
||||||
|
ElemGeomType_i* aPred = dynamic_cast<ElemGeomType_i*>( thePred );
|
||||||
|
theCriteria[ i ].Type = aFType;
|
||||||
|
theCriteria[ i ].TypeOfElement = aPred->GetElementType();
|
||||||
|
theCriteria[ i ].Threshold = (double)aPred->GetGeometryType();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
case FT_Undefined:
|
case FT_Undefined:
|
||||||
return false;
|
return false;
|
||||||
@ -2281,6 +2441,9 @@ CORBA::Boolean Filter_i::SetCriteria( const SMESH::Filter::Criteria& theCriteria
|
|||||||
case SMESH::FT_FreeEdges:
|
case SMESH::FT_FreeEdges:
|
||||||
aPredicate = aFilterMgr->CreateFreeEdges();
|
aPredicate = aFilterMgr->CreateFreeEdges();
|
||||||
break;
|
break;
|
||||||
|
case SMESH::FT_FreeFaces:
|
||||||
|
aPredicate = aFilterMgr->CreateFreeFaces();
|
||||||
|
break;
|
||||||
case SMESH::FT_FreeNodes:
|
case SMESH::FT_FreeNodes:
|
||||||
aPredicate = aFilterMgr->CreateFreeNodes();
|
aPredicate = aFilterMgr->CreateFreeNodes();
|
||||||
break;
|
break;
|
||||||
@ -2331,6 +2494,29 @@ CORBA::Boolean Filter_i::SetCriteria( const SMESH::Filter::Criteria& theCriteria
|
|||||||
aPredicate = aFilterMgr->CreateBadOrientedVolume();
|
aPredicate = aFilterMgr->CreateBadOrientedVolume();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case SMESH::FT_LinearOrQuadratic:
|
||||||
|
{
|
||||||
|
SMESH::LinearOrQuadratic_ptr tmpPred = aFilterMgr->CreateLinearOrQuadratic();
|
||||||
|
tmpPred->SetElementType( aTypeOfElem );
|
||||||
|
aPredicate = tmpPred;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SMESH::FT_GroupColor:
|
||||||
|
{
|
||||||
|
SMESH::GroupColor_ptr tmpPred = aFilterMgr->CreateGroupColor();
|
||||||
|
tmpPred->SetElementType( aTypeOfElem );
|
||||||
|
tmpPred->SetColorStr( aThresholdStr );
|
||||||
|
aPredicate = tmpPred;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SMESH::FT_ElemGeomType:
|
||||||
|
{
|
||||||
|
SMESH::ElemGeomType_ptr tmpPred = aFilterMgr->CreateElemGeomType();
|
||||||
|
tmpPred->SetElementType( aTypeOfElem );
|
||||||
|
tmpPred->SetGeometryType( (GeometryType)(aThreshold + 0.5) );
|
||||||
|
aPredicate = tmpPred;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
continue;
|
continue;
|
||||||
@ -2542,17 +2728,21 @@ static inline LDOMString toString( CORBA::Long theType )
|
|||||||
case FT_RangeOfIds : return "Range of IDs";
|
case FT_RangeOfIds : return "Range of IDs";
|
||||||
case FT_FreeBorders : return "Free borders";
|
case FT_FreeBorders : return "Free borders";
|
||||||
case FT_FreeEdges : return "Free edges";
|
case FT_FreeEdges : return "Free edges";
|
||||||
|
case FT_FreeFaces : return "Free faces";
|
||||||
case FT_FreeNodes : return "Free nodes";
|
case FT_FreeNodes : return "Free nodes";
|
||||||
case FT_MultiConnection : return "Borders at multi-connections";
|
case FT_MultiConnection : return "Borders at multi-connections";
|
||||||
case FT_MultiConnection2D: return "Borders at multi-connections 2D";
|
case FT_MultiConnection2D: return "Borders at multi-connections 2D";
|
||||||
case FT_Length : return "Length";
|
case FT_Length : return "Length";
|
||||||
case FT_Length2D : return "Length2D";
|
case FT_Length2D : return "Length 2D";
|
||||||
case FT_LessThan : return "Less than";
|
case FT_LessThan : return "Less than";
|
||||||
case FT_MoreThan : return "More than";
|
case FT_MoreThan : return "More than";
|
||||||
case FT_EqualTo : return "Equal to";
|
case FT_EqualTo : return "Equal to";
|
||||||
case FT_LogicalNOT : return "Not";
|
case FT_LogicalNOT : return "Not";
|
||||||
case FT_LogicalAND : return "And";
|
case FT_LogicalAND : return "And";
|
||||||
case FT_LogicalOR : return "Or";
|
case FT_LogicalOR : return "Or";
|
||||||
|
case FT_GroupColor : return "Color of Group";
|
||||||
|
case FT_LinearOrQuadratic : return "Linear or Quadratic";
|
||||||
|
case FT_ElemGeomType : return "Element geomtry type";
|
||||||
case FT_Undefined : return "";
|
case FT_Undefined : return "";
|
||||||
default : return "";
|
default : return "";
|
||||||
}
|
}
|
||||||
@ -2578,6 +2768,7 @@ static inline SMESH::FunctorType toFunctorType( const LDOMString& theStr )
|
|||||||
else if ( theStr.equals( "Lying on Geom" ) ) return FT_LyingOnGeom;
|
else if ( theStr.equals( "Lying on Geom" ) ) return FT_LyingOnGeom;
|
||||||
else if ( theStr.equals( "Free borders" ) ) return FT_FreeBorders;
|
else if ( theStr.equals( "Free borders" ) ) return FT_FreeBorders;
|
||||||
else if ( theStr.equals( "Free edges" ) ) return FT_FreeEdges;
|
else if ( theStr.equals( "Free edges" ) ) return FT_FreeEdges;
|
||||||
|
else if ( theStr.equals( "Free faces" ) ) return FT_FreeFaces;
|
||||||
else if ( theStr.equals( "Free nodes" ) ) return FT_FreeNodes;
|
else if ( theStr.equals( "Free nodes" ) ) return FT_FreeNodes;
|
||||||
else if ( theStr.equals( "Borders at multi-connections" ) ) return FT_MultiConnection;
|
else if ( theStr.equals( "Borders at multi-connections" ) ) return FT_MultiConnection;
|
||||||
// else if ( theStr.equals( "Borders at multi-connections 2D" ) ) return FT_MultiConnection2D;
|
// else if ( theStr.equals( "Borders at multi-connections 2D" ) ) return FT_MultiConnection2D;
|
||||||
@ -2591,6 +2782,9 @@ static inline SMESH::FunctorType toFunctorType( const LDOMString& theStr )
|
|||||||
else if ( theStr.equals( "Not" ) ) return FT_LogicalNOT;
|
else if ( theStr.equals( "Not" ) ) return FT_LogicalNOT;
|
||||||
else if ( theStr.equals( "And" ) ) return FT_LogicalAND;
|
else if ( theStr.equals( "And" ) ) return FT_LogicalAND;
|
||||||
else if ( theStr.equals( "Or" ) ) return FT_LogicalOR;
|
else if ( theStr.equals( "Or" ) ) return FT_LogicalOR;
|
||||||
|
else if ( theStr.equals( "Color of Group" ) ) return FT_GroupColor;
|
||||||
|
else if ( theStr.equals( "Linear or Quadratic" ) ) return FT_LinearOrQuadratic;
|
||||||
|
else if ( theStr.equals( "Element geomtry type" ) ) return FT_ElemGeomType;
|
||||||
else if ( theStr.equals( "" ) ) return FT_Undefined;
|
else if ( theStr.equals( "" ) ) return FT_Undefined;
|
||||||
else return FT_Undefined;
|
else return FT_Undefined;
|
||||||
}
|
}
|
||||||
@ -2863,7 +3057,7 @@ Filter_ptr FilterLibrary_i::Copy( const char* theFilterName )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
aCriterion.ThresholdStr = str.GetString();
|
aCriterion.ThresholdStr = str.GetString();
|
||||||
|
|
||||||
aCriteria.push_back( aCriterion );
|
aCriteria.push_back( aCriterion );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -522,6 +522,19 @@ namespace SMESH
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : FreeFaces_i
|
||||||
|
Description : Predicate for free faces
|
||||||
|
*/
|
||||||
|
class SMESH_I_EXPORT FreeFaces_i: public virtual POA_SMESH::FreeFaces,
|
||||||
|
public virtual Predicate_i
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FreeFaces_i();
|
||||||
|
FunctorType GetFunctorType();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Class : FreeNodes_i
|
Class : FreeNodes_i
|
||||||
Description : Predicate for free nodes
|
Description : Predicate for free nodes
|
||||||
@ -554,6 +567,60 @@ namespace SMESH
|
|||||||
protected:
|
protected:
|
||||||
Controls::RangeOfIdsPtr myRangeOfIdsPtr;
|
Controls::RangeOfIdsPtr myRangeOfIdsPtr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : LinearOrQuadratic_i
|
||||||
|
Description : Verify whether a mesh element is linear
|
||||||
|
*/
|
||||||
|
class SMESH_I_EXPORT LinearOrQuadratic_i: public virtual POA_SMESH::LinearOrQuadratic,
|
||||||
|
public virtual Predicate_i
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LinearOrQuadratic_i();
|
||||||
|
FunctorType GetFunctorType();
|
||||||
|
void SetElementType( ElementType theType );
|
||||||
|
|
||||||
|
private:
|
||||||
|
Controls::LinearOrQuadraticPtr myLinearOrQuadraticPtr;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : GroupColor_i
|
||||||
|
Description : Functor for check color of group to whic mesh element belongs to
|
||||||
|
*/
|
||||||
|
class SMESH_I_EXPORT GroupColor_i: public virtual POA_SMESH::GroupColor,
|
||||||
|
public virtual Predicate_i
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
GroupColor_i();
|
||||||
|
FunctorType GetFunctorType();
|
||||||
|
|
||||||
|
void SetElementType( ElementType theType );
|
||||||
|
void SetColorStr( const char* theColor );
|
||||||
|
char* GetColorStr();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Controls::GroupColorPtr myGroupColorPtr;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Class : ElemGeomType_i
|
||||||
|
Description : Functor for check element geometry type
|
||||||
|
*/
|
||||||
|
class SMESH_I_EXPORT ElemGeomType_i: public virtual POA_SMESH::ElemGeomType,
|
||||||
|
public virtual Predicate_i
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ElemGeomType_i();
|
||||||
|
FunctorType GetFunctorType();
|
||||||
|
|
||||||
|
void SetElementType ( ElementType theType );
|
||||||
|
void SetGeometryType( GeometryType theType );
|
||||||
|
GeometryType GetGeometryType() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Controls::ElemGeomTypePtr myElemGeomTypePtr;
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Class : Comparator_i
|
Class : Comparator_i
|
||||||
@ -830,11 +897,17 @@ namespace SMESH
|
|||||||
FreeBorders_ptr CreateFreeBorders();
|
FreeBorders_ptr CreateFreeBorders();
|
||||||
FreeEdges_ptr CreateFreeEdges();
|
FreeEdges_ptr CreateFreeEdges();
|
||||||
FreeNodes_ptr CreateFreeNodes();
|
FreeNodes_ptr CreateFreeNodes();
|
||||||
|
FreeFaces_ptr CreateFreeFaces();
|
||||||
|
|
||||||
RangeOfIds_ptr CreateRangeOfIds();
|
RangeOfIds_ptr CreateRangeOfIds();
|
||||||
|
|
||||||
BadOrientedVolume_ptr CreateBadOrientedVolume();
|
BadOrientedVolume_ptr CreateBadOrientedVolume();
|
||||||
|
LinearOrQuadratic_ptr CreateLinearOrQuadratic();
|
||||||
|
|
||||||
|
GroupColor_ptr CreateGroupColor();
|
||||||
|
|
||||||
|
ElemGeomType_ptr CreateElemGeomType();
|
||||||
|
|
||||||
LessThan_ptr CreateLessThan();
|
LessThan_ptr CreateLessThan();
|
||||||
MoreThan_ptr CreateMoreThan();
|
MoreThan_ptr CreateMoreThan();
|
||||||
EqualTo_ptr CreateEqualTo();
|
EqualTo_ptr CreateEqualTo();
|
||||||
|
@ -475,7 +475,8 @@ class smeshDC(SMESH._objref_SMESH_Gen):
|
|||||||
else:
|
else:
|
||||||
print "Error: The treshold should be a string."
|
print "Error: The treshold should be a string."
|
||||||
return None
|
return None
|
||||||
elif CritType in [FT_FreeBorders, FT_FreeEdges, FT_BadOrientedVolume, FT_FreeNodes]:
|
elif CritType in [FT_FreeBorders, FT_FreeEdges, FT_BadOrientedVolume, FT_FreeNodes,
|
||||||
|
FT_FreeFaces, FT_ElemGeomType, FT_GroupColor]:
|
||||||
# At this point the treshold is unnecessary
|
# At this point the treshold is unnecessary
|
||||||
if aTreshold == FT_LogicalNOT:
|
if aTreshold == FT_LogicalNOT:
|
||||||
aCriterion.UnaryOp = self.EnumToLong(FT_LogicalNOT)
|
aCriterion.UnaryOp = self.EnumToLong(FT_LogicalNOT)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user