mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-26 17:30:35 +05:00
IPAL52478: Too thin viscous layers are constructed
+ a fix of Mesh dialog for 22483 + allow white-space-separated IDs for RangeOdIDs filter + docs improved
This commit is contained in:
parent
b5bc313d9b
commit
ac69e1629b
@ -2,9 +2,21 @@
|
|||||||
|
|
||||||
\page constructing_submeshes_page Constructing sub-meshes
|
\page constructing_submeshes_page Constructing sub-meshes
|
||||||
|
|
||||||
Sub-mesh is a mesh on a geometrical sub-object created with meshing algorithms
|
Sub-mesh is a mesh on a geometrical sub-object (sub-shape) used to assign
|
||||||
and/or hypotheses other than the algorithms and hypotheses assigned to
|
different meshing algorithms and/or hypotheses than the algorithms and
|
||||||
the parent mesh on the parent geometrical object.
|
hypotheses assigned to the parent mesh on the parent geometrical
|
||||||
|
object, that allows getting a local mesh refinement.
|
||||||
|
|
||||||
|
A sub-shape to create a sub-mesh on should be retrieved from the shape
|
||||||
|
of the parent mesh one of the following ways: <ul>
|
||||||
|
<li> In Geometry module, via <em>New Entity > Explode</em> menu.</li>
|
||||||
|
<li> In Geometry module, by creation of a group (<em>New Entity >
|
||||||
|
Group > Create Group</em> menu).</li>
|
||||||
|
<li> In Mesh module, by
|
||||||
|
\ref subshape_by_mesh_elem "selecting a mesh element" generated on a
|
||||||
|
sub-shape of interest. This way is accessible if the mesh is
|
||||||
|
already computed.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
If a geometrical sub-object belongs to several geometrical objects
|
If a geometrical sub-object belongs to several geometrical objects
|
||||||
having different meshes or sub-meshes, it will be meshed with the
|
having different meshes or sub-meshes, it will be meshed with the
|
||||||
@ -56,6 +68,7 @@ sub-mesh. You can select meshing algorithms and hypotheses in the same way as
|
|||||||
in \ref constructing_meshes_page "Create mesh" menu.
|
in \ref constructing_meshes_page "Create mesh" menu.
|
||||||
|
|
||||||
\par
|
\par
|
||||||
|
\anchor subshape_by_mesh_elem
|
||||||
If the parent mesh is already computed, then you can define the
|
If the parent mesh is already computed, then you can define the
|
||||||
\b Geometry by picking mesh elements computed on a sub-shape of interest
|
\b Geometry by picking mesh elements computed on a sub-shape of interest
|
||||||
in the 3D Viewer, i.e. you do not have to extract this sub-shape
|
in the 3D Viewer, i.e. you do not have to extract this sub-shape
|
||||||
@ -77,12 +90,13 @@ Browser.
|
|||||||
\image html find_geom_by_mesh_elem.png
|
\image html find_geom_by_mesh_elem.png
|
||||||
|
|
||||||
\par
|
\par
|
||||||
In this dialog, <b> Element Type </b> defines kind of element to pick in the
|
In this dialog, <b> Element Type </b> defines a kind of element to pick in the
|
||||||
Viewer.
|
Viewer.
|
||||||
Instead of picking an element in the Viewer, you can type its
|
Instead of picking an element in the Viewer, you can type its
|
||||||
ID in <b> Element ID</b> field.
|
ID in <b> Element ID</b> field.
|
||||||
<b> Geometry name </b> field allows defining a name of the sub-shape.
|
<b> Geometry name </b> field allows defining a name of the sub-shape
|
||||||
|
with which the sub-shape will appear in the Object Browser (if not yet
|
||||||
|
there).
|
||||||
|
|
||||||
\par
|
\par
|
||||||
In the Object Browser the structure of the new sub-mesh will be
|
In the Object Browser the structure of the new sub-mesh will be
|
||||||
|
@ -237,7 +237,7 @@ See also \ref filter_double_elements "Double Elements quality control".
|
|||||||
<b>Bad oriented volume</b> selects mesh volumes, which are incorrectly oriented from
|
<b>Bad oriented volume</b> selects mesh volumes, which are incorrectly oriented from
|
||||||
the point of view of MED convention.
|
the point of view of MED convention.
|
||||||
</li><li>
|
</li><li>
|
||||||
<b>Over-constrained volumes</b> selects mesh volumes having only one border shared
|
<b>Over-constrained volumes</b> selects mesh volumes having only one facet shared
|
||||||
with other volumes.
|
with other volumes.
|
||||||
See also \ref over_constrained_volumes_page "Over-constrained volumes quality control".
|
See also \ref over_constrained_volumes_page "Over-constrained volumes quality control".
|
||||||
</li><li>
|
</li><li>
|
||||||
|
@ -3134,11 +3134,14 @@ bool RangeOfIds::SetRangeStr( const TCollection_AsciiString& theStr )
|
|||||||
myIds.Clear();
|
myIds.Clear();
|
||||||
|
|
||||||
TCollection_AsciiString aStr = theStr;
|
TCollection_AsciiString aStr = theStr;
|
||||||
aStr.RemoveAll( ' ' );
|
//aStr.RemoveAll( ' ' );
|
||||||
aStr.RemoveAll( '\t' );
|
//aStr.RemoveAll( '\t' );
|
||||||
|
for ( int i = 1; i <= aStr.Length(); ++i )
|
||||||
|
if ( isspace( aStr.Value( i )))
|
||||||
|
aStr.SetValue( i, ',');
|
||||||
|
|
||||||
for ( int aPos = aStr.Search( ",," ); aPos != -1; aPos = aStr.Search( ",," ) )
|
for ( int aPos = aStr.Search( ",," ); aPos != -1; aPos = aStr.Search( ",," ) )
|
||||||
aStr.Remove( aPos, 2 );
|
aStr.Remove( aPos, 1 );
|
||||||
|
|
||||||
TCollection_AsciiString tmpStr = aStr.Token( ",", 1 );
|
TCollection_AsciiString tmpStr = aStr.Token( ",", 1 );
|
||||||
int i = 1;
|
int i = 1;
|
||||||
|
@ -63,7 +63,7 @@ typedef std::list<TListOfInt> TListOfListOfInt;
|
|||||||
|
|
||||||
class SMESH_EXPORT SMESH_Mesh
|
class SMESH_EXPORT SMESH_Mesh
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SMESH_Mesh(int theLocalId,
|
SMESH_Mesh(int theLocalId,
|
||||||
int theStudyId,
|
int theStudyId,
|
||||||
SMESH_Gen* theGen,
|
SMESH_Gen* theGen,
|
||||||
|
@ -847,7 +847,7 @@ void SMESHGUI_MeshOp::availableHyps( const int theDim,
|
|||||||
theDataList.clear();
|
theDataList.clear();
|
||||||
theHyps.clear();
|
theHyps.clear();
|
||||||
bool isAlgo = ( theHypType == Algo );
|
bool isAlgo = ( theHypType == Algo );
|
||||||
bool isAux = ( theHypType == AddHyp );
|
bool isAux = ( theHypType >= AddHyp );
|
||||||
QStringList aHypTypeNameList = SMESH::GetAvailableHypotheses( isAlgo, theDim, isAux, myIsOnGeometry, !myIsMesh );
|
QStringList aHypTypeNameList = SMESH::GetAvailableHypotheses( isAlgo, theDim, isAux, myIsOnGeometry, !myIsMesh );
|
||||||
|
|
||||||
QStringList::const_iterator anIter;
|
QStringList::const_iterator anIter;
|
||||||
@ -906,7 +906,7 @@ void SMESHGUI_MeshOp::existingHyps( const int theDim,
|
|||||||
else
|
else
|
||||||
aPart = theHypType == Algo ? SMESH::Tag_AlgorithmsRoot : SMESH::Tag_HypothesisRoot;
|
aPart = theHypType == Algo ? SMESH::Tag_AlgorithmsRoot : SMESH::Tag_HypothesisRoot;
|
||||||
|
|
||||||
const bool isAux = ( theHypType == AddHyp );
|
const bool isAux = ( theHypType >= AddHyp );
|
||||||
const bool allHyps = ( !isMesh && theHypType != Algo && theDim > -1);
|
const bool allHyps = ( !isMesh && theHypType != Algo && theDim > -1);
|
||||||
|
|
||||||
if ( theFather->FindSubObject( aPart, aHypRoot ) )
|
if ( theFather->FindSubObject( aPart, aHypRoot ) )
|
||||||
@ -1489,14 +1489,24 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex,
|
|||||||
{
|
{
|
||||||
if ( !isAccessibleDim( dim ))
|
if ( !isAccessibleDim( dim ))
|
||||||
continue;
|
continue;
|
||||||
for ( int dlgType = MainHyp; dlgType < nbDlgHypTypes(dim); dlgType++ )
|
|
||||||
|
// get indices of selected hyps
|
||||||
|
const int nbTypes = nbDlgHypTypes(dim);
|
||||||
|
std::vector<int> hypIndexByType( nbTypes, -1 );
|
||||||
|
for ( int dlgType = MainHyp; dlgType < nbTypes; dlgType++ )
|
||||||
|
{
|
||||||
|
hypIndexByType[ dlgType ] = currentHyp( dim, dlgType );
|
||||||
|
}
|
||||||
|
|
||||||
|
// update hyps
|
||||||
|
for ( int dlgType = MainHyp; dlgType < nbTypes; dlgType++ )
|
||||||
{
|
{
|
||||||
const int type = Min( dlgType, AddHyp );
|
const int type = Min( dlgType, AddHyp );
|
||||||
myAvailableHypData[ dim ][ type ].clear();
|
myAvailableHypData[ dim ][ type ].clear();
|
||||||
QStringList anAvailable, anExisting;
|
QStringList anAvailable, anExisting;
|
||||||
|
|
||||||
HypothesisData* curAlgo = algoByDim[ dim ];
|
HypothesisData* curAlgo = algoByDim[ dim ];
|
||||||
int hypIndex = currentHyp( dim, dlgType );
|
int hypIndex = hypIndexByType[ dlgType ];
|
||||||
|
|
||||||
SMESH::SMESH_Hypothesis_var curHyp;
|
SMESH::SMESH_Hypothesis_var curHyp;
|
||||||
if ( hypIndex >= 0 && hypIndex < myExistingHyps[ dim ][ type ].count() )
|
if ( hypIndex >= 0 && hypIndex < myExistingHyps[ dim ][ type ].count() )
|
||||||
@ -1535,9 +1545,11 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex,
|
|||||||
defaulHypAvlbl = (type == MainHyp && !curAlgo->IsAuxOrNeedHyp );
|
defaulHypAvlbl = (type == MainHyp && !curAlgo->IsAuxOrNeedHyp );
|
||||||
}
|
}
|
||||||
// set list of hypotheses
|
// set list of hypotheses
|
||||||
|
if ( dlgType <= AddHyp )
|
||||||
|
{
|
||||||
myDlg->tab( dim )->setAvailableHyps( type, anAvailable );
|
myDlg->tab( dim )->setAvailableHyps( type, anAvailable );
|
||||||
myDlg->tab( dim )->setExistingHyps( type, anExisting, defaulHypAvlbl );
|
myDlg->tab( dim )->setExistingHyps( type, anExisting, defaulHypAvlbl );
|
||||||
|
}
|
||||||
// set current existing hypothesis
|
// set current existing hypothesis
|
||||||
if ( !curHyp->_is_nil() && !anExisting.isEmpty() )
|
if ( !curHyp->_is_nil() && !anExisting.isEmpty() )
|
||||||
hypIndex = this->find( curHyp, myExistingHyps[ dim ][ type ]);
|
hypIndex = this->find( curHyp, myExistingHyps[ dim ][ type ]);
|
||||||
@ -1552,7 +1564,7 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex,
|
|||||||
!isOptional )
|
!isOptional )
|
||||||
hypIndex = 0;
|
hypIndex = 0;
|
||||||
}
|
}
|
||||||
setCurrentHyp( dim, type, hypIndex );
|
setCurrentHyp( dim, dlgType, hypIndex );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user