mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-24 16:30:34 +05:00
Fix MinDistance for node-group (SALOME_TESTS/Grids/smesh/imps_09/K0)
+ Minor doc improvement
This commit is contained in:
parent
0bbec902ba
commit
98ec6be586
@ -169,14 +169,16 @@ Creating groups
|
||||
Mesh.MakeGroupByCriteria
|
||||
Mesh.MakeGroupByFilter
|
||||
Mesh.FaceGroupsSeparatedByEdges
|
||||
Mesh.CreateDimGroup
|
||||
Mesh.ConvertToStandalone
|
||||
Mesh.GetGroups
|
||||
Mesh.NbGroups
|
||||
Mesh.GetGroupNames
|
||||
Mesh.GetGroupByName
|
||||
|
||||
|
||||
Using operations on groups
|
||||
==========================
|
||||
Operations on groups
|
||||
====================
|
||||
|
||||
.. autosummary::
|
||||
|
||||
@ -186,8 +188,6 @@ Using operations on groups
|
||||
Mesh.IntersectListOfGroups
|
||||
Mesh.CutGroups
|
||||
Mesh.CutListOfGroups
|
||||
Mesh.CreateDimGroup
|
||||
Mesh.ConvertToStandalone
|
||||
|
||||
Deleting Groups
|
||||
===============
|
||||
@ -204,6 +204,8 @@ Mesh Information
|
||||
.. autosummary::
|
||||
|
||||
smeshBuilder.GetMeshInfo
|
||||
Mesh.GetEngine
|
||||
Mesh.GetGeomEngine
|
||||
Mesh.GetGeometryByMeshElement
|
||||
Mesh.MeshDimension
|
||||
Mesh.GetMeshInfo
|
||||
@ -269,6 +271,7 @@ Mesh Information
|
||||
Mesh.FindNodeClosestTo
|
||||
Mesh.FindElementsByPoint
|
||||
Mesh.GetPointState
|
||||
Mesh.Get1DBranches
|
||||
Mesh.Dump
|
||||
|
||||
******************************
|
||||
@ -352,6 +355,7 @@ Adding nodes and elements
|
||||
Mesh.Make2DMeshFrom3D
|
||||
Mesh.MakeBoundaryMesh
|
||||
Mesh.MakeBoundaryElements
|
||||
Mesh.Append
|
||||
Mesh.GetLastCreatedNodes
|
||||
Mesh.GetLastCreatedElems
|
||||
Mesh.ClearLastCreated
|
||||
|
@ -791,7 +791,11 @@ SMESH_GroupBase
|
||||
|
||||
.. py:class:: SMESH_GroupBase
|
||||
|
||||
:doc:`Mesh group <grouping_elements>`
|
||||
:doc:`Mesh group <grouping_elements>`.
|
||||
Base class of :class:`standalone group <SMESH_Group>`,
|
||||
:class:`group on geometry <SMESH_GroupOnGeom>` and
|
||||
:class:`group on filter <SMESH_GroupOnFilter>`.
|
||||
Inherit all methods from :class:`SMESH_IDSource`.
|
||||
|
||||
.. py:function:: SetName( name )
|
||||
|
||||
|
@ -55,7 +55,7 @@ A usual workflow to generate a mesh on geometry is following:
|
||||
netgen.SetMaxSize( 20. )
|
||||
netgen.SetFineness( smeshBuilder.VeryCoarse )
|
||||
|
||||
#. :ref:`compute_anchor` the mesh (generate mesh nodes and elements):
|
||||
#. :ref:`Compute the mesh <compute_anchor>` (generate mesh nodes and elements):
|
||||
.. code-block:: python
|
||||
|
||||
mesh.Compute()
|
||||
@ -66,10 +66,10 @@ GUI and then to get a corresponding Python script via
|
||||
all methods of any object in hand (e.g. a mesh group or a hypothesis)
|
||||
by calling *dir()* Python built-in function.
|
||||
|
||||
All methods of the Mesh Group can be found in :ref:`tui_create_standalone_group` sample script.
|
||||
All methods of the :class:`Mesh Group <SMESH.SMESH_GroupBase>` can be found in :ref:`tui_create_standalone_group` sample script.
|
||||
|
||||
An example below demonstrates usage of the Python API for 3D mesh
|
||||
generation and for retrieving information on mesh nodes and elements.
|
||||
generation and for retrieving basic information on mesh nodes, elements and groups.
|
||||
|
||||
.. _example_3d_mesh:
|
||||
|
||||
|
@ -238,6 +238,7 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
|
||||
void getElementsInBox ( const Bnd_B3d& box, TElemSeq& foundElems );
|
||||
void getElementsInSphere ( const gp_XYZ& center, const double radius, TElemSeq& foundElems );
|
||||
ElementBndBoxTree* getLeafAtPoint( const gp_XYZ& point );
|
||||
int getNbElements();
|
||||
|
||||
protected:
|
||||
ElementBndBoxTree() {}
|
||||
@ -466,6 +467,27 @@ namespace // Utils used in SMESH_ElementSearcherImpl::FindElementsByPoint()
|
||||
return 0;
|
||||
}
|
||||
|
||||
//================================================================================
|
||||
/*!
|
||||
* \brief Return number of elements
|
||||
*/
|
||||
//================================================================================
|
||||
|
||||
int ElementBndBoxTree::getNbElements()
|
||||
{
|
||||
int nb = 0;
|
||||
if ( isLeaf() )
|
||||
{
|
||||
nb = _elements.size();
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < 8; i++)
|
||||
nb += ((ElementBndBoxTree*) myChildren[i])->getNbElements();
|
||||
}
|
||||
return nb;
|
||||
}
|
||||
|
||||
//================================================================================
|
||||
/*!
|
||||
* \brief Construct the element box
|
||||
@ -1302,6 +1324,23 @@ gp_XYZ SMESH_ElementSearcherImpl::Project(const gp_Pnt& point,
|
||||
minDist = d;
|
||||
}
|
||||
}
|
||||
if ( minDist > radius )
|
||||
{
|
||||
ElementBndBoxTree::TElemSeq elems2;
|
||||
ebbTree->getElementsInSphere( p, minDist, elems2 );
|
||||
for ( e = elems2.begin(); e != elems2.end(); ++e )
|
||||
{
|
||||
if ( elems.count( *e ))
|
||||
continue;
|
||||
double d = SMESH_MeshAlgos::GetDistance( *e, point, &proj );
|
||||
if ( d < minDist )
|
||||
{
|
||||
bestProj = proj;
|
||||
elem = *e;
|
||||
minDist = d;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( closestElem ) *closestElem = elem;
|
||||
|
||||
return bestProj;
|
||||
|
@ -154,7 +154,10 @@ namespace
|
||||
if ( !path.SetCutAtCorner( cornerNode, fIt->next(), plnNorm, plnOrig ))
|
||||
continue;
|
||||
|
||||
if ( !myAvoidSet.insert( path.myNode1.Node() ).second ||
|
||||
if ( path.myDot1 == 0 &&
|
||||
!myAvoidSet.insert( path.myNode1.Node() ).second )
|
||||
continue;
|
||||
if ( path.myDot2 == 0 &&
|
||||
!myAvoidSet.insert( path.myNode2.Node() ).second )
|
||||
continue;
|
||||
|
||||
|
@ -4384,7 +4384,8 @@ class Mesh(metaclass = MeshMeta):
|
||||
|
||||
Returns:
|
||||
A list of edge groups and a list of corresponding node groups,
|
||||
where the group is a list of IDs of edges or elements.
|
||||
where the group is a list of IDs of edges or elements, like follows
|
||||
[[[branch_edges_1],[branch_edges_2]], [[branch_nodes_1],[branch_nodes_2]]].
|
||||
If a group is closed, the first and last nodes of the group are same.
|
||||
"""
|
||||
if isinstance( edges, Mesh ):
|
||||
@ -6947,7 +6948,7 @@ class Mesh(metaclass = MeshMeta):
|
||||
|
||||
def GetLength(self, elemId=None):
|
||||
"""
|
||||
Get length of all given 1D elements or sum length of all 1D mesh elements
|
||||
Get length of given 1D elements or of all 1D mesh elements
|
||||
|
||||
Parameters:
|
||||
elemId: either a mesh element ID or a list of IDs or :class:`sub-mesh, group or filter <SMESH.SMESH_IDSource>`. By default sum length of all 1D elements will be calculated.
|
||||
@ -6977,7 +6978,7 @@ class Mesh(metaclass = MeshMeta):
|
||||
|
||||
def GetArea(self, elemId=None):
|
||||
"""
|
||||
Get area of given 2D elements or sum area of all 2D mesh elements
|
||||
Get area of given 2D elements or of all 2D mesh elements
|
||||
|
||||
Parameters:
|
||||
elemId: either a mesh element ID or a list of IDs or :class:`sub-mesh, group or filter <SMESH.SMESH_IDSource>`. By default sum area of all 2D elements will be calculated.
|
||||
@ -7007,7 +7008,7 @@ class Mesh(metaclass = MeshMeta):
|
||||
|
||||
def GetVolume(self, elemId=None):
|
||||
"""
|
||||
Get volume of a 3D element or sum of volumes of all 3D mesh elements
|
||||
Get volume of given 3D elements or of all 3D mesh elements
|
||||
|
||||
Parameters:
|
||||
elemId: either a mesh element ID or a list of IDs or :class:`sub-mesh, group or filter <SMESH.SMESH_IDSource>`. By default sum volume of all 3D elements will be calculated.
|
||||
|
Loading…
Reference in New Issue
Block a user