From 065cbeda74d2d9e527f57698494a6fd5ec5c7e9f Mon Sep 17 00:00:00 2001 From: mzn Date: Fri, 26 Dec 2008 11:01:09 +0000 Subject: [PATCH] Fix for improvement 0019927 (EDF770 SMESH: Analyzing the Mesh Quality: Orphan nodes). Correspoding documetaion update. --- doc/salome/gui/SMESH/images/free_nodes.png | Bin 0 -> 8524 bytes .../SMESH/input/about_quality_controls.doc | 7 ++- doc/salome/gui/SMESH/input/free_nodes.doc | 16 ++++++ doc/salome/gui/SMESH/input/index.doc | 1 + .../gui/SMESH/input/quality_controls.doc | 1 + .../gui/SMESH/input/tui_quality_controls.doc | 53 ++++++++++++++++++ 6 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 doc/salome/gui/SMESH/images/free_nodes.png create mode 100644 doc/salome/gui/SMESH/input/free_nodes.doc diff --git a/doc/salome/gui/SMESH/images/free_nodes.png b/doc/salome/gui/SMESH/images/free_nodes.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d23c1d371f8724735af9db3606eb570cc4de08 GIT binary patch literal 8524 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 +
  • \ref free_nodes_page "Free nodes"
  • + 1D mesh quality controls:
      diff --git a/doc/salome/gui/SMESH/input/free_nodes.doc b/doc/salome/gui/SMESH/input/free_nodes.doc new file mode 100644 index 000000000..a36ed06ef --- /dev/null +++ b/doc/salome/gui/SMESH/input/free_nodes.doc @@ -0,0 +1,16 @@ +/*! + +\page free_nodes_page Free nodes + +\n This mesh quality control highlights nodes which are not connected +to any mesh element. Free nodes are shown with a color differs from +the color of nodes. + +\image html free_nodes.png +
      In this picture some nodes don't connected to a mesh element as +a result of deleting elements and adding several isolated nodes. + +
      See Also a sample TUI Script of a +\ref tui_free_nodes "Free Nodes quality control" operation. + +*/ \ No newline at end of file diff --git a/doc/salome/gui/SMESH/input/index.doc b/doc/salome/gui/SMESH/input/index.doc index 8cb09dbc4..2eacc896b 100644 --- a/doc/salome/gui/SMESH/input/index.doc +++ b/doc/salome/gui/SMESH/input/index.doc @@ -51,6 +51,7 @@
    • \ref free_borders_page
    • \ref borders_at_multi_connection_page
    • \ref length_page
    • +
    • \ref free_nodes_page
    • \ref free_edges_page
    • \ref length_2d_page
    • \ref borders_at_multi_connection_2d_page
    • diff --git a/doc/salome/gui/SMESH/input/quality_controls.doc b/doc/salome/gui/SMESH/input/quality_controls.doc index 5a36e7bdb..37c8312b1 100644 --- a/doc/salome/gui/SMESH/input/quality_controls.doc +++ b/doc/salome/gui/SMESH/input/quality_controls.doc @@ -7,6 +7,7 @@
    • \subpage free_borders_page
    • \subpage borders_at_multi_connection_page
    • \subpage length_page
    • +
    • \subpage free_nodes_page
    • \subpage free_edges_page
    • \subpage length_2d_page
    • \subpage borders_at_multi_connection_2d_page
    • diff --git a/doc/salome/gui/SMESH/input/tui_quality_controls.doc b/doc/salome/gui/SMESH/input/tui_quality_controls.doc index e1b8b700e..80c5a45a1 100644 --- a/doc/salome/gui/SMESH/input/tui_quality_controls.doc +++ b/doc/salome/gui/SMESH/input/tui_quality_controls.doc @@ -189,6 +189,59 @@ for i in range(len(aBorders)): salome.sg.updateObjBrowser(1) \endcode +
      +\anchor tui_free_nodes +

      Free Nodes

      + +\code +import salome +import geompy + +import smesh + +# create box +box = geompy.MakeBox(0., 0., 0., 100., 200., 300.) +idbox = geompy.addToStudy(box, "box") + +# create a mesh +mesh = smesh.Mesh(box, "Mesh_free_nodes") +algo = mesh.Segment() +algo.NumberOfSegments(10) +algo = mesh.Triangle(smesh.MEFISTO) +algo.MaxElementArea(150.) +mesh.Compute() + +# Remove some elements to obtain free nodes +# Criterion : AREA < 80. +area_margin = 80. + +aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_LessThan, area_margin) + +anIds = mesh.GetIdsFromFilter(aFilter) + +mesh.RemoveElements(anIds) + +# criterion : free nodes +aFilter = smesh.GetFilter(smesh.NODE, smesh.FT_FreeNodes) +anNodeIds = mesh.GetIdsFromFilter(aFilter) + +# create a group +aGroup = mesh.CreateEmptyGroup(smesh.NODE, "Free_nodes") +aGroup.Add(anNodeIds) + +# print the result +print "Criterion: Free nodes Nb = ", len(anNodeIds) +j = 1 +for i in range(len(anNodeIds)): + if j > 20: j = 1; print "" + print anNodeIds[i], + j = j + 1 + pass +print "" + +salome.sg.updateObjBrowser(1) +\endcode +
      \anchor tui_length_2d

      Length 2D

      -- 2.39.2