0021338: EDF 1926 SMESH: New controls and filters

This commit is contained in:
eap 2012-01-26 15:31:11 +00:00
parent 61915a66ed
commit 1ffe72da8d
7 changed files with 107 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -19,6 +19,7 @@ face and volume entity type.
Node quality controls:
<ul>
<li>\subpage free_nodes_page "Free nodes"</li>
<li>\subpage double_nodes_control_page "Double nodes"</li>
</ul>
Edge quality controls:
@ -27,6 +28,7 @@ Edge quality controls:
<li>\subpage free_borders_page "Free borders"</li>
<li>\subpage length_page "Length"</li>
<li>\subpage borders_at_multi_connection_page "Borders at multi-connection"</li>
<li>\subpage double_elements_page "Double edges"</li>
</ul>
Face quality controls:
@ -43,6 +45,7 @@ Face quality controls:
<li>\subpage warping_page "Warping"</li>
<li>\subpage skew_page "Skew"</li>
<li>\subpage max_element_length_2d_page "Element Diameter 2D"</li>
<li>\subpage double_elements_page "Double faces"</li>
</ul>
Volume quality controls:
@ -52,6 +55,7 @@ Volume quality controls:
<li>\subpage max_element_length_3d_page "Element Diameter 3D"</li>
<li>\subpage bare_border_volumes_page "Bare border volumes"</li>
<li>\subpage over_constrained_volumes_page "Over-constrained volumes"</li>
<li>\subpage double_elements_page "Double volumes"</li>
</ul>
To manage the quality controls call pop-up in the VTK viewer and select "Controls" sub-menu

View File

@ -0,0 +1,14 @@
/*!
\page double_elements_page Double edge, Double faces and Double volumes
These mesh quality controls highlight the mesh elements basing on the same set of nodes.
\image html double_faces.png
In this picture some faces are coincident after copying all elements
with translation with subsequent Merge of nodes.
\sa A sample TUI Script of a \ref filter_double_elements "Filters of Double Elements".
*/

View File

@ -0,0 +1,13 @@
/*!
\page double_nodes_control_page Double nodes
This mesh quality control highlights the nodes which are coincident with other nodes (within a given tolerance).
\image html double_nodes.png
In this picture some nodes are coincident after copying all elements with translation.
\sa A sample TUI Script of a \ref tui_double_nodes_control "Double Nodes" filter.
*/

View File

@ -106,12 +106,25 @@ specified arbitrary surface within a given <b>Tolerance</b>.
</li>
</ul>
Additional criteria to select mesh <b>Nodes</b> are the following:
<ul><li>
<b>Free nodes</b> selects nodes belonging to none mesh element.
</li><li>
<b>Double nodes</b> selects node coincident with other nodes
(within a given <b>Tolerance</b>).
See also \ref tui_double_nodes_control "Double Nodes quality control".
</li>
</ul>
Additional criteria to select mesh <b>Edges</b> are the following:
<ul><li>
<b>Free Borders</b> selects free 1D mesh elements, i.e. edges belonging to
one face only. See also a
\ref free_borders_page "Free Borders quality control".
</li><li>
<b>Double edges</b> selects 1D mesh elements basing on the same set of nodes.
See also \ref filter_double_elements "Double Elements quality control".
</li><li>
<b>Borders at Multi-Connections</b> selects edges belonging to several faces.
The number of faces should be more, less or equal (within a given <b>Tolerance</b>)
to the predefined <b>Threshold Value</b>. See also a
@ -156,6 +169,9 @@ one element of mesh only. See also a
</li><li>
<b>Free faces</b> selects 2D mesh elements wich belong to less than two volumes.
</li><li>
<b>Double faces</b> selects 2D mesh elements basing on the same set of nodes.
See also \ref filter_double_elements "Double Elements quality control".
</li><li>
<b>Faces with bare border</b> selects 2D mesh elements having a free border without an edge on it.
See also \ref bare_border_faces_page "Bare border faces quality control".
</li><li>
@ -202,6 +218,9 @@ diagonals with a value of length, which is more, less or equal
(within a given <b>Tolerance</b>) to the predefined <b>Threshold Value</b>. See also a
\ref max_element_length_3d_page "Element Diameter 3D quality control".
</li><li>
<b>Double volumes</b> selects 3D mesh elements basing on the same set of nodes.
See also \ref filter_double_elements "Double Elements quality control".
</li><li>
<b>Bad oriented volume</b> selects mesh volumes, which are incorrectly oriented from
the point of view of MED convention.
</li><li>

View File

@ -318,6 +318,63 @@ print "Over-constrained faces:", ids
\sa \ref tui_over_constrained_faces
\section filter_double_elements Double edges, Double faces, Double volumes
filter mesh elements basing on the same set of nodes:
- element type is either \a smesh.EGDE, \a smesh.FACE or \a smesh.VOLUME
- functor type is either \a smesh.FT_EqualEdges, \a
smesh.FT_EqualFaces or \a smesh.FT_EqualVolumes,
- threshold value is not required
\code
from smesh import *
# make a mesh on a box
box = geompy.MakeBoxDXDYDZ(100,100,100)
mesh = Mesh( box, "Box" )
mesh.Segment().NumberOfSegments(10)
mesh.Quadrangle()
mesh.Hexahedron()
mesh.Compute()
# copy all elements with translation and Merge nodes
mesh.TranslateObject( mesh, MakeDirStruct( 10,0,0), Copy=True )
mesh.MergeNodes( mesh.FindCoincidentNodes(1e-7) )
# create filters to find equal elements
equalEdgesFilter = GetFilter(SMESH.EDGE, FT_EqualEdges)
equalFacesFilter = GetFilter(SMESH.FACE, FT_EqualFaces)
equalVolumesFilter = GetFilter(SMESH.VOLUME, FT_EqualVolumes)
# get equal elements
print "Number of equal edges:", len( mesh.GetIdsFromFilter( equalEdgesFilter ))
print "Number of equal faces:", len( mesh.GetIdsFromFilter( equalFacesFilter ))
print "Number of equal volumes:", len( mesh.GetIdsFromFilter( equalVolumesFilter ))
\endcode
\section tui_double_nodes_control Double nodes
filters mesh nodes which are coincident with other nodes (within a given tolerance):
- element type is \a smesh.NODE
- functor type is \a smesh.FT_EqualNodes
- threshold value is not required
- default tolerance is 1.0e-7
\code
from smesh import *
# make a mesh on a box
box = geompy.MakeBoxDXDYDZ(100,100,100)
mesh = Mesh( box, "Box" )
mesh.Segment().NumberOfSegments(10)
mesh.Quadrangle()
mesh.Hexahedron()
mesh.Compute()
# copy all elements with translation
mesh.TranslateObject( mesh, MakeDirStruct( 10,0,0), Copy=True )
# create filters to find nodes equal within tolerance of 1e-5
filter = GetFilter(SMESH.NODE, FT_EqualNodes, Tolerance=1e-5)
# get equal nodes
print "Number of equal nodes:", len( mesh.GetIdsFromFilter( filter ))
\endcode
\section filter_borders_multiconnection Borders at multi-connection
Filter border 1D mesh elements (edges) according to the specified number of