mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-25 17:00:34 +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
|
||||
|
||||
Sub-mesh is a mesh on a geometrical sub-object created with meshing algorithms
|
||||
and/or hypotheses other than the algorithms and hypotheses assigned to
|
||||
the parent mesh on the parent geometrical object.
|
||||
Sub-mesh is a mesh on a geometrical sub-object (sub-shape) used to assign
|
||||
different meshing algorithms and/or hypotheses than the algorithms and
|
||||
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
|
||||
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.
|
||||
|
||||
\par
|
||||
\anchor subshape_by_mesh_elem
|
||||
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
|
||||
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
|
||||
|
||||
\par
|
||||
In this dialog, <b> Element Type </b> defines kind of element to pick in the
|
||||
Viewer.
|
||||
In this dialog, <b> Element Type </b> defines a kind of element to pick in the
|
||||
Viewer.
|
||||
Instead of picking an element in the Viewer, you can type its
|
||||
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
|
||||
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
|
||||
the point of view of MED convention.
|
||||
</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.
|
||||
See also \ref over_constrained_volumes_page "Over-constrained volumes quality control".
|
||||
</li><li>
|
||||
|
@ -3134,11 +3134,14 @@ bool RangeOfIds::SetRangeStr( const TCollection_AsciiString& theStr )
|
||||
myIds.Clear();
|
||||
|
||||
TCollection_AsciiString aStr = theStr;
|
||||
aStr.RemoveAll( ' ' );
|
||||
aStr.RemoveAll( '\t' );
|
||||
//aStr.RemoveAll( ' ' );
|
||||
//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( ",," ) )
|
||||
aStr.Remove( aPos, 2 );
|
||||
aStr.Remove( aPos, 1 );
|
||||
|
||||
TCollection_AsciiString tmpStr = aStr.Token( ",", 1 );
|
||||
int i = 1;
|
||||
|
@ -63,15 +63,15 @@ typedef std::list<TListOfInt> TListOfListOfInt;
|
||||
|
||||
class SMESH_EXPORT SMESH_Mesh
|
||||
{
|
||||
public:
|
||||
SMESH_Mesh(int theLocalId,
|
||||
int theStudyId,
|
||||
public:
|
||||
SMESH_Mesh(int theLocalId,
|
||||
int theStudyId,
|
||||
SMESH_Gen* theGen,
|
||||
bool theIsEmbeddedMode,
|
||||
SMESHDS_Document* theDocument);
|
||||
|
||||
|
||||
virtual ~SMESH_Mesh();
|
||||
|
||||
|
||||
/*!
|
||||
* \brief Set geometry to be meshed
|
||||
*/
|
||||
|
@ -847,7 +847,7 @@ void SMESHGUI_MeshOp::availableHyps( const int theDim,
|
||||
theDataList.clear();
|
||||
theHyps.clear();
|
||||
bool isAlgo = ( theHypType == Algo );
|
||||
bool isAux = ( theHypType == AddHyp );
|
||||
bool isAux = ( theHypType >= AddHyp );
|
||||
QStringList aHypTypeNameList = SMESH::GetAvailableHypotheses( isAlgo, theDim, isAux, myIsOnGeometry, !myIsMesh );
|
||||
|
||||
QStringList::const_iterator anIter;
|
||||
@ -906,7 +906,7 @@ void SMESHGUI_MeshOp::existingHyps( const int theDim,
|
||||
else
|
||||
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);
|
||||
|
||||
if ( theFather->FindSubObject( aPart, aHypRoot ) )
|
||||
@ -1489,14 +1489,24 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex,
|
||||
{
|
||||
if ( !isAccessibleDim( dim ))
|
||||
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 );
|
||||
myAvailableHypData[ dim ][ type ].clear();
|
||||
QStringList anAvailable, anExisting;
|
||||
|
||||
HypothesisData* curAlgo = algoByDim[ dim ];
|
||||
int hypIndex = currentHyp( dim, dlgType );
|
||||
int hypIndex = hypIndexByType[ dlgType ];
|
||||
|
||||
SMESH::SMESH_Hypothesis_var curHyp;
|
||||
if ( hypIndex >= 0 && hypIndex < myExistingHyps[ dim ][ type ].count() )
|
||||
@ -1535,9 +1545,11 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex,
|
||||
defaulHypAvlbl = (type == MainHyp && !curAlgo->IsAuxOrNeedHyp );
|
||||
}
|
||||
// set list of hypotheses
|
||||
myDlg->tab( dim )->setAvailableHyps( type, anAvailable );
|
||||
myDlg->tab( dim )->setExistingHyps( type, anExisting, defaulHypAvlbl );
|
||||
|
||||
if ( dlgType <= AddHyp )
|
||||
{
|
||||
myDlg->tab( dim )->setAvailableHyps( type, anAvailable );
|
||||
myDlg->tab( dim )->setExistingHyps( type, anExisting, defaulHypAvlbl );
|
||||
}
|
||||
// set current existing hypothesis
|
||||
if ( !curHyp->_is_nil() && !anExisting.isEmpty() )
|
||||
hypIndex = this->find( curHyp, myExistingHyps[ dim ][ type ]);
|
||||
@ -1548,11 +1560,11 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex,
|
||||
CORBA::String_var hypTypeName = myExistingHyps[ dim ][ type ].first().first->GetName();
|
||||
bool isOptional = true;
|
||||
if ( algoByDim[ dim ] &&
|
||||
SMESH::IsAvailableHypothesis( algoByDim[ dim ], hypTypeName.in(), isOptional ) &&
|
||||
!isOptional )
|
||||
SMESH::IsAvailableHypothesis( algoByDim[ dim ], hypTypeName.in(), isOptional ) &&
|
||||
!isOptional )
|
||||
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