FT_FreeEdges,
FT_FreeNodes,
FT_FreeFaces,
+ FT_EqualNodes,
+ FT_EqualEdges,
+ FT_EqualFaces,
+ FT_EqualVolumes,
FT_MultiConnection,
FT_MultiConnection2D,
FT_Length,
*/
interface OverConstrainedFace: Predicate {};
+ /*!
+ * Logical functor (predicate) "Equal Nodes".
+ * Verify whether there is another mesh node with same coordinates
+ */
+ interface EqualNodes: Predicate
+ {
+ void SetTolerance( in double theToler );
+ double GetTolerance();
+ };
+ /*!
+ * Logical functor (predicate) "Equal Edges".
+ * Verify whether there is another mesh edge basing on the same nodes
+ */
+ interface EqualEdges: Predicate {};
+ /*!
+ * Logical functor (predicate) "Equal Faces".
+ * Verify whether there is another mesh face basing on the same nodes
+ */
+ interface EqualFaces: Predicate {};
+ /*!
+ * Logical functor (predicate) "Equal Volumes".
+ * Verify whether there is another mesh volumes basing on the same nodes
+ */
+ interface EqualVolumes: Predicate {};
+
/*!
* Logical functor (predicate) "Belong To Geometry".
* Verify whether mesh element or node belong to pointed Geom Object
FreeNodes CreateFreeNodes();
FreeFaces CreateFreeFaces();
+ EqualNodes CreateEqualNodes();
+ EqualEdges CreateEqualEdges();
+ EqualFaces CreateEqualFaces();
+ EqualVolumes CreateEqualVolumes();
+
RangeOfIds CreateRangeOfIds();
BadOrientedVolume CreateBadOrientedVolume();
if (!myIsEntityModeCache){
myEntityModeCache = GetEntityMode();
myIsEntityModeCache=true;
- }
+ }
SetEntityMode(eFaces);
break;
default:
if (!myIsEntityModeCache){
myEntityModeCache = GetEntityMode();
myIsEntityModeCache=true;
- }
+ }
SetEntityMode(eFaces);
}
}else if(myControlActor == my3DActor) {
if (!myIsEntityModeCache){
myEntityModeCache = GetEntityMode();
myIsEntityModeCache=true;
- }
+ }
SetEntityMode(eVolumes);
}
}
if(myControlMode != eNone){
switch(myControlMode){
case eFreeNodes:
+ case eCoincidentNodes:
myNodeExtActor->VisibilityOn();
break;
case eFreeEdges:
case eFreeBorders:
+ case eCoincidentElems1D:
+ case eLength2D:
+ case eMultiConnection2D:
my1DExtActor->VisibilityOn();
break;
case eFreeFaces:
case eBareBorderFace:
case eOverConstrainedFace:
+ case eCoincidentElems2D:
my2DExtActor->VisibilityOn();
break;
case eBareBorderVolume:
case eOverConstrainedVolume:
+ case eCoincidentElems3D:
my3DExtActor->VisibilityOn();
break;
- case eLength2D:
- case eMultiConnection2D:
- my1DExtActor->VisibilityOn();
default:
if(myControlActor->GetUnstructuredGrid()->GetNumberOfCells())
myScalarBarActor->VisibilityOn();
dynamic_cast<BareBorderVolume *>(theFunctor.get()) ||
dynamic_cast<BareBorderFace *>(theFunctor.get()) ||
dynamic_cast<OverConstrainedVolume*>(theFunctor.get()) ||
- dynamic_cast<CoincidentNodes *>(theFunctor.get()) ||
dynamic_cast<CoincidentElements1D *>(theFunctor.get()) ||
dynamic_cast<CoincidentElements2D *>(theFunctor.get()) ||
dynamic_cast<CoincidentElements3D *>(theFunctor.get()) ||
dynamic_cast<OverConstrainedFace *>(theFunctor.get()))
{
- Predicate* aFreePredicate = dynamic_cast<Predicate*>(theFunctor.get());
+ Predicate* aPredicate = dynamic_cast<Predicate*>(theFunctor.get());
myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
vtkUnstructuredGrid* aGrid = myVisualObj->GetUnstructuredGrid();
vtkIdType aNbCells = aGrid->GetNumberOfCells();
for( vtkIdType i = 0; i < aNbCells; i++ ){
vtkIdType anObjId = myVisualObj->GetElemObjId(i);
- if(aFreePredicate->IsSatisfy(anObjId))
+ if(aPredicate->IsSatisfy(anObjId))
myExtractUnstructuredGrid->RegisterCell(i);
}
if(!myExtractUnstructuredGrid->IsCellsRegistered())
SetUnstructuredGrid(aDataSet);
aDataSet->Delete();
}
- else if(FreeNodes* aFreeNodes = dynamic_cast<FreeNodes*>(theFunctor.get()))
+ else if(dynamic_cast<FreeNodes *>(theFunctor.get()) ||
+ dynamic_cast<CoincidentNodes*>(theFunctor.get()))
{
+ Predicate* aPredicate = dynamic_cast<Predicate*>(theFunctor.get());
myExtractUnstructuredGrid->SetModeOfChanging(VTKViewer_ExtractUnstructuredGrid::eAdding);
vtkIdType aNbNodes = myVisualObj->GetNbEntities(SMDSAbs_Node);
for( vtkIdType i = 0; i < aNbNodes; i++ ){
vtkIdType anObjId = myVisualObj->GetNodeObjId(i);
- if(aFreeNodes->IsSatisfy(anObjId))
+ if(aPredicate->IsSatisfy(anObjId))
myExtractUnstructuredGrid->RegisterCell(i);
}
if(!myExtractUnstructuredGrid->IsCellsRegistered())
theCriterion.Type == SMESH::FT_BelongToGenSurface ||
theCriterion.Type == SMESH::FT_BelongToGeom ||
theCriterion.Type == SMESH::FT_LyingOnGeom ||
- theCriterion.Type == SMESH::FT_CoplanarFaces)
+ theCriterion.Type == SMESH::FT_CoplanarFaces ||
+ theCriterion.Type == SMESH::FT_EqualNodes)
{
QTableWidgetItem* anItem = aTable->item(theRow, 0);
if (!myAddWidgets.contains(anItem))
case SMESH::FT_BelongToCylinder:
case SMESH::FT_BelongToGenSurface:
case SMESH::FT_LyingOnGeom:
+ case SMESH::FT_EqualNodes:
retval = "len_tol_precision"; break;
case SMESH::FT_Length:
case SMESH::FT_Length2D:
aTable->blockSignals( isSignalsBlocked );
}
- if ((aType == SMESH::NODE && aCriterionType == SMESH::FT_FreeNodes ) ||
- (aType == SMESH::EDGE && aCriterionType == SMESH::FT_FreeBorders ) ||
- (aType == SMESH::FACE && (aCriterionType == SMESH::FT_BareBorderFace ||
- aCriterionType == SMESH::FT_OverConstrainedFace ||
- aCriterionType == SMESH::FT_FreeEdges ||
- aCriterionType == SMESH::FT_FreeFaces)) ||
- (aType == SMESH::VOLUME && (aCriterionType == SMESH::FT_BadOrientedVolume ||
+ if ((aType == SMESH::NODE && (aCriterionType == SMESH::FT_FreeNodes ||
+ aCriterionType == SMESH::FT_EqualNodes )) ||
+ (aType == SMESH::EDGE && (aCriterionType == SMESH::FT_FreeBorders ||
+ aCriterionType == SMESH::FT_EqualEdges )) ||
+ (aType == SMESH::FACE && (aCriterionType == SMESH::FT_BareBorderFace ||
+ aCriterionType == SMESH::FT_OverConstrainedFace ||
+ aCriterionType == SMESH::FT_FreeEdges ||
+ aCriterionType == SMESH::FT_FreeFaces ||
+ aCriterionType == SMESH::FT_EqualFaces)) ||
+ (aType == SMESH::VOLUME && (aCriterionType == SMESH::FT_BadOrientedVolume ||
aCriterionType == SMESH::FT_OverConstrainedVolume ||
- aCriterionType == SMESH::FT_BareBorderVolume)) ||
+ aCriterionType == SMESH::FT_BareBorderVolume ||
+ aCriterionType == SMESH::FT_EqualVolumes )) ||
aCriterionType == SMESH::FT_LinearOrQuadratic ||
aCriterionType == SMESH::FT_GroupColor ||
aCriterionType == SMESH::FT_ElemGeomType ||
aCriteria[ SMESH::FT_LyingOnGeom ] = tr("LYING_ON_GEOM");
aCriteria[ SMESH::FT_FreeNodes ] = tr("FREE_NODES");
aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR");
+ aCriteria[ SMESH::FT_EqualNodes ] = tr("EQUAL_NODE");
}
return aCriteria;
}
aCriteria[ SMESH::FT_LinearOrQuadratic ] = tr("LINEAR");
aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR");
aCriteria[ SMESH::FT_ElemGeomType ] = tr("GEOM_TYPE");
+ aCriteria[ SMESH::FT_EqualEdges ] = tr("EQUAL_EDGE");
}
return aCriteria;
}
aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR");
aCriteria[ SMESH::FT_ElemGeomType ] = tr("GEOM_TYPE");
aCriteria[ SMESH::FT_CoplanarFaces ] = tr("COPLANAR_FACES");
+ aCriteria[ SMESH::FT_EqualFaces ] = tr("EQUAL_FACE");
}
return aCriteria;
}
aCriteria[ SMESH::FT_LinearOrQuadratic ] = tr("LINEAR");
aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR");
aCriteria[ SMESH::FT_ElemGeomType ] = tr("GEOM_TYPE");
+ aCriteria[ SMESH::FT_EqualVolumes ] = tr("EQUAL_VOLUME");
}
return aCriteria;
}
<source>STB_FIND_ELEM</source>
<translation>Find Element by Point</translation>
</message>
+ <message>
+ <source>EQUAL_NODE</source>
+ <translation>Double nodes</translation>
+ </message>
<message>
<source>MEN_EQUAL_NODE</source>
<translation>Double nodes</translation>
<source>TOP_EQUAL_NODE</source>
<translation>Double nodes</translation>
</message>
+ <message>
+ <source>EQUAL_EDGE</source>
+ <translation>Double edges</translation>
+ </message>
<message>
<source>MEN_EQUAL_EDGE</source>
<translation>Double edges</translation>
<source>TOP_EQUAL_EDGE</source>
<translation>Double edges</translation>
</message>
+ <message>
+ <source>EQUAL_FACE</source>
+ <translation>Double faces</translation>
+ </message>
<message>
<source>MEN_EQUAL_FACE</source>
<translation>Double faces</translation>
<source>TOP_EQUAL_FACE</source>
<translation>Double faces</translation>
</message>
+ <message>
+ <source>EQUAL_VOLUME</source>
+ <translation>Double volumes</translation>
+ </message>
<message>
<source>MEN_EQUAL_VOLUME</source>
<translation>Double volumes</translation>
print "Error: The threshold value should be of SALOMEDS.Color type"
return None
pass
- elif CritType in [FT_FreeBorders, FT_FreeEdges, FT_BadOrientedVolume, FT_FreeNodes,
- FT_FreeFaces, FT_LinearOrQuadratic,
+ elif CritType in [FT_FreeBorders, FT_FreeEdges, FT_FreeNodes, FT_FreeFaces,
+ FT_LinearOrQuadratic, FT_BadOrientedVolume,
FT_BareBorderFace, FT_BareBorderVolume,
- FT_OverConstrainedFace, FT_OverConstrainedVolume]:
+ FT_OverConstrainedFace, FT_OverConstrainedVolume,
+ FT_EqualNodes,FT_EqualEdges,FT_EqualFaces,FT_EqualVolumes ]:
# At this point the treshold is unnecessary
if aTreshold == FT_LogicalNOT:
aCriterion.UnaryOp = self.EnumToLong(FT_LogicalNOT)
# @param Treshold the threshold value (range of id ids as string, shape, numeric)
# @param UnaryOp FT_LogicalNOT or FT_Undefined
# @param Tolerance the tolerance used by FT_BelongToGeom, FT_BelongToSurface,
- # FT_LyingOnGeom, FT_CoplanarFaces criteria
+ # FT_LyingOnGeom, FT_CoplanarFaces and FT_EqualNodes criteria
# @return SMESH_Filter
#
# <a href="../tui_filters_page.html#tui_filters">Example of Filters usage</a>