{
return myMeshType->currentIndex( );
}
-
-
+//================================================================================
+/*!
+ * \brief Set current index types of mesh
+ */
+//================================================================================
+void SMESHGUI_MeshDlg::setCurrentMeshType( const int theIndex )
+{
+ myMeshType->setCurrentIndex( theIndex );
+}
int getActiveObject();
void setAvailableMeshType(const QStringList& );
int currentMeshType();
+ void setCurrentMeshType( const int );
signals:
void hypoSet( const QString& );
myDlg->adjustSize();
readMesh();
}
+ int curIndex = myDlg->currentMeshType( );
QStringList TypeMeshList;
createMeshTypeList( TypeMeshList );
setAvailableMeshType( TypeMeshList );
- setFilteredAlgoData( myMaxShapeDim, myDlg->currentMeshType( ));
+ curIndex =( curIndex >= TypeMeshList.count() ) ? 0 : curIndex;
+ myDlg->setCurrentMeshType( curIndex );
+ setFilteredAlgoData( myMaxShapeDim, curIndex);
}
catch ( const SALOME::SALOME_Exception& S_ex )
{
// check that algorithms of other dimentions are compatible with
// the selected one
if ( !algoData ) { // all algos becomes available
- if (myDlg->currentMeshType() == MT_ANY)
+ if (myDlg->currentMeshType() == MT_ANY || aDim == SMESH::DIM_1D || aDim == SMESH::DIM_0D)
availableHyps( aDim, Algo, anAvailable, myAvailableHypData[ aDim ][ Algo ]);
else{
anAvailable.clear();
if not geom:
geom = self.mesh.GetShapeToMesh()
pass
- AssureGeomPublished( self, geom, "shape for %s" % hyp.GetName())
- status = self.mesh.AddHypothesis(geom, hyp)
- isAlgo = hyp._narrow( SMESH_Algo )
- hyp_name = GetName( hyp )
+ hyp_name = hyp.GetName()
+ lib_name = hyp.GetLibName()
geom_name = ""
if geom:
- geom_name = GetName( geom )
- TreatHypoStatus( status, hyp_name, geom_name, isAlgo )
- return status
+ geom_name = geom.GetName()
+ isApplicable = True
+ isAlgo = hyp._narrow( SMESH_Algo )
+ if self.mesh.HasShapeToMesh():
+ isApplicable = self.smeshpyD.IsApplicable(hyp_name, lib_name, geom, not geom.IsSame( self.mesh.GetShapeToMesh() ) )
+ if isApplicable:
+ AssureGeomPublished( self, geom, "shape for %s" % hyp.GetName())
+ status = self.mesh.AddHypothesis(geom, hyp)
+ TreatHypoStatus( status, hyp_name, geom_name, isAlgo )
+ return status
+ else:
+ TreatHypoStatus( HYP_BAD_GEOMETRY, hyp_name, geom_name, isAlgo )
+ return HYP_BAD_GEOMETRY
## Return True if an algorithm of hypothesis is assigned to a given shape
# @param hyp a hypothesis to check
pass
self.subm = mesh.mesh.GetSubMesh(geom, algo.GetName())
self.algo = algo
- status = mesh.mesh.AddHypothesis(self.geom, self.algo)
- TreatHypoStatus( status, algo.GetName(), name, True )
+ status = mesh.AddHypothesis(self.geom, self.algo)
return
def CompareHyp (self, hyp, args):
if ( !exp0.More() ) return false;
for ( ; exp0.More(); exp0.Next() )
{
- nbFoundShells = 1;
+ nbFoundShells = 0;
isCurShellApp = false;
- for (TopExp_Explorer exp1( exp0.Current(), TopAbs_SHELL ); exp1.More(); exp1.Next(), ++nbFoundShells){
- if ( nbFoundShells == 2 ) {
- if ( toCheckAll ) return false;
- break;
- }
- const TopoDS_Shell& shell = TopoDS::Shell(exp1.Current());
- isCurShellApp = SMESH_Block::FindBlockShapes(shell, theVertex0, theVertex1, theShapeIDMap );
- if ( toCheckAll && !isCurShellApp ) return false;
- }
- if( !toCheckAll && isCurShellApp ) return true;
+ TopExp_Explorer exp1( exp0.Current(), TopAbs_SHELL );
+ for ( ; exp1.More(); exp1.Next(), ++nbFoundShells)
+ if ( nbFoundShells == 2 ) break;
+ if ( nbFoundShells == 2){
+ if ( toCheckAll ) return false;
+ continue;
+ }
+ exp1.Init( exp0.Current(), TopAbs_SHELL );
+ const TopoDS_Shell& shell = TopoDS::Shell(exp1.Current());
+ isCurShellApp = SMESH_Block::FindBlockShapes(shell, theVertex0, theVertex1, theShapeIDMap );
+ if ( toCheckAll && !isCurShellApp ) return false;
+ if ( !toCheckAll && isCurShellApp ) return true;
}
return toCheckAll;
};
}
shell[ nbShells-1 ] = It.Value();
}
- if ( nbShells != 2 ) continue;
+ if ( nbShells != 2 ) {
+ if ( toCheckAll ) return false;
+ continue;
+ }
int nbFaces1 = SMESH_MesherHelper:: Count( shell[0], TopAbs_FACE, 0 );
int nbFaces2 = SMESH_MesherHelper:: Count( shell[1], TopAbs_FACE, 0 );