]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
First stable version after merging with V3_2_2
authorabd <abd@opencascade.com>
Thu, 19 Oct 2006 06:52:32 +0000 (06:52 +0000)
committerabd <abd@opencascade.com>
Thu, 19 Oct 2006 06:52:32 +0000 (06:52 +0000)
154 files changed:
adm_local/unix/make_commence.in
adm_local/unix/make_conclude.in
configure.in.base
doc/salome/PluginMeshers.txt
doc/salome/gui/SMESH/constructing_meshes.htm
doc/salome/gui/SMESH/defining_hypotheses_tui.htm
doc/salome/gui/SMESH/extrusion_along_a_path.htm
doc/salome/gui/SMESH/files/importing_and_exporting_meshes.htm
doc/salome/gui/SMESH/grouping_elements.htm
doc/salome/gui/SMESH/image102.gif [deleted file]
doc/salome/gui/SMESH/image104.gif [deleted file]
doc/salome/gui/SMESH/modifying_meshes.htm
doc/salome/gui/SMESH/pics/circle_angles_after.png [new file with mode: 0644]
doc/salome/gui/SMESH/pics/circle_simple_after.png [new file with mode: 0644]
doc/salome/gui/SMESH/pics/circle_simple_before.png [new file with mode: 0644]
doc/salome/gui/SMESH/pics/curvi_angles_after.png [new file with mode: 0644]
doc/salome/gui/SMESH/pics/curvi_simple_after.png [new file with mode: 0644]
doc/salome/gui/SMESH/pics/curvi_simple_before.png [new file with mode: 0644]
doc/salome/gui/SMESH/pics/edge_wire_3d_after.png [new file with mode: 0644]
doc/salome/gui/SMESH/pics/edge_wire_3d_before.png [new file with mode: 0644]
doc/salome/gui/SMESH/pics/edge_wire_after.png [new file with mode: 0644]
doc/salome/gui/SMESH/pics/edge_wire_before.png [new file with mode: 0644]
doc/salome/gui/SMESH/pics/extrusion1.png [new file with mode: 0644]
doc/salome/gui/SMESH/pics/mesh_for_extr_along_path.png [new file with mode: 0644]
doc/salome/gui/SMESH/pics/straight_after.png [new file with mode: 0644]
doc/salome/gui/SMESH/pics/straight_before.png [new file with mode: 0644]
doc/salome/gui/SMESH/quality_controls.htm
doc/salome/gui/SMESH/smesh.log
doc/salome/gui/SMESH/smesh.py_introduction.htm [new file with mode: 0644]
doc/salome/gui/SMESH/smeshpy_doc/namespacesmesh.html
doc/salome/gui/SMESH/transforming_meshes.htm
doc/salome/gui/SMESH/viewing_meshes.htm
doc/salome/gui/SMESH/whcsh_home.htm
doc/salome/gui/SMESH/whdata/whftdata0.htm
doc/salome/gui/SMESH/whdata/whfts.htm
doc/salome/gui/SMESH/whdata/whfwdata0.htm
doc/salome/gui/SMESH/whdata/whtdata0.htm
doc/salome/gui/SMESH/whfform.htm
doc/salome/gui/SMESH/whgdata/whlstt7.htm
doc/salome/gui/SMESH/whgdata/whlstt9.htm
doc/salome/gui/SMESH/whiform.htm
doc/salome/gui/SMESH/whnjs.htm
doc/salome/gui/SMESH/whres.xml
doc/salome/gui/SMESH/whskin_info.htm
doc/salome/gui/SMESH/whskin_pickup.htm
doc/salome/gui/SMESH/whstart.js
doc/salome/gui/SMESH/whtdhtml.htm
doc/salome/gui/SMESH/whtopic.js
doc/salome/gui/SMESH/whxdata/whftdata0.xml
doc/salome/gui/SMESH/whxdata/whfts.xml
doc/salome/gui/SMESH/whxdata/whfwdata0.xml
doc/salome/gui/SMESH/whxdata/whtdata0.xml
doc/salome/tui/SMESH/sources/static/PluginMeshers.html
idl/SMESH_Filter.idl
idl/SMESH_Gen.idl
idl/SMESH_Mesh.idl
resources/SalomeApp.xml
src/Controls/SMESH_Controls.cxx
src/DriverMED/DriverMED_R_SMESHDS_Mesh.cxx
src/DriverMED/DriverMED_W_SMESHDS_Mesh.cxx
src/DriverUNV/DriverUNV_R_SMDS_Mesh.h
src/MEFISTO2/Rn.h
src/OBJECT/Makefile.in
src/OBJECT/SMESH_Actor.cxx
src/OBJECT/SMESH_ActorUtils.h
src/SMDS/SMDS_MeshElement.hxx
src/SMDS/SMDS_VolumeTool.cxx
src/SMESH/SMESH_Mesh.cxx
src/SMESH/SMESH_MeshEditor.hxx
src/SMESH/SMESH_subMesh.cxx
src/SMESHDS/SMESHDS_Group.hxx
src/SMESHDS/SMESHDS_Mesh.hxx
src/SMESHGUI/SMESHGUI.cxx
src/SMESHGUI/SMESHGUI_AddMeshElementDlg.cxx
src/SMESHGUI/SMESHGUI_AddMeshElementDlg.h
src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx
src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.h
src/SMESHGUI/SMESHGUI_ClippingDlg.cxx
src/SMESHGUI/SMESHGUI_ClippingDlg.h
src/SMESHGUI/SMESHGUI_ConvToQuadOp.cxx
src/SMESHGUI/SMESHGUI_CreatePatternDlg.cxx
src/SMESHGUI/SMESHGUI_CreatePatternDlg.h
src/SMESHGUI/SMESHGUI_CreatePolyhedralVolumeDlg.cxx
src/SMESHGUI/SMESHGUI_CreatePolyhedralVolumeDlg.h
src/SMESHGUI/SMESHGUI_DeleteGroupDlg.cxx
src/SMESHGUI/SMESHGUI_DeleteGroupDlg.h
src/SMESHGUI/SMESHGUI_EditMeshDlg.cxx
src/SMESHGUI/SMESHGUI_EditMeshDlg.h
src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.cxx
src/SMESHGUI/SMESHGUI_ExtrusionAlongPathDlg.h
src/SMESHGUI/SMESHGUI_ExtrusionDlg.cxx
src/SMESHGUI/SMESHGUI_ExtrusionDlg.h
src/SMESHGUI/SMESHGUI_FilterDlg.cxx
src/SMESHGUI/SMESHGUI_FilterDlg.h
src/SMESHGUI/SMESHGUI_FilterLibraryDlg.cxx
src/SMESHGUI/SMESHGUI_FilterLibraryDlg.h
src/SMESHGUI/SMESHGUI_GroupDlg.cxx
src/SMESHGUI/SMESHGUI_GroupDlg.h
src/SMESHGUI/SMESHGUI_GroupOpDlg.cxx
src/SMESHGUI/SMESHGUI_GroupOpDlg.h
src/SMESHGUI/SMESHGUI_MergeNodesDlg.cxx
src/SMESHGUI/SMESHGUI_MergeNodesDlg.h
src/SMESHGUI/SMESHGUI_MeshInfosDlg.cxx
src/SMESHGUI/SMESHGUI_MeshInfosDlg.h
src/SMESHGUI/SMESHGUI_MeshOp.cxx
src/SMESHGUI/SMESHGUI_MeshPatternDlg.cxx
src/SMESHGUI/SMESHGUI_MeshPatternDlg.h
src/SMESHGUI/SMESHGUI_MoveNodesDlg.cxx
src/SMESHGUI/SMESHGUI_MoveNodesDlg.h
src/SMESHGUI/SMESHGUI_MultiEditDlg.cxx
src/SMESHGUI/SMESHGUI_MultiEditDlg.h
src/SMESHGUI/SMESHGUI_NodesDlg.cxx
src/SMESHGUI/SMESHGUI_NodesDlg.h
src/SMESHGUI/SMESHGUI_RemoveElementsDlg.cxx
src/SMESHGUI/SMESHGUI_RemoveElementsDlg.h
src/SMESHGUI/SMESHGUI_RemoveNodesDlg.cxx
src/SMESHGUI/SMESHGUI_RemoveNodesDlg.h
src/SMESHGUI/SMESHGUI_RenumberingDlg.cxx
src/SMESHGUI/SMESHGUI_RenumberingDlg.h
src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx
src/SMESHGUI/SMESHGUI_RevolutionDlg.h
src/SMESHGUI/SMESHGUI_RotationDlg.cxx
src/SMESHGUI/SMESHGUI_RotationDlg.h
src/SMESHGUI/SMESHGUI_SewingDlg.cxx
src/SMESHGUI/SMESHGUI_SewingDlg.h
src/SMESHGUI/SMESHGUI_SingleEditDlg.cxx
src/SMESHGUI/SMESHGUI_SingleEditDlg.h
src/SMESHGUI/SMESHGUI_SmoothingDlg.cxx
src/SMESHGUI/SMESHGUI_SmoothingDlg.h
src/SMESHGUI/SMESHGUI_SpinBox.cxx
src/SMESHGUI/SMESHGUI_SpinBox.h
src/SMESHGUI/SMESHGUI_StandardMeshInfosDlg.cxx
src/SMESHGUI/SMESHGUI_StandardMeshInfosDlg.h
src/SMESHGUI/SMESHGUI_Swig.cxx
src/SMESHGUI/SMESHGUI_Swig.i
src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx
src/SMESHGUI/SMESHGUI_SymmetryDlg.h
src/SMESHGUI/SMESHGUI_TranslationDlg.cxx
src/SMESHGUI/SMESHGUI_TranslationDlg.h
src/SMESHGUI/SMESHGUI_TransparencyDlg.cxx
src/SMESHGUI/SMESHGUI_TransparencyDlg.h
src/SMESHGUI/SMESH_icons.po
src/SMESHGUI/SMESH_images.po
src/SMESHGUI/SMESH_msg_en.po
src/SMESH_I/SMESH_Gen_i.cxx
src/SMESH_I/SMESH_MEDMesh_i.hxx
src/SMESH_I/SMESH_MeshEditor_i.cxx
src/SMESH_I/SMESH_Pattern_i.cxx
src/SMESH_SWIG/Makefile.in
src/StdMeshers/StdMeshers_Distribution.cxx
src/StdMeshers/StdMeshers_NumberOfSegments.cxx
src/StdMeshers/StdMeshers_Regular_1D.cxx
src/StdMeshersGUI/StdMeshersGUI_DistrPreview.cxx
src/StdMeshers_I/Makefile.in

index 71df450535eca5a9cea89302ac0b005bf8e9f910..0be66a96fb85c1e9b7c11ba350e90d34b8c3e31c 100644 (file)
@@ -1,6 +1,8 @@
 # common directories to put headerfiles
 inc_builddir=$(top_builddir)/include/salome
 
+MODULE_NAME=@MODULE_NAME@
+
 @SET_MAKE@
 SHELL=/bin/sh
 
index 37c65077f50d3343f86ce031312d98616ac43172..554b8afb0c1b84af31d42a2a07f72f2eec228fa9 100644 (file)
@@ -131,7 +131,7 @@ $(DEST_HEADERS): $(inc_builddir)/%: %
        cp -f $< $@
 
 # build resources file (icons and messages) : .qm file from .po file
-resources: $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm)
+resources: $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/$(MODULE_NAME)/%.qm)
 
 # Make installation directories if they don't exist.
 $(libdir) $(includedir) $(bindir) $(datadir) $(idldir) $(sharedpydir):
@@ -187,10 +187,10 @@ $(EXPORT_SHAREDPYSCRIPTS:%=install-%): install-%: %
 
 # generic rule to install .qm files :
 install-qm: resources
-       $(INSTALL) -d $(datadir)/resources
-       @for f in X $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm); do \
+       $(INSTALL) -d $(datadir)/resources/$(MODULE_NAME)
+       @for f in X $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/$(MODULE_NAME)/%.qm); do \
           if test $$f != X; then                                                        \
-            ($(INSTALL_DATA) $$f $(datadir)/resources/. || exit 1);                     \
+            ($(INSTALL_DATA) $$f $(datadir)/resources/$(MODULE_NAME)/. || exit 1);                      \
           fi;                                                                           \
        done
 
@@ -234,7 +234,7 @@ uninstall:
 # Uninstall qm files
        @for f in X $(PO_FILES:%.po=%.qm); do         \
           if test $$f != X; then                                             \
-            $(LT_UNINSTALL) $(datadir)/resources/$$f ;                       \
+            $(LT_UNINSTALL) $(datadir)/resources/$(MODULE_NAME)/$$f ;                        \
           fi;                                                                \
        done
 
@@ -279,7 +279,7 @@ clean: mostlyclean
 #
 distclean: clean
        #remove qm file !
-       -$(RM) $(PO_FILES:%.po=%.qm) $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/%.qm)
+       -$(RM) $(PO_FILES:%.po=%.qm) $(PO_FILES:%.po=$(top_builddir)/share/salome/resources/$(MODULE_NAME)/%.qm)
        #remove include files
        -$(RM) $(DEST_HEADERS)
        -$(RM) $(DISTCLEAN) *.bak *.old *.new .dep*
@@ -326,7 +326,7 @@ distclean: clean
 %_wrap.cxx : %.i
        $(SWIG) $(SWIG_FLAGS) -o $@ $<
 
-$(top_builddir)/share/salome/resources/%.qm: %.po
+$(top_builddir)/share/salome/resources/$(MODULE_NAME)/%.qm: %.po
                $(MSG2QM) $< $@ ; \
 
 #------------------------------------------------------------------------------
index cc915a12021b74f44c979944be2710ccc8f9baf4..92cad35ecd9c697bb55ef45f309945025163e2da 100644 (file)
@@ -22,11 +22,15 @@ AC_CANONICAL_HOST
 PACKAGE=salome
 AC_SUBST(PACKAGE)
 
-VERSION=3.2.0
-XVERSION=0x030200
+VERSION=3.2.2
+XVERSION=0x030202
 AC_SUBST(VERSION)
 AC_SUBST(XVERSION)
 
+# set up MODULE_NAME variable for dynamic construction of directories (resources, etc.)
+MODULE_NAME=smesh
+AC_SUBST(MODULE_NAME)
+
 dnl
 dnl Initialize source and build root directories
 dnl
@@ -350,7 +354,7 @@ else
 fi
 
 # make other build directories
-for rep in salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources idl
+for rep in salome_adm adm_local doc bin/salome include/salome lib${LIB_LOCATION_SUFFIX}/salome share/salome/resources/${MODULE_NAME} idl
 do
 #   if test ! -d $rep ; then
 #      eval mkdir $rep
index 61bb0842be1cfa0abbb92d8b2a9d491b3f33cf3c..802f096effcfc208783435917e1006efef01d8a3 100644 (file)
         
         The SALOME automatically locates XML files, searching them in the following directories:
 
-         ${<PLUGINNAME>_ROOT_DIR}/share/salome/resources
+         ${<PLUGINNAME>_ROOT_DIR}/share/salome/resources/<plugin>
          ${SALOME_<PluginName>Resources}
          ${HOME}/.salome/resources
-         ${KERNEL_ROOT_DIR}/share/salome/resources
+         ${KERNEL_ROOT_DIR}/share/salome/resources/kernel
 
         where <PluginName> is a name of each mesher plugin package
 
         4.2.2. Define environment variable SALOME_<MyResourceKey>Resources to point to the 
                directory where resources are situated.
 
-               Example: setenv SALOME_StdMeshersResources ${SMESH_ROOT_DIR}/share/salome/resources
+               Example: setenv SALOME_StdMeshersResources ${SMESH_ROOT_DIR}/share/salome/resources/smesh
 
    4.3. Implement your Hypothesis Creator and being exported method
 
index 90d82bffcd58acfd3ff2959cb461aba9ed92c21c..a643f436f5807f11ea580dee480bc93a5d4e10fd 100755 (executable)
@@ -7,11 +7,13 @@
 <meta http-equiv="content-type" content="text/html; charset=windows-1252">
 <meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style type="text/css">
 <!--
-p.whs1 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
-p.whs2 { margin-top:0pt; margin-bottom:0pt; }
-p.whs3 { font-family:'Lucida Console' , monospace; margin-top:0px; margin-bottom:0px; }
-p.whs4 { margin-top:0px; margin-bottom:0px; }
+p.whs1 { margin-top:0pt; margin-bottom:0pt; }
+p.whs2 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
+p.whs4 { font-family:'Lucida Console' , monospace; margin-top:0px; margin-bottom:0px; }
 p.whs5 { margin-top:0px; margin-bottom:0px; font-family:'Times New Roman' , serif; }
+p.whs6 { margin-top:0px; margin-bottom:0px; }
+p.whs7 { margin-top:0px; margin-bottom:0px; font-family:'Lucida Console' , monospace; }
 -->
 </style><script type="text/javascript" language="JavaScript">
 <!--
@@ -23,6 +25,8 @@ if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
   strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
   strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";
   strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";
+  strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
+  strNSS += "p.whs7 {margin-top:1pt;margin-bottom:1pt; }";
   strNSS +="</style>";
   document.write(strNSS);
 }
@@ -89,638 +93,350 @@ if (window.writeIntopicBar)
 </script>
 <h1>Creating Meshes</h1>
 
-<h3><a name=bookmark>Construction of a Mesh</a></h3>
-
-<p class="whs1">import salome</p>
-
-<p class="whs1">import geompy</p>
+<p class="whs1">First of all see <a href="smesh.py_introduction.htm">Example 
+ of 3d mesh generation</a>, which is an example of good python script style 
+ for Mesh module. </p>
 
-<p class="whs1">import StdMeshers</p>
+<p class="whs1">Other examples of python 
+ scripts will be also updated soon to use smesh package instead of direct 
+ usage of idl interface. </p>
 
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
- &quot;SMESH&quot;)</p>
+<h3><a name=bookmark>Construction of a Mesh</a></h3>
 
-<p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import 
+ geompy</span></p>
 
-<p class="whs1">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs2">import smesh</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"># create a box</p>
+<p class="whs3"># create a box</p>
 
-<p class="whs1">box = geompy.MakeBox(0., 
+<p class="whs2">box = geompy.MakeBox(0., 
  0., 0., 100., 200., 300.)</p>
 
-<p class="whs2">&nbsp;</p>
-
-<p class="whs2"># add box to the study</p>
-
-<p class="whs1">idbox = geompy.addToStudy(box, 
+<p class="whs2">idbox = geompy.addToStudy(box, 
  &quot;box&quot;)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"># create a hypothesis</p>
-
-<p class="whs1">print &quot;-------------------------- 
- create Hypothesis&quot;</p>
-
-<p class="whs1">print &quot;-------------------------- 
- NumberOfSegments&quot;</p>
-
-<p class="whs1">numberOfSegments 
- = 7</p>
-
-<p class="whs1">hypNbSeg = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs1">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>
-
-<p class="whs1">print hypNbSeg.GetName()</p>
-
-<p class="whs1">print hypNbSeg.GetId()</p>
-
-<p class="whs1">print hypNbSeg.GetNumberOfSegments()</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(hypNbSeg), 
- &quot;NumberOfSegments_10&quot;)</p>
-
-<p class="whs1">print &quot;-------------------------- 
- MaxElementArea&quot;</p>
-
-<p class="whs1">maxElementArea = 
- 800</p>
-
-<p class="whs1">hypArea = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs1">hypArea.SetMaxElementArea(maxElementArea)</p>
+<p class="whs3"># create a mesh</p>
 
-<p class="whs1">print hypArea.GetName()</p>
-
-<p class="whs1">print hypArea.GetId()</p>
-
-<p class="whs1">print hypArea.GetMaxElementArea()</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(hypArea), 
- &quot;MaxElementArea_500&quot;)</p>
-
-<p class="whs1">print &quot;-------------------------- 
- MaxElementVolume&quot;</p>
-
-<p class="whs1">maxElementVolume 
- = 900</p>
-
-<p class="whs1">hypVolume = smesh.CreateHypothesis(&quot;MaxElementVolume&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs1">hypVolume.SetMaxElementVolume(maxElementVolume)</p>
-
-<p class="whs1">print hypVolume.GetName()</p>
-
-<p class="whs1">print hypVolume.GetId()</p>
-
-<p class="whs1">print hypVolume.GetMaxElementVolume()</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(hypVolume), 
- &quot;MaxElementVolume_500&quot;)</p>
+<p class="whs2">tetra = smesh.Mesh(box, 
+ &quot;MeshBox&quot;)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"># create algorithms</p>
-
-<p class="whs1">print &quot;-------------------------- 
- create Algorithms&quot;</p>
-
-<p class="whs1">print &quot;-------------------------- 
- Regular_1D&quot;</p>
-
-<p class="whs1">regular1D = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs2">algo1D = tetra.Segment()</p>
 
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(regular1D), 
- &quot;Wire Discretisation&quot;)</p>
+<p class="whs2">algo1D.NumberOfSegments(7)</p>
 
-<p class="whs1">print &quot;-------------------------- 
- MEFISTO_2D&quot;</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs1">mefisto2D = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs2">algo2D = tetra.Triangle()</p>
 
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(mefisto2D), 
- &quot;MEFISTO_2D&quot;)</p>
+<p class="whs2">algo2D.MaxElementArea(800.)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"># initialize a mesh with 
- the box</p>
-
-<p class="whs1">mesh = smesh.CreateMesh(box)</p>
+<p class="whs2">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>
 
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(mesh), 
- &quot;MeshBox&quot;)</p>
+<p class="whs2">algo3D.MaxElementVolume(900.)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"># add the hypothesis to 
- the box</p>
+<p class="whs3"># compute the mesh</p>
 
-<p class="whs1">print &quot;-------------------------- 
- add hypothesis to the box&quot;</p>
+<p class="whs2">ret = tetra.Compute()</p>
 
-<p class="whs1">mesh.AddHypothesis(box,hypNbSeg)</p>
+<p class="whs2">if ret == 0:</p>
 
-<p class="whs1">mesh.AddHypothesis(box,hypArea)</p>
+<p class="whs2">&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;problem when computing the mesh&quot;</p>
 
-<p class="whs1">mesh.AddHypothesis(box,hypVolume)</p>
+<p class="whs2">else:</p>
 
-<p class="whs1">mesh.AddHypothesis(box,regular1D)</p>
+<p class="whs2">&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;mesh computed&quot;</p>
 
-<p class="whs1">mesh.AddHypothesis(box,mefisto2D)</p>
+<p class="whs2">&nbsp;&nbsp;&nbsp;&nbsp;pass 
+ </p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"># compute the mesh</p>
-
-<p class="whs1">print &quot;-------------------------- 
- compute the mesh of the box&quot;</p>
-
-<p class="whs1">ret = smesh.Compute(mesh,box)</p>
-
-<p class="whs1">print ret</p>
-
-<p class="whs1">if ret == 0:</p>
-
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;probleme when computing the mesh&quot;</p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)</p>
-
-<p class="whs1">&nbsp;</p>
+<p class="whs2">&nbsp;</p>
 
 <h3><a name=bookmark1>Construction of a Submesh</a></h3>
 
-<p class="whs3">&nbsp;</p>
-
-<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">from 
+<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">from 
  geompy import *</span></p>
 
-<p class="whs3">import smesh</p>
+<p class="whs4">import smesh</p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs4"># create vertices</p>
-
-<p class="whs3">Point111 = MakeVertex( 0, &nbsp;0, 
- &nbsp;0)</p>
-
-<p class="whs3">Point211 = MakeVertex(10, &nbsp;0, 
- &nbsp;0)</p>
+<p class="whs5"># create a box</p>
 
-<p class="whs3">Point121 = MakeVertex( 0, 10, &nbsp;0)</p>
+<p class="whs4">box = MakeBoxDXDYDZ(10., 10., 10.)</p>
 
-<p class="whs3">Point221 = MakeVertex(10, 10, &nbsp;0)</p>
-
-<p class="whs3">Point112 = MakeVertex( 0, &nbsp;0, 
- 10)</p>
-
-<p class="whs3">Point212 = MakeVertex(10, &nbsp;0, 
- 10)</p>
-
-<p class="whs3">Point122 = MakeVertex( 0, 10, 10)</p>
-
-<p class="whs3">Point222 = MakeVertex(10, 10, 10)</p>
+<p class="whs4">addToStudy(box, &quot;Box&quot;)</p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs4"># create edges</p>
-
-<p class="whs3">EdgeX111 = MakeEdge(Point111, Point211)</p>
-
-<p class="whs3">EdgeX121 = MakeEdge(Point121, Point221)</p>
-
-<p class="whs3">EdgeX112 = MakeEdge(Point112, Point212)</p>
-
-<p class="whs3">EdgeX122 = MakeEdge(Point122, Point222)</p>
-
-<p class="whs3">EdgeY11 = MakeEdge(Point111, Point121)</p>
+<p class="whs5"># select one edge of 
+ the box for definition of a local hypothesis</p>
 
-<p class="whs3">EdgeY21 = MakeEdge(Point211, Point221)</p>
+<p class="whs4">p5 = MakeVertex(5., 0., 0.)</p>
 
-<p class="whs3">EdgeY12 = MakeEdge(Point112, Point122)</p>
+<p class="whs4">EdgeX = GetEdgeNearPoint(box, p5)</p>
 
-<p class="whs3">EdgeY22 = MakeEdge(Point212, Point222)</p>
-
-<p class="whs3">EdgeZ111 = MakeEdge(Point111, Point112)</p>
-
-<p class="whs3">EdgeZ211 = MakeEdge(Point211, Point212)</p>
-
-<p class="whs3">EdgeZ121 = MakeEdge(Point121, Point122)</p>
-
-<p class="whs3">EdgeZ221 = MakeEdge(Point221, Point222)</p>
+<p class="whs4">addToStudyInFather(box, EdgeX, &quot;Edge 
+ [0,0,0 - 10,0,0]&quot;)</p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs4"># create faces</p>
-
-<p class="whs3">FaceX11 = MakeQuad(EdgeY11, EdgeZ111, 
- EdgeY12, EdgeZ121)</p>
+<p class="whs5"># create a hexahedral 
+ mesh on the box</p>
 
-<p class="whs3">FaceX21 = MakeQuad(EdgeY21, EdgeZ211, 
- EdgeY22, EdgeZ221)</p>
-
-<p class="whs3">FaceY111 = MakeQuad(EdgeX111, EdgeZ111, 
- EdgeX112, EdgeZ211)</p>
-
-<p class="whs3">FaceY121 = MakeQuad(EdgeX121, EdgeZ121, 
- EdgeX122, EdgeZ221)</p>
-
-<p class="whs3">FaceZ11 = MakeQuad(EdgeX111, EdgeY11, 
- EdgeX121, EdgeY21)</p>
-
-<p class="whs3">FaceZ12 = MakeQuad(EdgeX112, EdgeY12, 
- EdgeX122, EdgeY22)</p>
+<p class="whs4">quadra = smesh.Mesh(box, &quot;Box : quadrangle 
+ 2D mesh&quot;)</p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs4"># create a solid</p>
+<p class="whs5"># create a regular 
+ 1D algorithm for the faces</p>
 
-<p class="whs3">Block = MakeHexa(FaceX11, FaceX21, FaceY111, 
- FaceY121, FaceZ11, FaceZ12)</p>
+<p class="whs4">algo1D = quadra.Segment()</p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs4"># create a compound</p>
+<p class="whs5"># define &quot;NumberOfSegments&quot; 
+ hypothesis to cut</p>
 
-<p class="whs3">box = MakeCompound([Block])</p>
+<p class="whs5"># all the edges in 
+ a fixed number of segments</p>
 
-<p class="whs4">&nbsp;</p>
-
-<p class="whs4"># add in the study</p>
-
-<p class="whs3">box_id = addToStudy(box, &quot;Box compound&quot;)</p>
+<p class="whs4">algo1D.NumberOfSegments(4)</p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs4"># create hexahedral mesh 
- on the box</p>
-
-<p class="whs3">hexa = smesh.Mesh(box, &quot;Box compound 
- : hexahedrical mesh&quot;)</p>
+<p class="whs5"># create a quadrangle 
+ 2D algorithm for the faces</p>
 
-<p class="whs3">algo = hexa.Segment()</p>
+<p class="whs4">quadra.Quadrangle()</p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs4"># define &quot;NumberOfSegments&quot; 
hypothesis to cut the edge in a fixed number of segments</p>
+<p class="whs5"># construct a submesh 
on the edge with a local hypothesis</p>
 
-<p class="whs3">algo.NumberOfSegments(4)</p>
+<p class="whs4">algo_local = quadra.Segment(EdgeX)</p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs4"># creates a quadrangle 
- 2D algorithm for the faces</p>
+<p class="whs5"># define &quot;Arithmetic1D&quot; 
+ hypothesis to cut the edge<span style="margin-top: 0px;
+                                                                               margin-bottom: 0px;
+                                                                               font-family: 'Times New Roman', serif;"> 
+ in several segments with increasing arithmetic length</span></p>
 
-<p class="whs3">hexa.Quadrangle()</p>
+<p class="whs4">algo_local.Arithmetic1D(1, 4)</p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs4"># construct a submesh with 
a local hypothesis</p>
+<p class="whs5"># define &quot;Propagation&quot; 
hypothesis that propagates all other hypotheses</p>
 
-<p class="whs3">algo = hexa.Segment(EdgeX111)</p>
+<p class="whs5"># on all edges of the 
+ opposite side in case of quadrangular faces</p>
 
-<p class="whs4">&nbsp;</p>
-
-<p class="whs4"># define &quot;Arithmetic1D&quot; 
- hypothesis to cut an edge in several segments with increasing arithmetic 
- length </p>
-
-<p class="whs3">algo.Arithmetic1D(1, 4)</p>
+<p class="whs4">algo_local.Propagation()</p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs4"># define &quot;Propagation&quot; 
- hypothesis that propagates all other hypothesis on all edges on the opposite 
- side in case of quadrangular faces</p>
+<p class="whs5"># compute the mesh</p>
 
-<p class="whs3">algo.Propagation()</p>
+<p class="whs4">quadra.Compute() </p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs4"># compute the mesh</p>
-
-<p class="whs3">hexa.Compute() </p>
-
-<p class="whs3">&nbsp;</p>
-
 <h3><a name=bookmark2>Editing of a mesh</a></h3>
 
-<p class="whs3">&nbsp;</p>
-
-<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import 
- salome</span></p>
-
-<p class="whs3">import geompy</p>
-
-<p class="whs3">import SMESH</p>
+<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import 
+ geompy</span></p>
 
-<p class="whs3">import StdMeshers</p>
+<p class="whs4">import smesh</p>
 
-<p class="whs3">&nbsp;</p>
-
-<p class="whs3">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
- &quot;SMESH&quot;)</p>
+<p class="whs4">&nbsp;</p>
 
-<p class="whs3">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs4">def PrintMeshInfo(theMesh):</p>
 
-<p class="whs3">&nbsp;</p>
+<p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;aMesh 
+ = theMesh.GetMesh()</p>
 
-<p class="whs3">box &nbsp;&nbsp;= 
geompy.MakeBox(0., 0., 0., 20., 20., 20.)</p>
+<p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;print 
&quot;Information about mesh:&quot;</p>
 
-<p class="whs3">idbox = geompy.addToStudy(box, &quot;box&quot;)</p>
+<p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;Number of nodes &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 
+ &quot;, aMesh.NbNodes()</p>
 
-<p class="whs3">&nbsp;</p>
+<p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;Number of edges &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 
+ &quot;, aMesh.NbEdges()</p>
 
-<p class="whs3">subShapeList = geompy.SubShapeAll(box, 
- geompy.ShapeType[&quot;EDGE&quot;])</p>
+<p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;Number of faces &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 
+ &quot;, aMesh.NbFaces()</p>
 
-<p class="whs3">edge &nbsp;&nbsp;= 
- subShapeList[0]</p>
+<p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;Number of volumes &nbsp;&nbsp;&nbsp;&nbsp;: 
+ &quot;, aMesh.NbVolumes()</p>
 
-<p class="whs3">name &nbsp;&nbsp;= 
- geompy.SubShapeName(edge, box)</p>
+<p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;pass</p>
 
-<p class="whs3">idedge = geompy.addToStudyInFather(box, 
- edge, name)</p>
+<p class="whs4">&nbsp;</p>
 
-<p class="whs3">&nbsp;</p>
+<p class="whs5"># create a box</p>
 
-<p class="whs3">box &nbsp;= 
salome.IDToObject(idbox)</p>
+<p class="whs4">box = geompy.MakeBox(0., 0., 0., 20., 
20., 20.)</p>
 
-<p class="whs3">edge = salome.IDToObject(idedge)</p>
+<p class="whs4">geompy.addToStudy(box, &quot;box&quot;)</p>
 
-<p class="whs3">&nbsp;</p>
+<p class="whs4">&nbsp;</p>
 
-<p class="whs3">hyp1 = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
&quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs5"># select one edge of 
the box for definition of a local hypothesis</p>
 
-<p class="whs3">hyp1.SetNumberOfSegments(3)</p>
+<p class="whs4">subShapeList = geompy.SubShapeAll(box, 
+ geompy.ShapeType[&quot;EDGE&quot;])</p>
 
-<p class="whs3">hyp2 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs4">edge = subShapeList[0]</p>
 
-<p class="whs3">hyp2.SetMaxElementArea(10)</p>
+<p class="whs4">name = geompy.SubShapeName(edge, box)</p>
 
-<p class="whs3">hyp3 = smesh.CreateHypothesis(&quot;Arithmetic1D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs4">geompy.addToStudyInFather(box, edge, name)</p>
 
-<p class="whs3">hyp3.SetLength(1,1)</p>
+<p class="whs4">&nbsp;</p>
 
-<p class="whs3">hyp3.SetLength(6,0)</p>
+<p class="whs5"># create a mesh</p>
 
-<p class="whs3">hyp4 = smesh.CreateHypothesis(&quot;Propagation&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs4">tria = smesh.Mesh(box, &quot;Mesh 2D&quot;)</p>
 
-<p class="whs3">&nbsp;</p>
+<p class="whs4">algo1D = tria.Segment()</p>
 
-<p class="whs3">algo1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs4">hyp1 = algo1D.NumberOfSegments(3)</p>
 
-<p class="whs3">algo2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs4">algo2D = tria.Triangle()</p>
 
-<p class="whs3">&nbsp;</p>
+<p class="whs4">hyp2 = algo2D.MaxElementArea(10.)</p>
 
-<p class="whs3">mesh = smesh.CreateMesh(box)</p>
+<p class="whs4">&nbsp;</p>
 
-<p class="whs3">mesh.AddHypothesis(box,hyp1)</p>
+<p class="whs5"># create a sub-mesh</p>
 
-<p class="whs3">mesh.AddHypothesis(box,hyp2)</p>
+<p class="whs4">algo_local = tria.Segment(edge)</p>
 
-<p class="whs3">mesh.AddHypothesis(box,algo1)</p>
+<p class="whs4">hyp3 = algo_local.Arithmetic1D(1, 6)</p>
 
-<p class="whs3">mesh.AddHypothesis(box,algo2)</p>
+<p class="whs4">hyp4 = algo_local.Propagation()</p>
 
-<p class="whs3">mesh.AddHypothesis(edge,hyp3)</p>
+<p class="whs4">&nbsp;</p>
 
-<p class="whs3">mesh.AddHypothesis(edge,hyp4)</p>
+<p class="whs5"># compute the mesh</p>
 
-<p class="whs3">mesh.AddHypothesis(edge,algo1)</p>
+<p class="whs4">tria.Compute()</p>
 
-<p class="whs3">&nbsp;</p>
+<p class="whs4">PrintMeshInfo(tria)</p>
 
-<p class="whs3">smesh.Compute(mesh,box)</p>
+<p class="whs4">&nbsp;</p>
 
-<p class="whs3">salome.sg.updateObjBrowser(1)</p>
+<p class="whs5"># remove a local hypothesis</p>
 
-<p class="whs3">&nbsp;</p>
+<p class="whs4">mesh = tria.GetMesh()</p>
 
-<p class="whs5"># remove a hypothesis</p>
+<p class="whs4">mesh.RemoveHypothesis(edge, hyp4)</p>
 
-<p class="whs3">mesh.RemoveHypothesis(edge,hyp4)</p>
+<p class="whs4">&nbsp;</p>
 
-<p class="whs3">&nbsp;</p>
+<p class="whs5"># compute the mesh</p>
 
-<p class="whs3">smesh.Compute(mesh,box)</p>
+<p class="whs4">tria.Compute()</p>
 
-<p class="whs3">salome.sg.updateObjBrowser(1)</p>
+<p class="whs4">PrintMeshInfo(tria)</p>
 
-<p class="whs3">&nbsp;</p>
+<p class="whs4">&nbsp;</p>
 
 <p class="whs5"># change the value 
- of the hypothesis</p>
-
-<p class="whs3">hyp2.SetMaxElementArea(2)</p>
-
-<p class="whs3">mesh.AddHypothesis(box,hyp2)</p>
+ of the 2D hypothesis</p>
 
-<p class="whs3">&nbsp;</p>
-
-<p class="whs3">smesh.Compute(mesh,box)</p>
-
-<p class="whs3">salome.sg.updateObjBrowser(1) </p>
+<p class="whs4">hyp2.SetMaxElementArea(2.)</p>
 
 <p class="whs4">&nbsp;</p>
 
-<h3><a name=bookmark3>Export of a Mesh</a></h3>
-
-<p class="whs4">&nbsp;</p>
+<p class="whs5"># compute the mesh</p>
 
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import 
- salome</span></p>
+<p class="whs4">tria.Compute()</p>
 
-<p class="whs1">import geompy</p>
+<p class="whs4">PrintMeshInfo(tria) </p>
 
-<p class="whs1">import StdMeshers</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
- &quot;SMESH&quot;)</p>
+<h3><a name=bookmark3>Export of a Mesh</a></h3>
 
-<p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>
+<p class="whs7">import geompy</p>
 
-<p class="whs1">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs7">import smesh</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs2"># create a box</p>
+<p class="whs6"># create a box</p>
 
-<p class="whs1">box = geompy.MakeBox(0., 
+<p class="whs7">box = geompy.MakeBox(0., 
  0., 0., 100., 200., 300.)</p>
 
-<p class="whs2">&nbsp;</p>
-
-<p class="whs2"># add the box to the study</p>
-
-<p class="whs1">idbox = geompy.addToStudy(box, 
+<p class="whs7">idbox = geompy.addToStudy(box, 
  &quot;box&quot;)</p>
 
-<p class="whs2">&nbsp;</p>
-
-<p class="whs2"># create a hypothesis</p>
-
-<p class="whs1">print &quot;-------------------------- 
- create Hypothesis&quot;</p>
-
-<p class="whs1">print &quot;-------------------------- 
- NumberOfSegments&quot;</p>
-
-<p class="whs1">numberOfSegments 
- = 7</p>
-
-<p class="whs1">hypNbSeg = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs1">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>
-
-<p class="whs1">print hypNbSeg.GetName()</p>
-
-<p class="whs1">print hypNbSeg.GetId()</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs1">print hypNbSeg.GetNumberOfSegments()</p>
+<p class="whs6"># create a mesh</p>
 
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(hypNbSeg), 
- &quot;NumberOfSegments_10&quot;)</p>
-
-<p class="whs1">print &quot;-------------------------- 
- MaxElementArea&quot;</p>
-
-<p class="whs1">maxElementArea = 
- 800</p>
-
-<p class="whs1">hypArea = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs1">hypArea.SetMaxElementArea(maxElementArea)</p>
-
-<p class="whs1">print hypArea.GetName()</p>
-
-<p class="whs1">print hypArea.GetId()</p>
-
-<p class="whs1">print hypArea.GetMaxElementArea()</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(hypArea), 
- &quot;MaxElementArea_500&quot;)</p>
-
-<p class="whs1">print &quot;-------------------------- 
- MaxElementVolume&quot;</p>
-
-<p class="whs1">maxElementVolume 
- = 900</p>
-
-<p class="whs1">hypVolume = smesh.CreateHypothesis(&quot;MaxElementVolume&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs1">hypVolume.SetMaxElementVolume(maxElementVolume)</p>
-
-<p class="whs1">print hypVolume.GetName()</p>
-
-<p class="whs1">print hypVolume.GetId()</p>
-
-<p class="whs1">print hypVolume.GetMaxElementVolume()</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(hypVolume), 
- &quot;MaxElementVolume_500&quot;)</p>
-
-<p class="whs2">&nbsp;</p>
-
-<p class="whs2"># create algorithms</p>
-
-<p class="whs1">print &quot;-------------------------- 
- create Algorithms&quot;</p>
-
-<p class="whs1">print &quot;-------------------------- 
- Regular_1D&quot;</p>
-
-<p class="whs1">regular1D = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(regular1D), 
- &quot;Wire Discretisation&quot;)</p>
-
-<p class="whs1">print &quot;-------------------------- 
- MEFISTO_2D&quot;</p>
-
-<p class="whs1">mefisto2D = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(mefisto2D), 
- &quot;MEFISTO_2D&quot;)</p>
-
-<p class="whs2">&nbsp;</p>
-
-<p class="whs2"># initialize a mesh with 
- the box</p>
-
-<p class="whs1">mesh = smesh.CreateMesh(box)</p>
-
-<p class="whs1">smeshgui.SetName(salome.ObjectToID(mesh), 
+<p class="whs7">tetra = smesh.Mesh(box, 
  &quot;MeshBox&quot;)</p>
 
-<p class="whs1">&nbsp;</p>
-
-<p class="whs2"># add the hypothesis to 
- the box</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs1">print &quot;-------------------------- 
- add hypothesis to the box&quot;</p>
+<p class="whs7">algo1D = tetra.Segment()</p>
 
-<p class="whs1">mesh.AddHypothesis(box,hypNbSeg)</p>
+<p class="whs7">algo1D.NumberOfSegments(7)</p>
 
-<p class="whs1">mesh.AddHypothesis(box,hypArea)</p>
+<p class="whs7">&nbsp;</p>
 
-<p class="whs1">mesh.AddHypothesis(box,hypVolume)</p>
+<p class="whs7">algo2D = tetra.Triangle()</p>
 
-<p class="whs1">mesh.AddHypothesis(box,regular1D)</p>
+<p class="whs7">algo2D.MaxElementArea(800.)</p>
 
-<p class="whs1">mesh.AddHypothesis(box,mefisto2D)</p>
-
-<p class="whs2">&nbsp;</p>
+<p class="whs7">&nbsp;</p>
 
-<p class="whs2"># compute the mesh</p>
+<p class="whs7">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>
 
-<p class="whs1">print &quot;-------------------------- 
- compute the mesh of the box&quot;</p>
+<p class="whs7">algo3D.MaxElementVolume(900.)</p>
 
-<p class="whs1">ret = smesh.Compute(mesh,box)</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs1">print ret</p>
+<p class="whs6"># compute the mesh</p>
 
-<p class="whs1">if ret == 0:</p>
+<p class="whs7">tetra.Compute()</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;probleme when computing the mesh&quot;</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs1">salome.sg.updateObjBrowser(1)</p>
+<p class="whs6"># export the mesh in a 
+ MED file</p>
 
-<p class="whs1">mesh.ExportMED(&quot;/tmp/meshMED.med&quot;,0)</p>
-
-<p class="whs2">&nbsp;</p>
-
-<p class="whs4">&nbsp;</p>
+<p class="whs7">tetra.ExportMED(&quot;/tmp/meshMED.med&quot;, 
+ 0) </p>
 
 <script type="text/javascript" language="javascript1.2">
 <!--
index 7f8e0df5a94d8df6302e155ad440ac805f899a8e..f1e4c8778e4ff44ece06d3135628df0a6f84bb95 100755 (executable)
@@ -99,173 +99,62 @@ if (window.writeIntopicBar)
 
 <p>&nbsp;</p>
 
-<p class="whs2">from geompy import 
*</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import 
geompy</span></p>
 
 <p class="whs2">import smesh</p>
 
-<p>&nbsp;</p>
-
-<p># create vertices</p>
-
-<p class="whs2">Point111 = MakeVertex( 
- 0, &nbsp;0, &nbsp;0)</p>
-
-<p class="whs2">Point211 = MakeVertex(10, 
- &nbsp;0, &nbsp;0)</p>
-
-<p class="whs2">Point121 = MakeVertex( 
- 0, 10, &nbsp;0)</p>
-
-<p class="whs2">Point221 = MakeVertex(10, 
- 10, &nbsp;0)</p>
-
-<p class="whs2">Point112 = MakeVertex( 
- 0, &nbsp;0, 10)</p>
-
-<p class="whs2">Point212 = MakeVertex(10, 
- &nbsp;0, 10)</p>
-
-<p class="whs2">Point122 = MakeVertex( 
- 0, 10, 10)</p>
-
-<p class="whs2">Point222 = MakeVertex(10, 
- 10, 10)</p>
-
-<p>&nbsp;</p>
-
-<p># create edges</p>
-
-<p class="whs2">EdgeX111 = MakeEdge(Point111, 
- Point211)</p>
-
-<p class="whs2">EdgeX121 = MakeEdge(Point121, 
- Point221)</p>
-
-<p class="whs2">EdgeX112 = MakeEdge(Point112, 
- Point212)</p>
-
-<p class="whs2">EdgeX122 = MakeEdge(Point122, 
- Point222)</p>
-
-<p class="whs2">EdgeY11 = MakeEdge(Point111, 
- Point121)</p>
-
-<p class="whs2">EdgeY21 = MakeEdge(Point211, 
- Point221)</p>
-
-<p class="whs2">EdgeY12 = MakeEdge(Point112, 
- Point122)</p>
-
-<p class="whs2">EdgeY22 = MakeEdge(Point212, 
- Point222)</p>
-
-<p class="whs2">EdgeZ111 = MakeEdge(Point111, 
- Point112)</p>
-
-<p class="whs2">EdgeZ211 = MakeEdge(Point211, 
- Point212)</p>
-
-<p class="whs2">EdgeZ121 = MakeEdge(Point121, 
- Point122)</p>
-
-<p class="whs2">EdgeZ221 = MakeEdge(Point221, 
- Point222)</p>
-
-<p>&nbsp;</p>
-
-<p># create faces</p>
-
-<p class="whs2">FaceX11 = MakeQuad(EdgeY11, 
- EdgeZ111, EdgeY12, EdgeZ121)</p>
-
-<p class="whs2">FaceX21 = MakeQuad(EdgeY21, 
- EdgeZ211, EdgeY22, EdgeZ221)</p>
-
-<p class="whs2">FaceY111 = MakeQuad(EdgeX111, 
- EdgeZ111, EdgeX112, EdgeZ211)</p>
-
-<p class="whs2">FaceY121 = MakeQuad(EdgeX121, 
- EdgeZ121, EdgeX122, EdgeZ221)</p>
-
-<p class="whs2">FaceZ11 = MakeQuad(EdgeX111, 
- EdgeY11, EdgeX121, EdgeY21)</p>
-
-<p class="whs2">FaceZ12 = MakeQuad(EdgeX112, 
- EdgeY12, EdgeX122, EdgeY22)</p>
-
-<p>&nbsp;</p>
-
-<p># create a solid</p>
-
-<p class="whs2">Block = MakeHexa(FaceX11, 
- FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
-
-<p>&nbsp;</p>
+<p class="whs2">&nbsp;</p>
 
-<p># create a compound</p>
+<p class="whs3"># create a box</p>
 
-<p class="whs2">box = MakeCompound([Block])</p>
+<p class="whs2">box = geompy.MakeBoxDXDYDZ(10., 
+ 10., 10.)</p>
 
-<p>&nbsp;</p>
+<p class="whs2">geompy.addToStudy(box, 
+ &quot;Box&quot;)</p>
 
-<p># add in the study</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs2">box_id = addToStudy(box, 
&quot;Box compound&quot;)</p>
+<p class="whs3"># create a hexahedral 
mesh on the box</p>
 
-<p>&nbsp;</p>
+<p class="whs2">hexa = smesh.Mesh(box, 
+ &quot;Box : hexahedrical mesh&quot;)</p>
 
-<p># create a hexahedral mesh on the box</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs2">hexa = smesh.Mesh(box, 
&quot;Box compound : hexahedrical mesh&quot;)</p>
+<p class="whs3"># create a Regular 1D 
algorithm for edges</p>
 
-<p class="whs2">algo = hexa.Segment()</p>
+<p class="whs2">algo1D = hexa.Segment()</p>
 
-<p>&nbsp;</p>
+<p class="whs2">&nbsp;</p>
 
-<p># define &quot;NumberOfSegments&quot; hypothesis to cut an edge in a 
- fixed number of segments</p>
+<p class="whs3"># define &quot;Arithmetic1D&quot; 
+ hypothesis to cut all edges in several segments with increasing arithmetic 
+ length </p>
 
-<p class="whs2">algo.NumberOfSegments(4)</p>
+<p class="whs2">algo1D.Arithmetic1D(1, 
+ 4)</p>
 
-<p>&nbsp;</p>
+<p class="whs2">&nbsp;</p>
 
-<p># create a quadrangle 2D algorithm for faces</p>
+<p class="whs3"># create a quadrangle 
+ 2D algorithm for faces</p>
 
 <p class="whs2">hexa.Quadrangle()</p>
 
-<p>&nbsp;</p>
+<p class="whs2">&nbsp;</p>
 
-<p># create a hexahedron 3D algorithm for solids</p>
+<p class="whs3"># create a hexahedron 
+ 3D algorithm for solids</p>
 
 <p class="whs2">hexa.Hexahedron()</p>
 
-<p>&nbsp;</p>
-
-<p># create a local hypothesis</p>
-
-<p class="whs2">algo = hexa.Segment(EdgeX111)</p>
-
-<p>&nbsp;</p>
-
-<p># define &quot;Arithmetic1D&quot; hypothesis to cut an edge in several 
- segments with arithmetic length increasing</p>
-
-<p class="whs2">algo.Arithmetic1D(1, 
- 4)</p>
-
-<p>&nbsp;</p>
-
-<p># define &quot;Propagation&quot; hypothesis that propagates all other 
- hypothesis on all edges on the opposite side in case of quadrangular faces</p>
-
-<p class="whs2">algo.Propagation()</p>
-
-<p>&nbsp;</p>
+<p class="whs2">&nbsp;</p>
 
-<p># compute the mesh</p>
+<p class="whs3"># compute the mesh</p>
 
 <p class="whs2">hexa.Compute() </p>
 
@@ -273,132 +162,94 @@ if (window.writeIntopicBar)
 
 <h4><a name=bookmark9>Deflection 1D and Number of Segments</a></h4>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import 
+ geompy</span></p>
 
 <p class="whs2">import smesh</p>
 
-<p class="whs2">import geompy</p>
-
-<p class="whs2">import salome</p>
-
-<p class="whs2">gg = salome.ImportComponentGUI(&quot;GEOM&quot;)</p>
-
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># create vertices</p>
+<p class="whs3"># create a face from 
+ arc and straight segment</p>
 
-<p class="whs2">px &nbsp;&nbsp;= 
- geompy.MakeVertex(100., 0. &nbsp;, 
0. &nbsp;)</p>
+<p class="whs2">px = geompy.MakeVertex(100., 
+ 0. &nbsp;, 0. 
+ &nbsp;)</p>
 
-<p class="whs2">py &nbsp;&nbsp;= 
geompy.MakeVertex(0. &nbsp;
100., 0. &nbsp;)</p>
+<p class="whs2">py = geompy.MakeVertex(0. 
&nbsp;, 100.
+ 0. &nbsp;)</p>
 
-<p class="whs2">pz &nbsp;&nbsp;= 
geompy.MakeVertex(0. &nbsp;, 
0. &nbsp;, 100.)</p>
+<p class="whs2">pz = geompy.MakeVertex(0. 
&nbsp;, 0. &nbsp;, 
+ 100.)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># create a vector from 
- two points</p>
-
-<p class="whs2">vxy = geompy.MakeVector(px, 
+<p class="whs2">exy = geompy.MakeEdge(px, 
  py)</p>
 
-<p class="whs2">&nbsp;</p>
-
-<p class="whs3"># create an arc from 
- three points</p>
-
 <p class="whs2">arc = geompy.MakeArc(py, 
  pz, px)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># create a wire</p>
-
-<p class="whs2">wire = geompy.MakeWire([vxy, 
+<p class="whs2">wire = geompy.MakeWire([exy, 
  arc])</p>
 
-<p class="whs2">isPlanarFace = 1</p>
-
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># create a face from 
- the wire</p>
+<p class="whs2">isPlanarFace = 1</p>
 
 <p class="whs2">face1 = geompy.MakeFace(wire, 
  isPlanarFace)</p>
 
-<p class="whs2">&nbsp;</p>
-
-<p class="whs3"><span style="font-family: 'Times New Roman', serif;"># 
- get edges from the face</span></p>
-
-<p class="whs2">vxy,arc = geompy.SubShapeAll(face1,geompy.ShapeType[&quot;EDGE&quot;])</p>
-
-<p class="whs3">&nbsp;</p>
-
-<p class="whs3"># add objects in the 
- study</p>
-
-<p class="whs2">id_face1 = geompy.addToStudy(face1,&quot;Face1&quot;)</p>
-
-<p class="whs2">id_arc = geompy.addToStudyInFather(face1,arc,&quot;Arc 
- Edge&quot;)</p>
+<p class="whs2">geompy.addToStudy(face1,&quot;Face1&quot;)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># display faces</p>
-
-<p class="whs2">gg.createAndDisplayGO(id_face1)</p>
+<p class="whs3"># get edges from the 
+ face</p>
 
-<p class="whs2">gg.setDisplayMode(id_face1,1)</p>
+<p class="whs2">e_straight,e_arc = 
+ geompy.SubShapeAll(face1, geompy.ShapeType[&quot;EDGE&quot;])</p>
 
-<p class="whs2">gg.setTransparency(id_face1,0.2)</p>
+<p class="whs2">geompy.addToStudyInFather(face1, 
+ e_arc, &quot;Arc Edge&quot;)</p>
 
 <p class="whs2">&nbsp;</p>
 
 <p class="whs3"># create hexahedral mesh</p>
 
 <p class="whs2">hexa = smesh.Mesh(face1, 
- &quot;Face compound : hexahedrical mesh&quot;)</p>
-
-<p class="whs2">algo = hexa.Triangle()</p>
+ &quot;Face : triangle mesh&quot;)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># define &quot;MaxElementArea&quot; 
- hypothesis</p>
-
-<p class="whs2">algo.MaxElementArea(30)</p>
-
-<p class="whs2">&nbsp;</p>
+<p class="whs3"># define &quot;NumberOfSegments&quot; 
+ hypothesis to cut a straight edge in a fixed number of segments</p>
 
-<p class="whs3"># create a local hypothesis 
- on the wire</p>
+<p class="whs2">algo1D = hexa.Segment()</p>
 
-<p class="whs2">algo = hexa.Segment(wire)</p>
+<p class="whs2">algo1D.NumberOfSegments(6)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># define &quot;NumberOfSegments&quot; 
- hypothesis to cut a straight edge in a fixed number of segments</p>
+<p class="whs3"># define &quot;MaxElementArea&quot; 
+ hypothesis</p>
 
-<p class="whs2">algo.NumberOfSegments(6)</p>
+<p class="whs2">algo2D = hexa.Triangle()</p>
+
+<p class="whs2">algo2D.MaxElementArea(70.0)</p>
 
 <p class="whs2">&nbsp;</p>
 
 <p class="whs3"># define a local &quot;Deflection1D&quot; 
  hypothesis on the arc</p>
 
-<p class="whs2">algo = hexa.Segment(arc)</p>
-
-<p class="whs2">algo.Deflection1D(1)</p>
+<p class="whs2">algo_local = hexa.Segment(e_arc)</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs2">algo_local.Deflection1D(1.0)</p>
 
 <p class="whs2">&nbsp;</p>
 
@@ -406,298 +257,121 @@ if (window.writeIntopicBar)
 
 <p class="whs2">hexa.Compute() </p>
 
-<p>&nbsp;</p>
-
 <h4><a name=bookmark2>Start and End Length</a></h4>
 
-<p class="whs2">from geompy import 
*</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from 
geompy import *</span></p>
 
 <p class="whs2">import smesh</p>
 
-<p>&nbsp;</p>
-
-<p># create vertices</p>
-
-<p class="whs2">Point111 = MakeVertex( 
- 0, &nbsp;0, &nbsp;0)</p>
-
-<p class="whs2">Point211 = MakeVertex(10, 
- &nbsp;0, &nbsp;0)</p>
-
-<p class="whs2">Point121 = MakeVertex( 
- 0, 10, &nbsp;0)</p>
-
-<p class="whs2">Point221 = MakeVertex(10, 
- 10, &nbsp;0)</p>
-
-<p class="whs2">Point112 = MakeVertex( 
- 0, &nbsp;0, 10)</p>
-
-<p class="whs2">Point212 = MakeVertex(10, 
- &nbsp;0, 10)</p>
-
-<p class="whs2">Point122 = MakeVertex( 
- 0, 10, 10)</p>
-
-<p class="whs2">Point222 = MakeVertex(10, 
- 10, 10)</p>
-
-<p>&nbsp;</p>
-
-<p># create edges</p>
-
-<p class="whs2">EdgeX111 = MakeEdge(Point111, 
- Point211)</p>
-
-<p class="whs2">EdgeX121 = MakeEdge(Point121, 
- Point221)</p>
-
-<p class="whs2">EdgeX112 = MakeEdge(Point112, 
- Point212)</p>
-
-<p class="whs2">EdgeX122 = MakeEdge(Point122, 
- Point222)</p>
-
-<p class="whs2">EdgeY11 = MakeEdge(Point111, 
- Point121)</p>
-
-<p class="whs2">EdgeY21 = MakeEdge(Point211, 
- Point221)</p>
-
-<p class="whs2">EdgeY12 = MakeEdge(Point112, 
- Point122)</p>
-
-<p class="whs2">EdgeY22 = MakeEdge(Point212, 
- Point222)</p>
-
-<p class="whs2">EdgeZ111 = MakeEdge(Point111, 
- Point112)</p>
-
-<p class="whs2">EdgeZ211 = MakeEdge(Point211, 
- Point212)</p>
-
-<p class="whs2">EdgeZ121 = MakeEdge(Point121, 
- Point122)</p>
-
-<p class="whs2">EdgeZ221 = MakeEdge(Point221, 
- Point222)</p>
-
-<p>&nbsp;</p>
-
-<p># create faces</p>
-
-<p class="whs2">FaceX11 = MakeQuad(EdgeY11, 
- EdgeZ111, EdgeY12, EdgeZ121)</p>
-
-<p class="whs2">FaceX21 = MakeQuad(EdgeY21, 
- EdgeZ211, EdgeY22, EdgeZ221)</p>
-
-<p class="whs2">FaceY111 = MakeQuad(EdgeX111, 
- EdgeZ111, EdgeX112, EdgeZ211)</p>
-
-<p class="whs2">FaceY121 = MakeQuad(EdgeX121, 
- EdgeZ121, EdgeX122, EdgeZ221)</p>
-
-<p class="whs2">FaceZ11 = MakeQuad(EdgeX111, 
- EdgeY11, EdgeX121, EdgeY21)</p>
-
-<p class="whs2">FaceZ12 = MakeQuad(EdgeX112, 
- EdgeY12, EdgeX122, EdgeY22)</p>
-
-<p>&nbsp;</p>
+<p class="whs2">&nbsp;</p>
 
-<p># create a solid</p>
+<p class="whs3"># create a box</p>
 
-<p class="whs2">Block = MakeHexa(FaceX11
FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
+<p class="whs2">box = MakeBoxDXDYDZ(10.
10., 10.)</p>
 
-<p>&nbsp;</p>
+<p class="whs2">addToStudy(box, &quot;Box&quot;)</p>
 
-<p># create a compound</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs2">box = MakeCompound([Block])</p>
+<p class="whs3"># get one edge of the 
+ box to put local hypothesis on</p>
 
-<p>&nbsp;</p>
+<p class="whs2">p5 = MakeVertex(5., 
+ 0., 0.)</p>
 
-<p># add in the study</p>
+<p class="whs2">EdgeX = GetEdgeNearPoint(box, 
+ p5)</p>
 
-<p class="whs2">box_id = addToStudy(box, 
&quot;Box compound&quot;)</p>
+<p class="whs2">addToStudyInFather(box, 
EdgeX, &quot;Edge [0,0,0 - 10,0,0]&quot;)</p>
 
-<p>&nbsp;</p>
+<p class="whs2">&nbsp;</p>
 
-<p># create a hexahedral mesh on the box</p>
+<p class="whs3"># create a hexahedral 
+ mesh on the box</p>
 
 <p class="whs2">hexa = smesh.Mesh(box, 
- &quot;Box compound : hexahedrical mesh&quot;)</p>
-
-<p class="whs2">algo = hexa.Segment()</p>
-
-<p>&nbsp;</p>
-
-<p># define &quot;NumberOfSegments&quot; hypothesis to cut an edge in a 
- fixed number of segments</p>
+ &quot;Box : hexahedrical mesh&quot;)</p>
 
-<p class="whs2">algo.NumberOfSegments(4)</p>
+<p class="whs2">&nbsp;</p>
 
-<p>&nbsp;</p>
+<p class="whs3"># set algorithms</p>
 
-<p># create a quadrangle 2D algorithm for faces</p>
+<p class="whs2">algo1D = hexa.Segment()</p>
 
 <p class="whs2">hexa.Quadrangle()</p>
 
-<p>&nbsp;</p>
-
-<p># create a hexahedron 3D algorithm for solids</p>
-
 <p class="whs2">hexa.Hexahedron()</p>
 
-<p>&nbsp;</p>
-
-<p># create a local hypothesis</p>
-
-<p class="whs2">algo = hexa.Segment(EdgeX111)</p>
-
-<p>&nbsp;</p>
-
-<p># define &quot;StartEndLength&quot; hypothesis to cut an edge in several 
- segments with increasing geometric length </p>
-
-<p class="whs2">algo.StartEndLength(1, 
- 6)</p>
-
-<p>&nbsp;</p>
-
-<p># define &quot;Propagation&quot; hypothesis that propagates all other 
- hypothesis on all edges on the opposite side in case of quadrangular faces</p>
-
-<p class="whs2">algo.Propagation()</p>
-
-<p>&nbsp;</p>
-
-<p># compute the mesh</p>
-
-<p class="whs2">hexa.Compute() </p>
-
 <p class="whs2">&nbsp;</p>
 
-<h4><a name=bookmark3>Average Length</a></h4>
-
-<p class="whs2">from geompy import 
- *</p>
+<p class="whs3"># define &quot;NumberOfSegments&quot; 
+ hypothesis to cut an edge in a fixed number of segments</p>
 
-<p class="whs2">import smesh</p>
+<p class="whs2">algo1D.NumberOfSegments(4)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># create vertices</p>
-
-<p class="whs2">Point111 = MakeVertex( 
- 0, &nbsp;0, &nbsp;0)</p>
-
-<p class="whs2">Point211 = MakeVertex(10, 
- &nbsp;0, &nbsp;0)</p>
-
-<p class="whs2">Point121 = MakeVertex( 
- 0, 10, &nbsp;0)</p>
-
-<p class="whs2">Point221 = MakeVertex(10, 
- 10, &nbsp;0)</p>
-
-<p class="whs2">Point112 = MakeVertex( 
- 0, &nbsp;0, 10)</p>
-
-<p class="whs2">Point212 = MakeVertex(10, 
- &nbsp;0, 10)</p>
-
-<p class="whs2">Point122 = MakeVertex( 
- 0, 10, 10)</p>
+<p class="whs3"># create a local hypothesis</p>
 
-<p class="whs2">Point222 = MakeVertex(10, 
- 10, 10)</p>
+<p class="whs2">algo_local = hexa.Segment(EdgeX)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># create edges</p>
-
-<p class="whs2">EdgeX111 = MakeEdge(Point111, 
- Point211)</p>
-
-<p class="whs2">EdgeX121 = MakeEdge(Point121, 
- Point221)</p>
-
-<p class="whs2">EdgeX112 = MakeEdge(Point112, 
- Point212)</p>
-
-<p class="whs2">EdgeX122 = MakeEdge(Point122, 
- Point222)</p>
-
-<p class="whs2">EdgeY11 = MakeEdge(Point111, 
- Point121)</p>
-
-<p class="whs2">EdgeY21 = MakeEdge(Point211, 
- Point221)</p>
-
-<p class="whs2">EdgeY12 = MakeEdge(Point112, 
- Point122)</p>
+<p class="whs3"># define &quot;StartEndLength&quot; 
+ hypothesis to cut an edge in several segments with increasing geometric 
+ length</p>
 
-<p class="whs2">EdgeY22 = MakeEdge(Point212
Point222)</p>
+<p class="whs2">algo_local.StartEndLength(1
6)</p>
 
-<p class="whs2">EdgeZ111 = MakeEdge(Point111, 
- Point112)</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs2">EdgeZ211 = MakeEdge(Point211, 
Point212)</p>
+<p class="whs3"># define &quot;Propagation&quot; 
hypothesis that propagates all other hypothesis</p>
 
-<p class="whs2">EdgeZ121 = MakeEdge(Point121, 
Point122)</p>
+<p class="whs3"># on all edges on the 
opposite side in case of quadrangular faces</p>
 
-<p class="whs2">EdgeZ221 = MakeEdge(Point221, 
- Point222)</p>
+<p class="whs2">algo_local.Propagation()</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># create faces</p>
-
-<p class="whs2">FaceX11 = MakeQuad(EdgeY11, 
- EdgeZ111, EdgeY12, EdgeZ121)</p>
-
-<p class="whs2">FaceX21 = MakeQuad(EdgeY21, 
- EdgeZ211, EdgeY22, EdgeZ221)</p>
+<p class="whs3"># compute the mesh</p>
 
-<p class="whs2">FaceY111 = MakeQuad(EdgeX111, 
- EdgeZ111, EdgeX112, EdgeZ211)</p>
+<p class="whs2">hexa.Compute() </p>
 
-<p class="whs2">FaceY121 = MakeQuad(EdgeX121, 
- EdgeZ121, EdgeX122, EdgeZ221)</p>
+<h4><a name=bookmark3>Average Length</a></h4>
 
-<p class="whs2">FaceZ11 = MakeQuad(EdgeX111, 
EdgeY11, EdgeX121, EdgeY21)</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from 
geompy import *</span></p>
 
-<p class="whs2">FaceZ12 = MakeQuad(EdgeX112, 
- EdgeY12, EdgeX122, EdgeY22)</p>
+<p class="whs2">import smesh</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># create a solid</p>
+<p class="whs3"># create a box</p>
 
-<p class="whs2">Block = MakeHexa(FaceX11
FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
+<p class="whs2">box = MakeBoxDXDYDZ(10.
10., 10.)</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs2">addToStudy(box, &quot;Box&quot;)</p>
 
-<p class="whs3"># create a compound</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs2">box = MakeCompound([Block])</p>
+<p class="whs3"># get one edge of the 
+ box to put local hypothesis on</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs2">p5 = MakeVertex(5., 
+ 0., 0.)</p>
 
-<p class="whs3"># add in the study</p>
+<p class="whs2">EdgeX = GetEdgeNearPoint(box, 
+ p5)</p>
 
-<p class="whs2">box_id = addToStudy(box, 
&quot;Box compound&quot;)</p>
+<p class="whs2">addToStudyInFather(box, 
EdgeX, &quot;Edge [0,0,0 - 10,0,0]&quot;)</p>
 
 <p class="whs2">&nbsp;</p>
 
@@ -705,51 +379,47 @@ if (window.writeIntopicBar)
  mesh on the box</p>
 
 <p class="whs2">hexa = smesh.Mesh(box, 
- &quot;Box compound : hexahedrical mesh&quot;)</p>
-
-<p class="whs2">algo = hexa.Segment()</p>
+ &quot;Box : hexahedrical mesh&quot;)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># define &quot;NumberOfSegments&quot; 
- hypothesis to cut an edge in a fixed number of segments</p>
-
-<p class="whs2">algo.NumberOfSegments(4)</p>
-
-<p class="whs2">&nbsp;</p>
+<p class="whs3"># set algorithms</p>
 
-<p class="whs3"># create a quadrangle 
- 2D algorithm for faces</p>
+<p class="whs2">algo1D = hexa.Segment()</p>
 
 <p class="whs2">hexa.Quadrangle()</p>
 
+<p class="whs2">hexa.Hexahedron()</p>
+
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># create a hexahedron 
3D algorithm for solids</p>
+<p class="whs3"># define &quot;NumberOfSegments&quot; 
hypothesis to cut all edges in a fixed number of segments</p>
 
-<p class="whs2">hexa.Hexahedron()</p>
+<p class="whs2">algo1D.NumberOfSegments(4)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># create a local hypothesis</p>
+<p class="whs3"># create a sub-mesh</p>
 
-<p class="whs2">algo = hexa.Segment(EdgeX111)</p>
+<p class="whs2">algo_local = hexa.Segment(EdgeX)</p>
 
 <p class="whs2">&nbsp;</p>
 
 <p class="whs3"># define &quot;LocalLength&quot; 
  hypothesis to cut an edge in several segments with the same length</p>
 
-<p class="whs2">algo.LocalLength(2)</p>
+<p class="whs2">algo_local.LocalLength(2.)</p>
 
 <p class="whs2">&nbsp;</p>
 
 <p class="whs3"># define &quot;Propagation&quot; 
- hypothesis that propagates all other hypothesis on all edges on<span style="font-family: 'Times New Roman', serif;"> 
- the opposite side in case of quadrangular faces</span></p>
+ hypothesis that propagates all other hypothesis</p>
+
+<p class="whs3"># on all edges on the 
+ opposite side in case of quadrangular faces</p>
 
-<p class="whs2">algo.Propagation()</p>
+<p class="whs2">algo_local.Propagation()</p>
 
 <p class="whs2">&nbsp;</p>
 
@@ -757,10 +427,6 @@ if (window.writeIntopicBar)
 
 <p class="whs2">hexa.Compute() </p>
 
-<p class="whs2">&nbsp;</p>
-
-<p class="whs2">&nbsp;</p>
-
 <h3>Defining 2D and 3D hypotheses</h3>
 
 <h4><a name=bookmark4>Maximum Element Area</a></h4>
@@ -768,8 +434,6 @@ if (window.writeIntopicBar)
 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import 
  smesh</span></p>
 
-<p class="whs4">import geompy</p>
-
 <p class="whs4">import salome</p>
 
 <p class="whs4">&nbsp;</p>
@@ -859,168 +523,59 @@ if (window.writeIntopicBar)
 <h4><a name=bookmark5>Maximum Element Volume</a></h4>
 
 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import 
- salome</span></p>
-
-<p class="whs4">import geompy</p>
-
-<p class="whs4">import StdMeshers</p>
+ geompy</span></p>
 
-<p class="whs4">import NETGENPlugin</p>
+<p class="whs4">import smesh</p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs4">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
- &quot;SMESH&quot;)</p>
+<p class="whs5"># create a cylinder</p>
 
-<p class="whs4">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>
+<p class="whs4">cyl = geompy.MakeCylinderRH(30., 
+ 50.)</p>
 
-<p class="whs4">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs4">geompy.addToStudy(cyl, 
+ &quot;cyl&quot;)</p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs5"># create a box</p>
+<p class="whs5"># create a mesh on 
+ the cylinder</p>
 
-<p class="whs4">box = geompy.MakeCylinderRH(30, 
- 50) #MakeBox(0., 0., 0., </p>
-
-<p class="whs4">100., 200., 300.)</p>
+<p class="whs4">tetra = smesh.Mesh(cyl, 
+ &quot;Cylinder : tetrahedrical mesh&quot;)</p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs5"># add the box in the 
- study</p>
-
-<p class="whs4">idbox = geompy.addToStudy(box, 
- &quot;box&quot;)</p>
-
-<p class="whs4">&nbsp;</p>
-
-<p class="whs5"># create a set of hypotheses</p>
-
-<p class="whs5">&nbsp;</p>
-
-<p class="whs5"># Number of Segments</p>
-
-<p class="whs4">numberOfSegments 
- = 7</p>
-
-<p class="whs4">hypNbSeg = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs5"># assign algorithms</p>
 
-<p class="whs4">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>
+<p class="whs4">algo1D = tetra.Segment()</p>
 
-<p class="whs4">print hypNbSeg.GetName()</p>
+<p class="whs4">algo2D = tetra.Triangle()</p>
 
-<p class="whs4">print hypNbSeg.GetNumberOfSegments()</p>
-
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(hypNbSeg), 
- &quot;NumberOfSegments_7&quot;)</p>
+<p class="whs4">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs5"># Max Element Area</p>
-
-<p class="whs4">maxElementArea = 
- 800</p>
-
-<p class="whs4">hypArea = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs5"># assign 1D and 2D 
+ hypotheses</p>
 
-<p class="whs4">hypArea.SetMaxElementArea(maxElementArea)</p>
+<p class="whs4">algo1D.NumberOfSegments(7)</p>
 
-<p class="whs4">print hypArea.GetName()</p>
-
-<p class="whs4">print hypArea.GetMaxElementArea()</p>
-
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(hypArea), 
- &quot;MaxElementArea_800&quot;)</p>
+<p class="whs4">algo2D.MaxElementArea(150.)</p>
 
 <p class="whs4">&nbsp;</p>
 
-<p class="whs5"># Max Element Volume</p>
-
-<p class="whs4">maxElementVolume 
- = 900</p>
-
-<p class="whs4">hypVolume = smesh.CreateHypothesis(&quot;MaxElementVolume&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs4">hypVolume.SetMaxElementVolume(maxElementVolume)</p>
-
-<p class="whs4">print hypVolume.GetName()</p>
-
-<p class="whs4">print hypVolume.GetMaxElementVolume()</p>
-
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(hypVolume), 
- &quot;MaxElementVolume_900&quot;)</p>
-
-<p class="whs4">&nbsp;</p>
-
-<p class="whs5"># create a set of algorithms</p>
-
-<p class="whs5">&nbsp;</p>
-
-<p class="whs5"># Regular_1D</p>
-
-<p class="whs4">regular1D = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(regular1D), 
- &quot;Wire Discretisation&quot;)</p>
-
-<p class="whs4">&nbsp;</p>
-
-<p class="whs5"># MEFISTO_2D</p>
-
-<p class="whs4">mefisto2D = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(mefisto2D), 
- &quot;MEFISTO_2D&quot;)</p>
-
-<p class="whs4">&nbsp;</p>
-
-<p class="whs5"># NETGEN_3D (Tetrahedron 
- meshing algorithm)</p>
-
-<p class="whs4">tetra3D = smesh.CreateHypothesis(&quot;NETGEN_3D&quot;, 
- &quot;libNETGENEngine.so&quot;)</p>
-
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(tetra3D), 
- &quot;NETGEN_3D&quot;)</p>
-
-<p class="whs4">&nbsp;</p>
-
-<p class="whs5"># initialize a mesh 
- with the box</p>
-
-<p class="whs4">mesh = smesh.CreateMesh(box)</p>
-
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(mesh), 
- &quot;MeshBox&quot;)</p>
-
-<p class="whs4">&nbsp;</p>
-
-<p class="whs5"># add hypotheses and 
- algorithms to the box</p>
-
-<p class="whs4">mesh.AddHypothesis(box,hypNbSeg)</p>
-
-<p class="whs4">mesh.AddHypothesis(box,hypArea)</p>
-
-<p class="whs4">mesh.AddHypothesis(box,hypVolume)</p>
-
-<p class="whs4">mesh.AddHypothesis(box,regular1D)</p>
-
-<p class="whs4">mesh.AddHypothesis(box,mefisto2D)</p>
+<p class="whs5"># assign Max Element 
+ Volume hypothesis</p>
 
-<p class="whs4">mesh.AddHypothesis(box,tetra3D)</p>
+<p class="whs4">algo3D.MaxElementVolume(200.)</p>
 
 <p class="whs4">&nbsp;</p>
 
 <p class="whs5"># compute the mesh</p>
 
-<p class="whs4">ret = smesh.Compute(mesh,box)</p>
+<p class="whs4">ret = tetra.Compute()</p>
 
 <p class="whs4">if ret == 0:</p>
 
@@ -1030,19 +585,12 @@ if (window.writeIntopicBar)
 <p class="whs4">else:</p>
 
 <p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;Computation succeded&quot;</p>
-
-<p class="whs4">salome.sg.updateObjBrowser(1) 
- </p>
-
-<p class="whs4">&nbsp;</p>
+ &quot;Computation succeded&quot; </p>
 
 <h4><a name=bookmark6>Length from Edges</a></h4>
 
 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import 
- salome</span></p>
-
-<p class="whs2">import geompy</p>
+ geompy</span></p>
 
 <p class="whs2">import smesh</p>
 
@@ -1056,21 +604,18 @@ if (window.writeIntopicBar)
 <p class="whs2">sketcher2 = geompy.MakeSketcher(&quot;Sketcher:F 
  20 20:TT 50 20:TT 50 50:TT 20 50:WW&quot;)</p>
 
-<p class="whs2">isPlanarFace = 1</p>
-
 <p class="whs2">&nbsp;</p>
 
 <p class="whs3"># create a face from 
  two wires</p>
 
-<p class="whs2">face1 = geompy.MakeFaces([sketcher1, 
- sketcher2],isPlanarFace)</p>
-
-<p class="whs2">&nbsp;</p>
+<p class="whs2">isPlanarFace = 1</p>
 
-<p class="whs3"># add object in the study</p>
+<p class="whs2">face1 = geompy.MakeFaces([sketcher1, 
+ sketcher2], isPlanarFace)</p>
 
-<p class="whs2">id_face1 = geompy.addToStudy(face1,&quot;Face1&quot;)</p>
+<p class="whs2">geompy.addToStudy(face1, 
+ &quot;Face1&quot;)</p>
 
 <p class="whs2">&nbsp;</p>
 
@@ -1083,26 +628,24 @@ if (window.writeIntopicBar)
 
 <p class="whs3"># Define 1D meshing</p>
 
-<p class="whs2">algo = tria.Segment()</p>
+<p class="whs2">algo1D = tria.Segment()</p>
 
-<p class="whs2">algo.NumberOfSegments(2)</p>
+<p class="whs2">algo1D.NumberOfSegments(2)</p>
 
 <p class="whs2">&nbsp;</p>
 
 <p class="whs3"># create and assign the 
  algorithm for 2D meshing with triangles</p>
 
-<p class="whs2">algo = tria.Triangle()</p>
+<p class="whs2">algo2D = tria.Triangle()</p>
 
 <p class="whs2">&nbsp;</p>
 
 <p class="whs3"># create and assign &quot;LengthFromEdges&quot; 
- hypothesis to build triangles </p>
-
-<p class="whs3"># based on the length 
- of the edges taken from the wire</p>
+ hypothesis to build triangles<span style="font-family: 'Times New Roman', serif;"> 
+ based on the length of the edges taken from the wire</span></p>
 
-<p class="whs2">algo.LengthFromEdges()</p>
+<p class="whs2">algo2D.LengthFromEdges()</p>
 
 <p class="whs2">&nbsp;</p>
 
@@ -1116,263 +659,218 @@ if (window.writeIntopicBar)
 
 <h4><a name=bookmark7>Propagation</a></h4>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from 
geompy import *</span></p>
+<p class="whs2">from geompy import 
*</p>
 
 <p class="whs2">import smesh</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># create vertices</p>
-
-<p class="whs2">Point111 = MakeVertex( 
- 0, &nbsp;0, &nbsp;0)</p>
+<p class="whs3"># create a box</p>
 
-<p class="whs2">Point211 = MakeVertex(10
&nbsp;0, &nbsp;0)</p>
+<p class="whs2">box = MakeBoxDXDYDZ(10.
10., 10.)</p>
 
-<p class="whs2">Point121 = MakeVertex( 
- 0, 10, &nbsp;0)</p>
+<p class="whs2">addToStudy(box, &quot;Box&quot;)</p>
 
-<p class="whs2">Point221 = MakeVertex(10, 
- 10, &nbsp;0)</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs2">Point112 = MakeVertex( 
0, &nbsp;0, 10)</p>
+<p class="whs3"># get one edge of the 
box to put local hypothesis on</p>
 
-<p class="whs2">Point212 = MakeVertex(10
&nbsp;0, 10)</p>
+<p class="whs2">p5 = MakeVertex(5.
0., 0.)</p>
 
-<p class="whs2">Point122 = MakeVertex( 
0, 10, 10)</p>
+<p class="whs2">EdgeX = GetEdgeNearPoint(box, 
p5)</p>
 
-<p class="whs2">Point222 = MakeVertex(10
10, 10)</p>
+<p class="whs2">addToStudyInFather(box
EdgeX, &quot;Edge [0,0,0 - 10,0,0]&quot;)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># create edges</p>
+<p class="whs3"># create a hexahedral 
+ mesh on the box</p>
 
-<p class="whs2">EdgeX111 = MakeEdge(Point111
Point211)</p>
+<p class="whs2">hexa = smesh.Mesh(box
&quot;Box : hexahedrical mesh&quot;)</p>
 
-<p class="whs2">EdgeX121 = MakeEdge(Point121, 
- Point221)</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs2">EdgeX112 = MakeEdge(Point112, 
Point212)</p>
+<p class="whs3"># set global algorithms 
and hypotheses</p>
 
-<p class="whs2">EdgeX122 = MakeEdge(Point122, 
- Point222)</p>
+<p class="whs2">algo1D = hexa.Segment()</p>
 
-<p class="whs2">EdgeY11 = MakeEdge(Point111, 
- Point121)</p>
+<p class="whs2">hexa.Quadrangle()</p>
 
-<p class="whs2">EdgeY21 = MakeEdge(Point211, 
- Point221)</p>
+<p class="whs2">hexa.Hexahedron()</p>
 
-<p class="whs2">EdgeY12 = MakeEdge(Point112, 
- Point122)</p>
+<p class="whs2">algo1D.NumberOfSegments(4)</p>
 
-<p class="whs2">EdgeY22 = MakeEdge(Point212, 
- Point222)</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs2">EdgeZ111 = MakeEdge(Point111, 
Point112)</p>
+<p class="whs3"># create a sub-mesh with 
local 1D hypothesis and propagation</p>
 
-<p class="whs2">EdgeZ211 = MakeEdge(Point211, 
- Point212)</p>
+<p class="whs2">algo_local = hexa.Segment(EdgeX)</p>
 
-<p class="whs2">EdgeZ121 = MakeEdge(Point121, 
- Point122)</p>
+<p class="whs2">&nbsp;</p>
+
+<p class="whs3"># define &quot;Arithmetic1D&quot; 
+ hypothesis to cut an edge in several segments with increasing length</p>
 
-<p class="whs2">EdgeZ221 = MakeEdge(Point221, 
Point222)</p>
+<p class="whs2">algo_local.Arithmetic1D(1, 
4)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs3"># create faces</p>
+<p class="whs3"># define &quot;Propagation&quot; 
+ hypothesis that propagates all other 1D hypotheses</p>
 
-<p class="whs2">FaceX11 = MakeQuad(EdgeY11, 
EdgeZ111, EdgeY12, EdgeZ121)</p>
+<p class="whs3"># from all edges on the 
opposite side of a face in case of quadrangular faces</p>
 
-<p class="whs2">FaceX21 = MakeQuad(EdgeY21, 
- EdgeZ211, EdgeY22, EdgeZ221)</p>
+<p class="whs2">algo_local.Propagation()</p>
 
-<p class="whs2">FaceY111 = MakeQuad(EdgeX111, 
- EdgeZ111, EdgeX112, EdgeZ211)</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs2">FaceY121 = MakeQuad(EdgeX121, 
- EdgeZ121, EdgeX122, EdgeZ221)</p>
+<p class="whs3"># compute the mesh</p>
 
-<p class="whs2">FaceZ11 = MakeQuad(EdgeX111, 
EdgeY11, EdgeX121, EdgeY21)</p>
+<p><span style="font-family: 'Lucida Console', monospace;">hexa.Compute()</span> 
+ </p>
 
-<p class="whs2">FaceZ12 = MakeQuad(EdgeX112, 
- EdgeY12, EdgeX122, EdgeY22)</p>
+<h3><a name=bookmark8>Defining Meshing Algorithms</a></h3>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs4">import geompy</p>
 
-<p class="whs3"># create a solid</p>
+<p class="whs4">import smesh</p>
 
-<p class="whs2">box = MakeHexa(FaceX11, 
- FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs6"># create a box</p>
 
-<p class="whs3"># add in the study</p>
+<p class="whs4">box = geompy.MakeBoxDXDYDZ(10., 
+ 10., 10.)</p>
 
-<p class="whs2">box_id = addToStudy(box, 
+<p class="whs4">geompy.addToStudy(box, 
  &quot;Box&quot;)</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs4">&nbsp;</p>
 
-<p class="whs3"># create a hexahedral 
+<p class="whs6"># 1. Create a hexahedral 
  mesh on the box</p>
 
-<p class="whs2">hexa = smesh.Mesh(box, 
+<p class="whs4">hexa = smesh.Mesh(box, 
  &quot;Box : hexahedrical mesh&quot;)</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs3"># create an 1D algorithm 
+<p class="whs6"># create a Regular 1D algorithm 
  for edges</p>
 
-<p class="whs2">algo = hexa.Segment()</p>
-
-<p class="whs2">&nbsp;</p>
-
-<p class="whs3"># define &quot;NumberOfSegments&quot; 
- hypothesis to cut an edge in a fixed number of segments</p>
-
-<p class="whs2">algo.NumberOfSegments(4)</p>
-
-<p class="whs2">&nbsp;</p>
-
-<p class="whs3"># create a quadrangle 
- 2D algorithm for faces</p>
-
-<p class="whs2">hexa.Quadrangle()</p>
+<p class="whs4">algo1D = hexa.Segment()</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs3"># create a hexahedron 
3D algorithm for solids</p>
+<p class="whs6"># create a quadrangle 2D 
algorithm for faces</p>
 
-<p class="whs2">hexa.Hexahedron()</p>
+<p class="whs4">algo2D = hexa.Quadrangle()</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs3"># create a local hypothesis</p>
+<p class="whs6"># create a hexahedron 3D 
+ algorithm for solids</p>
 
-<p class="whs2">algo = hexa.Segment(EdgeX111)</p>
+<p class="whs4">algo3D = hexa.Hexahedron()</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs3"># define &quot;Arithmetic1D&quot; 
- hypothesis to cut an edge<span style="font-family: 'Times New Roman', serif;"> 
- in several segments with increasing length</span></p>
+<p class="whs6"># define hypotheses</p>
 
-<p class="whs2">algo.Arithmetic1D(1, 
+<p class="whs4">algo1D.Arithmetic1D(1, 
  4)</p>
 
-<p class="whs2">&nbsp;</p>
-
-<p class="whs3"># define &quot;Propagation&quot; 
- hypothesis that propagates all other 1D hypotheses</p>
-
-<p class="whs3"># from all edges on the 
- opposite side of a face in case of quadrangular faces</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs2">algo.Propagation()</p>
+<p class="whs6"># compute the mesh</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs4">hexa.Compute()</p>
 
-<p class="whs3"># compute the mesh</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs2">hexa.Compute() &nbsp;</p>
+<p class="whs6"># 2. Create a tetrahedral 
+ mesh on the box</p>
 
-<h3><a name=bookmark8>Defining Meshing Algorithms</a></h3>
+<p class="whs4">tetra = smesh.Mesh(box, 
+ &quot;Box : tetrahedrical mesh&quot;)</p>
 
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import 
- salome</span></p>
-
-<p class="whs4">import StdMeshers</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs4">import NETGENPlugin</p>
+<p class="whs6"># create a Regular 1D algorithm 
+ for edges</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs4">algo1D = tetra.Segment()</p>
 
-<p class="whs4">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
- &quot;SMESH&quot;)</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs4">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>
+<p class="whs6"># create a Mefisto 2D algorithm 
+ for faces</p>
 
-<p class="whs4">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs4">algo2D = tetra.Triangle()</p>
 
 <p class="whs6">&nbsp;</p>
 
-<p class="whs6"># create algorithms</p>
-
-<p class="whs4">print &quot;-------------------------- 
- create Algorithms&quot;</p>
+<p class="whs6"># create a Netgen 3D algorithm 
+ for solids</p>
 
-<p class="whs4">print &quot;-------------------------- 
- Regular_1D (Wire discretisation)&quot;</p>
+<p class="whs4">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>
 
-<p class="whs4">regular1D = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(regular1D), 
- &quot;Wire Discretisation&quot;)</p>
+<p class="whs6"># define hypotheses</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs4">algo1D.Arithmetic1D(1, 
+ 4)</p>
 
-<p class="whs4">print &quot;-------------------------- 
- MEFISTO_2D (Triangle meshing algorithm)&quot;</p>
+<p class="whs4">algo2D.LengthFromEdges()</p>
 
-<p class="whs4">mefisto2D = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(mefisto2D), 
- &quot;MEFISTO_2D&quot;)</p>
+<p class="whs6"># compute the mesh</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs4">tetra.Compute()</p>
 
-<p class="whs4">print &quot;-------------------------- 
- Quadrangle_2D (Quadrangle meshing algorithm)&quot;</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs4">quad2D = smesh.CreateHypothesis( 
&quot;Quadrangle_2D&quot;, &quot;libStdMeshersEngine.so&quot; )</p>
+<p class="whs6"># 3. Create a tetrahedral 
mesh on the box with NETGEN_2D3D algorithm</p>
 
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(quad2D)
- &quot;Quadrangle_2D&quot;)</p>
+<p class="whs4">tetraN = smesh.Mesh(box
+ &quot;Box : tetrahedrical mesh by NETGEN_2D3D&quot;)</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs4">print &quot;-------------------------- 
Hexa_3D (Hexahedron meshing algorithm)&quot;</p>
+<p class="whs6"># create a Netgen_2D3D 
algorithm for solids</p>
 
-<p class="whs4">hexa3D = smesh.CreateHypothesis(&quot;Hexa_3D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs4">is3D = 1</p>
 
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(hexa3D), 
- &quot;HEXA_3D&quot;)</p>
+<p class="whs4">algo3D = tetraN.Netgen(is3D)</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs4">print &quot;-------------------------- 
- NETGEN_3D (Tetrahedron meshing algorithm)&quot;</p>
+<p class="whs6"># define hypotheses</p>
 
-<p class="whs4">netgen3D = smesh.CreateHypothesis(&quot;NETGEN_3D&quot;, 
- &quot;libNETGENEngine.so&quot;)</p>
+<p class="whs4">n23_params = algo3D.Parameters()</p>
 
-<p class="whs4">smeshgui.SetName(salome.ObjectToID(netgen3D), 
- &quot;NETGEN_3D&quot;)</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs4">salome.sg.updateObjBrowser(1)</p>
+<p class="whs6"># compute the mesh</p>
 
-<p class="whs6">&nbsp;</p>
+<p class="whs4">tetraN.Compute() 
+ </p>
 
 <script type="text/javascript" language="javascript1.2">
 <!--
index 84ecb3ced949cbca70b5afd252b0dedd1ed58552..74b811ab66187d910b19977886ae809aca8ad120 100755 (executable)
@@ -14,22 +14,48 @@ if (navigator.appName !="Netscape")
 </script>
 <style type="text/css">
 <!--
-table.whs1 { x-cell-content-align:top; width:100%; border-spacing:0px; }
-col.whs2 { width:50%; }
-tr.whs3 { x-cell-content-align:top; }
-td.whs4 { width:50%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-top-style:none; border-bottom-style:none; }
-img_whs5 { border:none; width:335px; height:323px; border-style:none; }
-td.whs6 { width:50%; padding-right:10px; padding-left:10px; border-top-style:none; border-bottom-style:none; border-right-style:none; }
-img_whs7 { border:none; width:350px; height:323px; border-style:none; }
-p.whs8 { margin-left:40px; }
-img_whs9 { border:none; width:27px; height:24px; border-style:none; }
-img_whs10 { border:none; width:434px; height:541px; float:none; border-style:none; }
-ul.whs11 { list-style:disc; }
-p.whs12 { margin-left:84px; }
-img_whs13 { border:none; width:26px; height:25px; border-style:none; }
-img_whs14 { border:none; width:29px; height:28px; border-style:none; }
+img_whs1 { border:none; width:27px; height:24px; border-style:none; }
+img_whs2 { border:none; width:387px; height:334px; float:none; border-style:none; }
+ul.whs3 { list-style:disc; }
+table.whs4 { x-cell-content-align:top; width:100%; border-spacing:0px; }
+col.whs5 { width:50%; }
+tr.whs6 { x-cell-content-align:top; }
+td.whs7 { width:50%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-top-style:none; border-bottom-style:none; }
+p.whs8 { margin-left:0px; margin-right:53px; }
+img_whs9 { border:none; width:389px; height:334px; float:none; border-style:none; }
+td.whs10 { width:50%; padding-right:10px; padding-left:10px; border-top-style:none; border-bottom-style:none; border-right-style:none; }
+p.whs11 { margin-left:0px; }
+p.whs12 { margin-left:40px; }
+col.whs13 { width:33.333%; }
+td.whs14 { width:33.333%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; border-left-style:none; border-top-style:none; }
+td.whs15 { width:33.333%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; border-top-style:none; }
+td.whs16 { width:33.333%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-top-style:none; border-right-style:none; }
+td.whs17 { width:33.333%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-bottom-style:none; }
+td.whs18 { width:33.333%; padding-right:10px; padding-left:10px; border-right-style:none; border-bottom-style:none; }
+td.whs19 { width:33.333%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; }
+p.whs20 { font-weight:bold; margin-left:0px; }
+p.whs21 { font-weight:bold; }
+img_whs22 { border:none; width:441px; height:541px; float:none; border-style:none; }
+p.whs23 { margin-left:84px; }
+p.whs24 { margin-left:156px; }
+p.whs25 { margin-left:156px; font-weight:bold; }
+img_whs26 { border:none; width:26px; height:25px; border-style:none; }
+img_whs27 { border:none; width:29px; height:28px; border-style:none; }
 -->
-</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
+</style><script type="text/javascript" language="JavaScript">
+<!--
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
+{
+  var strNSS = "<style type='text/css'>";
+  strNSS += "p.whs8 {margin-left:1pt; }";
+  strNSS += "p.whs11 {margin-left:1pt; }";
+  strNSS += "p.whs20 {margin-left:1pt; }";
+  strNSS +="</style>";
+  document.write(strNSS);
+}
+//-->
+</script>
+<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
 <!--
 function reDo() {
   if (innerWidth != origWidth || innerHeight != origHeight)
@@ -88,96 +114,251 @@ if (window.writeIntopicBar)
        writeIntopicBar(4);
 //-->
 </script>
-<h1>Extrusion along a path</h1>
+<h1><img src="image101.gif" width="27px" height="24px" border="0" class="img_whs1">Extrusion along a path</h1>
 
-<p>In principle, Extrusion along a path works in the same way as Extrusion, 
+<p>In principle, <span style="font-weight: bold;"><B>Extrusion along a path</B></span> 
+ works in the same way as <span style="font-weight: bold;"><B>Extrusion</B></span>, 
  the main difference is that we define not a vector, but a path of extrusion 
- which must be a meshed edge or wire. To get an idea of how this algorithm 
- works, let's see the left image, where we have a 1D circle edge and &nbsp;a 
- 2D hexagon to be extruded along this path (in the picture they are angular 
- because we show the wireframe of the mesh). And now let's see the right 
- image, showing the result of the operation. &nbsp;</p>
+ which must be a meshed edge. To get an idea of how this algorithm works, 
+ examine several examples, starting from the most simple case of extrusion 
+ along a straight edge. In all examples the same mesh will be extruded 
+ along different paths and with different parameters. This sample 2D mesh 
+ has two quadrangle faces and seven edges. Look at the picture, where white 
+ digits are the node numbers and green are the element numbers:</p>
+
+<p><span style="margin-left: 40px;"><img src="pics/mesh_for_extr_along_path.png" x-maintain-ratio="TRUE" width="387px" height="334px" border="0" class="img_whs2"> .</span></p>
 
 <p>&nbsp;</p>
 
-<table x-use-null-cells cellspacing="0" width="100%" class="whs1">
-<col class="whs2">
-<col class="whs2">
+<ul type="disc" class="whs3">
+       
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Extrusion along 
+ a straight edge</B></span> (not using base point or angles)</p></li>
+</ul>
+
+<table x-use-null-cells cellspacing="0" width="100%" class="whs4">
+<col class="whs5">
+<col class="whs5">
 
-<tr valign="top" class="whs3">
-<td width="50%" class="whs4">
-<p><img src="image102.gif" width="335px" height="323px" border="0" class="img_whs5"></td>
-<td width="50%" class="whs6">
-<p><img src="image104.gif" width="350px" height="323px" border="0" class="img_whs7"></td></tr>
+<tr valign="top" class="whs6">
+<td width="50%" class="whs7">
+<p class="whs8"><img src="pics/straight_before.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td>
+<td width="50%" class="whs10">
+<p class="whs11"><img src="pics/straight_after.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td></tr>
 </table>
 
-<p>&nbsp;</p>
+<p class="whs12">&nbsp;&nbsp;&nbsp;</p>
+
+<p class="whs12">The left image shows a 1D path mesh, built 
+ on a linear edge, and the initial 2D mesh. The right image shows the result 
+ of extrusion of two edges (#1 and #2) of the initial mesh along the path. 
+ Node #1 of path mesh has been selected as <span style="font-weight: bold;"><B>Start 
+ node</B></span>.</p>
+
+<p class="whs12">&nbsp;</p>
+
+<ul type="disc" class="whs3">
+       
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Extrusion along 
+ a curvilinear edge</B></span> (with and without angles)</p></li>
+</ul>
+
+<table x-use-null-cells cellspacing="0" width="100%" class="whs4">
+<col class="whs13">
+<col class="whs13">
+<col class="whs13">
+
+<tr valign="top" class="whs6">
+<td width="33.333%" class="whs14">
+<p><img src="pics/curvi_simple_before.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td>
+<td width="33.333%" class="whs15">
+<p><img src="pics/curvi_simple_after.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td>
+<td width="33.333%" class="whs16">
+<p><img src="pics/curvi_angles_after.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td></tr>
+
+<tr valign="top" class="whs6">
+<td width="33.333%" class="whs17">
+<p>The left image shows a 1D path mesh, built on curvilinear edge, and 
+ the initial &nbsp;2D 
+ mesh.</td>
+<td width="33.333%" class="whs18">
+<p>The central image shows the result of extrusion of one edge (#2) of 
+ the initial mesh along the path. &nbsp;Node 
+ #1 of path mesh has been selected as <span style="font-weight: bold;"><B>Start 
+ node</B></span>.</td>
+<td width="33.333%" class="whs19">
+<p>The same, but using angles {45, 45, 45, 0, -45, -45, -45}</td></tr>
+</table>
+
+<p class="whs11">&nbsp;</p>
+
+<ul type="disc" class="whs3">
+       
+       <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Extrusion 
+ along a sub-mesh.</B></span></p></li>
+</ul>
+
+<table x-use-null-cells cellspacing="0" width="100%" class="whs4">
+<col class="whs5">
+<col class="whs5">
+
+<tr valign="top" class="whs6">
+<td width="50%" class="whs7">
+<p><img src="pics/edge_wire_before.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td>
+<td width="50%" class="whs10">
+<p><img src="pics/edge_wire_after.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td></tr>
+</table>
 
-<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p class="whs12">&nbsp;</p>
+
+<p class="whs12">In this example the path mesh has been built 
+ on a wire (polyline with six edges). The first edge of the wire was used 
+ as <span style="font-weight: bold;"><B>Shape (edge)</B></span>, node #1 as <span 
+ style="font-weight: bold;"><B>Start node</B></span>. The angles have been defined 
+ as {10, 10, 10}. The middle edge (#4) of the initial mesh has been extruded.</p>
+
+<p class="whs12">&nbsp;</p>
+
+<ul type="disc" class="whs3">
+       
+       <li class=kadov-p><p class="whs20">Extrusion 
+ of 2d elements along a sub-mesh.</p></li>
+</ul>
+
+<table x-use-null-cells cellspacing="0" width="100%" class="whs4">
+<col class="whs5">
+<col class="whs5">
+
+<tr valign="top" class="whs6">
+<td width="50%" class="whs7">
+<p><img src="pics/edge_wire_3d_before.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td>
+<td width="50%" class="whs10">
+<p><img src="pics/edge_wire_3d_after.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td></tr>
+</table>
+
+<p class="whs12">&nbsp;</p>
+
+<p class="whs12">This extrusion bases on the same path mesh 
+ as in the previous example but the third edge of the wire was set as <span 
+ style="font-weight: bold;"><B>Shape (edge)</B></span> and node #4 as <span style="font-weight: bold;"><B>Start 
+ node</B></span>. Please note, that the extrusion has been done in direction 
+ from node #4 to node #3, i.e. against the wire direction. In this example 
+ both faces of the initial mesh have been extruded.</p>
+
+<p class="whs12">&nbsp;</p>
+
+<ul type="disc" class="whs3">
+       
+       <li class=kadov-p><p class="whs21">Extrusion of 2d elements 
+ along a closed path.</p></li>
+</ul>
+
+<table x-use-null-cells cellspacing="0" width="100%" class="whs4">
+<col class="whs13">
+<col class="whs13">
+<col class="whs13">
+
+<tr valign="top" class="whs6">
+<td width="33.333%" class="whs14">
+<p><img src="pics/circle_simple_before.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td>
+<td width="33.333%" class="whs15">
+<p><img src="pics/circle_simple_after.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td>
+<td width="33.333%" class="whs16">
+<p><img src="pics/circle_angles_after.png" x-maintain-ratio="TRUE" width="389px" height="334px" border="0" class="img_whs9"></td></tr>
+
+<tr valign="top" class="whs6">
+<td width="33.333%" class="whs17">
+<p>The left image shows a path mesh built on a closed edge (circle).</td>
+<td width="33.333%" class="whs18">
+<p>The central image shows the result of extrusion of both faces of the 
+ initial mesh. Note, that no sewing has been done, so, there are six coincident 
+ nodes and two coincident faces in the resulting mesh.</td>
+<td width="33.333%" class="whs19">
+<p>The same, but using angles {45, -45, 45, -45, 45, -45, 45, -45}</td></tr>
+</table>
+
+<p class="whs12">&nbsp;</p>
 
 <p>&nbsp;</p>
 
 <p class=TODO>To use Extrusion along a path:</p>
 
-<p class="whs8">1. From the <span style="font-weight: bold;"><B>Modification 
+<p class="whs12">1. From the <span style="font-weight: bold;"><B>Modification 
  </B></span>menu choose the <span style="font-weight: bold;"><B>Extrusion along 
- a path </B></span>item or click <img src="image101.gif" width="27px" height="24px" border="0" class="img_whs9"> button in the toolbar. The 
+ a path </B></span>item or click <img src="image101.gif" width="27px" height="24px" border="0" class="img_whs1"> button in the toolbar. The 
  following dialog box will appear:</p>
 
-<p class="whs8">&nbsp;</p>
+<p class="whs12">&nbsp;</p>
 
 <p class=TODO
-       style="margin-left: 80px;"><img src="pics/a-extusionalongapath2.png" x-maintain-ratio="TRUE" width="434px" height="541px" border="0" class="img_whs10"></p>
+       style="margin-left: 80px;"><img src="pics/extrusion1.png" x-maintain-ratio="TRUE" width="441px" height="541px" border="0" class="img_whs22"></p>
 
-<p class="whs8">&nbsp;</p>
+<p class="whs12">&nbsp;</p>
 
-<p class="whs8">2. In the dialog box you should &nbsp;</p>
+<p class="whs12">2. In the dialog box you should &nbsp;</p>
 
-<ul type="disc" class="whs11">
+<ul type="disc" class="whs3">
        
-       <li class=kadov-p><p class="whs12">select the type of 
+       <li class=kadov-p><p class="whs23">select the type of 
  elements which will be extruded (1D or 2D),</p></li>
        
-       <li class=kadov-p><p class="whs12">specify the IDs of 
- the elements which will be extruded by selecting them in the 3D viewer 
- or <span style="font-weight: bold;"><B>Select the whole mesh, submesh or 
- grou</B></span>p,</p></li>
+       <li class=kadov-p><p class="whs23">specify the <span style="font-weight: bold;"><B>IDs 
+ of the elements</B></span> which will be extruded by selecting them in the 
+ 3D viewer or <span style="font-weight: bold;"><B>Select the whole mesh, submesh 
+ or group</B></span>,</p></li>
+       
+       <li class=kadov-p><p class="whs23">define the <span style="font-weight: bold;"><B>Path</B></span> 
+ along which the elements will be extruded, </p></li>
+</ul>
+
+<p class="whs24">Path definition consists of several elements 
+ </p>
+
+<ul type="disc" class="whs3">
+       
+       <li class=kadov-p><p class="whs25">Mesh 
+ - <span style="font-weight: normal;">containing a 1D sub-mesh on the edge, 
+ along which proceeds the extrusion.</span></p></li>
+       
+       <li class=kadov-p><p class="whs25">Shape 
+ (edge) - <span style="font-weight: normal;">as the mesh can be complex, 
+ the edge is used to define the sub-mesh for the path.</span></p></li>
        
-       <li class=kadov-p><p class="whs12">specify the path along 
- which the elements will be extruded, for this you should specify the <span 
- style="font-weight: bold;"><B>Mesh</B></span>, the <span style="font-weight: bold;"><B>Shape</B></span>, 
- and the <span style="font-weight: bold;"><B>Start point</B></span> for the extrusion. 
- </p></li>
+       <li class=kadov-p><p class="whs25">Start 
+ node - <span style="font-weight: normal;">&nbsp;the 
+ first or the last node on the edge. It is used to define the direction 
+ of extrusion.</span></p></li>
 </ul>
 
-<p class="whs8">&nbsp;</p>
+<p class="whs12">&nbsp;</p>
 
-<p class="whs8">3. There are two optional parameters, which 
+<p class="whs12">3. There are two optional parameters, which 
  can be very useful.</p>
 
-<ul type="disc" class="whs11">
+<ul type="disc" class="whs3">
        
-       <li class=kadov-p><p class="whs12">If the path of extrusion 
+       <li class=kadov-p><p class="whs23">If the path of extrusion 
  is curvilinear, at each iteration the extruded shape is rotated to keep 
  its initial angularity to the curve. By default, the <span style="font-weight: bold;"><B>Base 
point</B></span> around which the shape is rotated is the mass center of the 
Point</B></span> around which the shape is rotated is the mass center of the 
  shape, however, you can specify any point as the <span style="font-weight: bold;"><B>Base 
  Point</B></span> and the shape will be rotated with respect to this point.</p></li>
        
-       <li class=kadov-p><p class="whs12">The shape can also 
+       <li class=kadov-p><p class="whs23">The shape can also 
  be rotated around the path to get the resulting mesh in a helical fashion. 
- At the picture above we see both &quot;oblique-angled&quot; and &quot;right-angled&quot; 
- mesh elements because <span style="font-weight: bold;"><B>Rotation Angles</B></span> 
- have not been set for all iterations. You set the values of the angles 
- at the right and add them to the list of angles at the left by pressing 
- the <img src="image105.gif" width="26px" height="25px" border="0" class="img_whs13"> button and remove the values from the list by pressing 
- the <img src="image106.gif" width="29px" height="28px" border="0" class="img_whs14"> button. </p></li>
+ You can set the values of angles at the right, add them to the list of 
+ angles at the left by pressing the <img src="image105.gif" width="26px" height="25px" border="0" class="img_whs26"> button and remove them 
+ from the list by pressing the <img src="image106.gif" width="29px" height="28px" border="0" class="img_whs27"> button. </p></li>
 </ul>
 
-<p class="whs8">4. Click the <span style="font-weight: bold;"><B>Apply 
- </B></span>or <span style="font-weight: bold;"><B>OK </B></span>button.</p>
+<p class="whs12">4. Click the <span style="font-weight: bold;"><B>Apply 
+ </B></span>or <span style="font-weight: bold;"><B>OK </B></span>button. Mesh edges 
+ will be extruded into faces, faces into volumes. The external surface 
+ of the resulting 3d mesh (if faces have been extruded) is covered with 
+ faces, and corners with edges. If the path is closed, the resulting mesh 
+ can contain duplicated nodes and faces, because no sewing is done.</p>
 
-<p class="whs8">&nbsp;</p>
+<p class="whs12">&nbsp;</p>
 
 <p>&nbsp;<span style="font-weight: bold;"><B>See 
  Also</B></span> a sample TUI Script of an <a href="modifying_meshes.htm#bookmark10">Extrusion 
index 5d83de11eed26e3a1c6ec127c9a18c77ab9bfe53..5cfa16047fd4cc814feb5b7d7a2f4b183cc6b62f 100755 (executable)
@@ -93,8 +93,8 @@ if (window.writeIntopicBar)
 <h1>Importing and exporting meshes</h1>
 
 <p><img src="../i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs1"> In MESH there is a functionality allowing importation/exportation 
- of meshes from <span style="font-weight: bold;"><B>MED</B></span>, <span style="font-weight: bold;"><B>UNV</B></span> 
- format files. </p>
+ of meshes from <span style="font-weight: bold;"><B>MED</B></span> and <span style="font-weight: bold;"><B>UNV 
</B></span>(I-DEAS 10) format files. </p>
 
 <p>&nbsp;</p>
 
index 143be3035a367a8b543acf89de89ec1439cf8e97..ba562367bbcac20ff230e65d9eb44e9d7edb080c 100755 (executable)
@@ -7,20 +7,23 @@
 <meta http-equiv="content-type" content="text/html; charset=windows-1252">
 <meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style type="text/css">
 <!--
-p.whs1 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs1 { margin-top:0pt; margin-bottom:0pt; font-weight:bold; color:#ff0000; }
 p.whs2 { margin-top:0pt; margin-bottom:0pt; }
-img_whs3 { border:none; width:430px; height:391px; float:none; border-style:none; }
-img_whs4 { border:none; float:none; width:463px; height:417px; border-style:none; }
-img_whs5 { border:none; width:541px; height:417px; float:none; border-style:none; }
-img_whs6 { border:none; width:394px; height:425px; float:none; border-style:none; }
-img_whs7 { border:none; float:none; width:368px; height:379px; border-style:none; }
-img_whs8 { border:none; float:none; width:344px; height:381px; border-style:none; }
-img_whs9 { border:none; width:314px; height:351px; float:none; border-style:none; }
-img_whs10 { border:none; float:none; width:319px; height:351px; border-style:none; }
-img_whs11 { border:none; float:none; width:304px; height:352px; border-style:none; }
-img_whs12 { border:none; width:318px; height:355px; float:none; border-style:none; }
-img_whs13 { border:none; float:none; width:318px; height:355px; border-style:none; }
-img_whs14 { border:none; float:none; width:320px; height:354px; border-style:none; }
+p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs4 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
+img_whs5 { border:none; width:430px; height:391px; float:none; border-style:none; }
+p.whs6 { margin-top:0pt; margin-bottom:0pt; color:#ff0000; font-weight:bold; }
+img_whs7 { border:none; float:none; width:463px; height:417px; border-style:none; }
+img_whs8 { border:none; width:541px; height:417px; float:none; border-style:none; }
+img_whs9 { border:none; width:394px; height:425px; float:none; border-style:none; }
+img_whs10 { border:none; float:none; width:368px; height:379px; border-style:none; }
+img_whs11 { border:none; float:none; width:344px; height:381px; border-style:none; }
+img_whs12 { border:none; width:314px; height:351px; float:none; border-style:none; }
+img_whs13 { border:none; float:none; width:319px; height:351px; border-style:none; }
+img_whs14 { border:none; float:none; width:304px; height:352px; border-style:none; }
+img_whs15 { border:none; width:318px; height:355px; float:none; border-style:none; }
+img_whs16 { border:none; float:none; width:318px; height:355px; border-style:none; }
+img_whs17 { border:none; float:none; width:320px; height:354px; border-style:none; }
 -->
 </style><script type="text/javascript" language="JavaScript">
 <!--
@@ -29,6 +32,9 @@ if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
   var strNSS = "<style type='text/css'>";
   strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";
   strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";
+  strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
+  strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";
+  strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
   strNSS +="</style>";
   document.write(strNSS);
 }
@@ -97,871 +103,741 @@ if (window.writeIntopicBar)
 
 <h3><a name=bookmark>Create a Standalone Group</a></h3>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs1"># Attention! This script has been written 
+ using the old approach basing on direct usage of SMESH idl interface.</p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to create a standalone group. </p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs2">&nbsp;</p>
+
+<p class="whs3">import SMESH</p>
+
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs1">smesh &nbsp;= 
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">smesh &nbsp;= 
  SMESH_mechanic.smesh</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
+<p class="whs3">mesh &nbsp;&nbsp;= 
  SMESH_mechanic.mesh</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
-
-<p class="whs1">&nbsp;</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs4"># Get ids of all faces 
+ with area &gt; 100 </p>
 
-<p class="whs2"># Criterion : AREA &gt; 
- 100</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
+<p class="whs3">aPredicate.SetNumFunctor( 
  aFunctor )</p>
 
-<p class="whs1">aPredicate.SetMargin( 
+<p class="whs3">aPredicate.SetMargin( 
  100 )</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">aFilter.SetPredicate( 
+<p class="whs3">aFilter.SetPredicate( 
  aPredicate )</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
+<p class="whs3">anIds = aFilter.GetElementsId( 
  mesh )</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"># print the result</p>
-
-<p class="whs1">print &quot;Criterion: 
- Area &gt; 100 Nb = &quot;, len( anIds )</p>
-
-<p class="whs1">for i in range( 
- len( anIds ) ):</p>
-
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
-
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
 <p class="whs2"># create a group consisting 
  of faces with area &gt; 100</p>
 
-<p class="whs1">aGroup = mesh.CreateGroup( 
+<p class="whs3">aGroup = mesh.CreateGroup( 
  SMESH.FACE, &quot;Area &gt; 100&quot; )</p>
 
-<p class="whs1">aGroup.Add( anIds 
+<p class="whs3">aGroup.Add( anIds 
  )</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
  </p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"><img src="pics/create_group.png" x-maintain-ratio="TRUE" width="430px" height="391px" border="0" class="img_whs3"></p>
+<p class="whs2"><img src="pics/create_group.png" x-maintain-ratio="TRUE" width="430px" height="391px" border="0" class="img_whs5"></p>
 
 <h3><a name=bookmark5>Create a Group on Geometry</a></h3>
 
-<p class="whs1">import salome</p>
+<p class="whs3">import salome</p>
 
-<p class="whs1">import geompy</p>
+<p class="whs3">import geompy</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">import smesh</p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">import StdMeshers</p>
+<p class="whs4"># create a box</p>
 
-<p class="whs1">&nbsp;</p>
-
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
- &quot;SMESH&quot;)</p>
-
-<p class="whs2">&nbsp;</p>
-
-<p class="whs2"># create a box</p>
-
-<p class="whs1">box = geompy.MakeBox(0., 
+<p class="whs3">box = geompy.MakeBox(0., 
  0., 0., 100., 100., 100.)</p>
 
-<p class="whs2">&nbsp;</p>
-
-<p class="whs2"># add the box to the study</p>
-
-<p class="whs1">idbox = geompy.addToStudy(box, 
+<p class="whs3">geompy.addToStudy(box, 
  &quot;box&quot;)</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># add the first face of 
- the box to the study</p>
+<p class="whs4"># add the first face 
of the box to the study</p>
 
-<p class="whs1">subShapeList = geompy.SubShapeAll(box, 
+<p class="whs3">subShapeList = geompy.SubShapeAll(box, 
  geompy.ShapeType[&quot;FACE&quot;])</p>
 
-<p class="whs1">face = subShapeList[0]</p>
+<p class="whs3">face = subShapeList[0]</p>
 
-<p class="whs1">name = geompy.SubShapeName(face
box)</p>
+<p class="whs3">geompy.addToStudyInFather(box
face, &quot;face 1&quot;)</p>
 
-<p class="whs1">idface = geompy.addToStudyInFather(box, 
- face, name)</p>
-
-<p class="whs2">&nbsp;</p>
-
-<p class="whs2"># create a hypothesis</p>
-
-<p class="whs1">numberOfSegments 
- = 7</p>
-
-<p class="whs1">hypNbSeg = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs1">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>
-
-<p class="whs2">&nbsp;</p>
-
-<p class="whs2"># create algorithms</p>
-
-<p class="whs1">regular1D = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs1">quad2D = smesh.CreateHypothesis(&quot;Quadrangle_2D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs2">&nbsp;</p>
-
-<p class="whs2"># initialize a mesh with 
- the box</p>
-
-<p class="whs1">mesh = smesh.CreateMesh(box)</p>
-
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># add hypotheses and algorithm
to the box</p>
+<p class="whs4"># create group of edge
on the face</p>
 
-<p class="whs1">mesh.AddHypothesis(box,hypNbSeg)</p>
+<p class="whs3">aGeomGroupE = geompy.CreateGroup(face, 
+ geompy.ShapeType[&quot;EDGE&quot;])</p>
 
-<p class="whs1">mesh.AddHypothesis(box,regular1D)</p>
+<p class="whs3">geompy.AddObject(aGeomGroupE, 
+ 3)</p>
 
-<p class="whs1">mesh.AddHypothesis(box,quad2D)</p>
+<p class="whs3">geompy.AddObject(aGeomGroupE, 
+ 6)</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">geompy.AddObject(aGeomGroupE, 
+ 8)</p>
 
-<p class="whs2"># compute the mesh</p>
+<p class="whs3">geompy.AddObject(aGeomGroupE, 
+ 10)</p>
 
-<p class="whs1">ret = smesh.Compute(mesh,box)</p>
+<p class="whs3">geompy.addToStudyInFather(face, 
+ aGeomGroupE, &quot;Group of Edges&quot;)</p>
 
-<p class="whs1">if ret == 0:</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
&quot;probleme when computing the mesh&quot;</p>
+<p class="whs4"># create quadrangle 
2D mesh on the box</p>
 
-<p class="whs1">else:</p>
+<p class="whs3">quadra = smesh.Mesh(box, 
+ &quot;Box : quadrangle 2D mesh&quot;)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;Computation succeded&quot;</p>
+<p class="whs3">algo1D = quadra.Segment()</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">quadra.Quadrangle()</p>
 
-<p class="whs2"># create geometry groups 
- on the face</p>
+<p class="whs3">algo1D.NumberOfSegments(7)</p>
 
-<p class="whs1">aGeomGroup1 = geompy.CreateGroup(face, 
- geompy.ShapeType[&quot;FACE&quot;])</p>
-
-<p class="whs1">geompy.AddObject(aGeomGroup1, 
- 1)</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
-
-<p class="whs1">aGeomGroup2 = geompy.CreateGroup(face, 
- geompy.ShapeType[&quot;EDGE&quot;])</p>
+<p class="whs4"># compute the mesh</p>
 
-<p class="whs1">geompy.AddObject(aGeomGroup2, 
- 3)</p>
+<p class="whs3">quadra.Compute()</p>
 
-<p class="whs1">geompy.AddObject(aGeomGroup2, 
- 6)</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">geompy.AddObject(aGeomGroup2, 
8)</p>
+<p class="whs4"># create SMESH group 
on the face with name &quot;SMESHGroup1&quot;</p>
 
-<p class="whs1">geompy.AddObject(aGeomGroup2
10)</p>
+<p class="whs3">aSmeshGroup1 = quadra.Group(face
&quot;SMESHGroup1&quot;)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">geompy.addToStudy(aGeomGroup1, 
&quot;Group on Faces&quot;)</p>
+<p class="whs4"># create SMESH group 
on &lt;aGeomGroupE&gt; with default name</p>
 
-<p class="whs1">geompy.addToStudy(aGeomGroup2, 
- &quot;Group on Edges&quot;)</p>
+<p class="whs3">aSmeshGroup2 = quadra.Group(aGeomGroupE)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"># create SMESH groups</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
+ </p>
 
-<p class="whs1">aSmeshGroup1 = mesh.CreateGroupFromGEOM(SMESH.FACE, 
- &quot;SMESHGroup1&quot;,</p>
+<h3><a name=bookmark1>Edit a Group</a></h3>
 
-<p class="whs1">aGeomGroup1)</p>
+<p class="whs6"># Attention! This script has been written 
+ using the old approach basing on direct usage of SMESH idl interface.</p>
 
-<p class="whs1">aSmeshGroup2 = mesh.CreateGroupFromGEOM(SMESH.EDGE, 
&quot;SMESHGroup2&quot;, aGeomGroup2)</p>
+<p class="whs6"># For the moment smesh package doesn't 
provide methods to edit a group. </p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs6"># In the next SALOME version the scripts 
+ will be updated to use only the commands from smesh package.</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- &nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">import SMESH</p>
 
-<h3><a name=bookmark1>Edit a Group</a></h3>
-
-<p class="whs1">import SMESH</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
-
-<p class="whs1">smesh &nbsp;= 
+<p class="whs3">smesh &nbsp;= 
  SMESH_mechanic.smesh</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
+<p class="whs3">mesh &nbsp;&nbsp;= 
  SMESH_mechanic.mesh</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs4"># Get ids of all faces 
+ with area &gt; 35</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
 
-<p class="whs2"># Criterion : AREA &gt; 
- 20</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
- aFunctor )</p>
+<p class="whs3">aPredicate.SetMargin(35.)</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 30 )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">print &quot;Criterion: 
+ Area &gt; 35, Nb = &quot;, len(anIds)</p>
 
-<p class="whs2"># create a group by adding 
- elements with area &gt; 20</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aGroup = mesh.CreateGroup( 
SMESH.FACE, &quot;Area &gt; 20&quot; )</p>
+<p class="whs4"># create a group by 
adding elements with area &gt; 35</p>
 
-<p class="whs1">aGroup.Add( anIds 
- )</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE, 
&quot;Area &gt; 35&quot;)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aGroup.Add(anIds)</p>
 
-<p class="whs1">print &quot;Criterion: 
- Area &gt; 20 Nb = &quot;, len( anIds )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">for i in range( 
len( anIds ) ):</p>
+<p class="whs4"># Get ids of all faces 
with area &gt; 40</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
 
-<p class="whs2"># Criterion : AREA &gt; 
- 60</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">aPredicate.SetMargin(40.)</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
- aFunctor )</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">aPredicate.SetMargin( 
60 )</p>
+<p class="whs3">print &quot;Criterion: 
Area &gt; 40, Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs4"># create a group of 
+ elements with area [35; 40] by removing elements with area &gt; 40 from 
+ group aGroup</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">aGroup.Remove(anIds)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs4"># print the result</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">aGroupElemIDs = 
+ aGroup.GetListOfID()</p>
 
-<p class="whs2"># create a group of elements 
- with area [20; 60] by removing elements with area &gt; 60 from &nbsp;group 
- aGroup </p>
+<p class="whs3">print &quot;Criterion: 
+ 35 &lt; Area &lt; 40, Nb = &quot;, len(aGroupElemIDs)</p>
 
-<p class="whs1">aGroup.Remove(anIds)</p>
+<p class="whs3">j = 1</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">for i in range(len(aGroupElemIDs)):</p>
 
-<p class="whs2"># print the result</p>
+<p class="whs3">&nbsp;&nbsp;if 
+ j &gt; 20: j = 1; print &quot;&quot;</p>
 
-<p class="whs1">aGroupElemIDs = 
- aGroup.GetListOfID()</p>
+<p class="whs3">&nbsp;&nbsp;print 
+ aGroupElemIDs[i],</p>
 
-<p class="whs1">print &quot;Criterion: 
20 &lt; Area &lt; 60 = &quot;, len( aGroupElemIDs )</p>
+<p class="whs3">&nbsp;&nbsp;j 
= j + 1</p>
 
-<p class="whs1">for i in range( 
- len( aGroupElemIDs ) ):</p>
+<p class="whs3">&nbsp;&nbsp;pass</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- aGroupElemIDs[ i ]</p>
+<p class="whs3">print &quot;&quot;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
+<p class="whs3">salome.sg.updateObjBrowser(1) 
  </p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"><img src="pics/editing_groups1.png" x-maintain-ratio="TRUE" width="463px" height="417px" border="0" class="img_whs4"> &nbsp;<img src="pics/editing_groups2.png" x-maintain-ratio="TRUE" width="541px" height="417px" border="0" class="img_whs5"></p>
+<p class="whs2"><img src="pics/editing_groups1.png" x-maintain-ratio="TRUE" width="463px" height="417px" border="0" class="img_whs7"> &nbsp;<img src="pics/editing_groups2.png" x-maintain-ratio="TRUE" width="541px" height="417px" border="0" class="img_whs8"></p>
 
 <h3><a name=bookmark2>Union of two groups</a></h3>
 
-<p class="whs1">import SMESH</p>
+<p class="whs1"># Attention! This script has been written 
+ using the old approach basing on direct usage of SMESH idl interface.</p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to create a union of two groups. </p>
 
-<p class="whs1">&nbsp;</p>
-
-<p class="whs1">smesh &nbsp;= 
- SMESH_mechanic.smesh</p>
-
-<p class="whs1">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import 
+ SMESH</span></p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># Criterion : AREA &gt; 
- 20</p>
-
-<p class="whs2">&nbsp;</p>
+<p class="whs3">smesh &nbsp;= 
+ SMESH_mechanic.smesh</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">mesh &nbsp;&nbsp;= 
+ SMESH_mechanic.mesh</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
- aFunctor )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 20 )</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs4"># Criterion : AREA 
+ &gt; 20</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate.SetMargin(20.)</p>
 
-<p class="whs2"># create a group by adding 
- elements with area &gt; 20</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aGroup1 = mesh.CreateGroup( 
- SMESH.FACE, &quot;Area &gt; 20&quot; )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">aGroup1.Add( anIds 
- )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">print &quot;Criterion: 
- Area &gt; 20 Nb = &quot;, len( anIds )</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">for i in range( 
len( anIds ) ):</p>
+<p class="whs3">print &quot;Criterion: 
Area &gt; 20, Nb = &quot;, len( anIds )</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs4"># create a group by 
+ adding elements with area &gt; 20</p>
 
-<p class="whs2"># Criterion : AREA = 20</p>
+<p class="whs3">aGroup1 = mesh.CreateGroup(SMESH.FACE, 
+ &quot;Area &gt; 20&quot;)</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">aGroup1.Add(anIds)</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateEqualTo()</p>
+<p class="whs4"># Criterion : AREA 
+ = 20</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
- aFunctor )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 20 )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateEqualTo()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aPredicate.SetMargin(20.)</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># create a group by adding 
- elements with area &gt; 20</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">aGroup2 = mesh.CreateGroup( 
- SMESH.FACE, &quot;Area = 20&quot; )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aGroup2.Add( anIds 
- )</p>
+<p class="whs3">print &quot;Criterion: 
Area = 20, Nb = &quot;, len( anIds )</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">print &quot;Criterion: 
Area = 20 Nb = &quot;, len( anIds )</p>
+<p class="whs4"># create a group by 
adding elements with area = 20</p>
 
-<p class="whs1">for i in range
len( anIds ) ):</p>
+<p class="whs3">aGroup2 = mesh.CreateGroup
SMESH.FACE, &quot;Area = 20&quot; )</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">aGroup2.Add(anIds)</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># create union group : 
- area &gt;= 20</p>
+<p class="whs4"># create union group 
area &gt;= 20</p>
 
-<p class="whs1">aGroup3 = mesh.UnionGroups(aGroup1, 
+<p class="whs3">aGroup3 = mesh.UnionGroups(aGroup1, 
  aGroup2, &quot;Area &gt;= 20&quot;)</p>
 
-<p class="whs1">print &quot;Criterion: 
- Area &gt;= 20 Nb = &quot;, len( aGroup3.GetListOfID() )</p>
+<p class="whs3">print &quot;Criterion: 
+ Area &gt;= 20, Nb = &quot;, len(aGroup3.GetListOfID())</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># Criterion : AREA &lt; 
- 20</p>
+<p class="whs4"># Criterion : AREA 
&lt; 20</p>
 
-<p class="whs2">&nbsp;</p>
-
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
-
-<p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>
-
-<p class="whs1">aPredicate.SetNumFunctor( 
- aFunctor )</p>
-
-<p class="whs1">aPredicate.SetMargin( 
- 20 )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateLessThan()</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">aPredicate.SetMargin(20.)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs2"># create a group by adding 
- elements with area &lt; 20</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aGroup4 = mesh.CreateGroup( 
- SMESH.FACE, &quot;Area &lt; 20&quot; )</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">aGroup4.Add( anIds 
- )</p>
+<p class="whs3">print &quot;Criterion: 
Area &lt; 20, Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">print &quot;Criterion: 
Area &lt; 20 Nb = &quot;, len( anIds )</p>
+<p class="whs4"># create a group by 
adding elements with area &lt; 20</p>
 
-<p class="whs1">for i in range( 
len( anIds ) ):</p>
+<p class="whs3">aGroup4 = mesh.CreateGroup(SMESH.FACE, 
&quot;Area &lt; 20&quot;)</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">aGroup4.Add(anIds)</p>
 
-<p class="whs2">&nbsp;&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># create union group : 
- area &gt;= 20 and area &lt; 20</p>
+<p class="whs4"># create union group 
area &gt;= 20 and area &lt; 20</p>
 
-<p class="whs1">aGroup5 = mesh.UnionGroups(aGroup3, 
+<p class="whs3">aGroup5 = mesh.UnionGroups(aGroup3, 
  aGroup4, &quot;Any Area&quot;)</p>
 
-<p class="whs1">print &quot;Criterion: 
- Any Area Nb = &quot;, len( aGroup5.GetListOfID() )</p>
+<p class="whs3">print &quot;Criterion: 
+ Any Area, Nb = &quot;, len(aGroup5.GetListOfID())</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">salome.sg.updateObjBrowser(1) 
+<p class="whs3">salome.sg.updateObjBrowser(1) 
  </p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1"><img src="pics/union_groups1.png" x-maintain-ratio="TRUE" width="394px" height="425px" border="0" class="img_whs6"></p>
+<p class="whs3"><img src="pics/union_groups1.png" x-maintain-ratio="TRUE" width="394px" height="425px" border="0" class="img_whs9"></p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1"><img src="pics/union_groups2.png" x-maintain-ratio="TRUE" width="368px" height="379px" border="0" class="img_whs7"> <img src="pics/union_groups3.png" x-maintain-ratio="TRUE" width="344px" height="381px" border="0" class="img_whs8"></p>
+<p class="whs3"><img src="pics/union_groups2.png" x-maintain-ratio="TRUE" width="368px" height="379px" border="0" class="img_whs10"> <img src="pics/union_groups3.png" x-maintain-ratio="TRUE" width="344px" height="381px" border="0" class="img_whs11"></p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
 <h3><a name=bookmark3>Intersection of two groups</a></h3>
 
-<p class="whs1">import SMESH</p>
+<p class="whs6"># Attention! This script has been written 
+ using the old approach basing on direct usage of SMESH idl interface.</p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs6"># For the moment smesh package doesn't 
+ provide methods to create an intersection of two groups. </p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs6"># In the next SALOME version the scripts 
+ will be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">smesh &nbsp;= 
- SMESH_mechanic.smesh</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3">smesh &nbsp;= 
+ SMESH_mechanic.smesh</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">mesh &nbsp;&nbsp;= 
+ SMESH_mechanic.mesh</p>
 
-<p class="whs2"># Criterion : AREA &gt; 
- 20</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
aFunctor )</p>
+<p class="whs4"># Criterion : AREA 
&gt; 20</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 20 )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">aPredicate.SetMargin(20.)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs2"># create a group by adding 
- elements with area &gt; 20</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aGroup1 = mesh.CreateGroup( 
- SMESH.FACE, &quot;Area &gt; 20&quot; )</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">aGroup1.Add( anIds 
- )</p>
-
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">print &quot;Criterion: 
- Area &gt; 20 Nb = &quot;, len( anIds )</p>
+<p class="whs3">print &quot;Criterion: 
+ Area &gt; 20, Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">for i in range( 
- len( anIds ) ):</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs4"># create a group by 
+ adding elements with area &gt; 20</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aGroup1 = mesh.CreateGroup(SMESH.FACE, 
+ &quot;Area &gt; 20&quot;)</p>
 
-<p class="whs2"># Criterion : AREA &lt; 
- 60</p>
-
-<p class="whs2">&nbsp;</p>
+<p class="whs3">aGroup1.Add(anIds)</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>
+<p class="whs4"># Criterion : AREA 
+ &lt; 60</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
- aFunctor )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 60 )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateLessThan()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aPredicate.SetMargin(60)</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># create a group by adding 
- elements with area &lt; 60</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">aGroup2 = mesh.CreateGroup( 
- SMESH.FACE, &quot;Area &lt; 60&quot; )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aGroup2.Add( anIds 
- )</p>
+<p class="whs3">print &quot;Criterion: 
Area &lt; 60, Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">print &quot;Criterion: 
Area &lt; 60 Nb = &quot;, len( anIds )</p>
+<p class="whs4"># create a group by 
adding elements with area &lt; 60</p>
 
-<p class="whs1">for i in range( 
len( anIds ) ):</p>
+<p class="whs3">aGroup2 = mesh.CreateGroup(SMESH.FACE, 
&quot;Area &lt; 60&quot;)</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">aGroup2.Add(anIds)</p>
 
-<p class="whs2">&nbsp;&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># create an intersection 
+<p class="whs4"># create an intersection 
  of groups : 20 &lt; area &lt; 60</p>
 
-<p class="whs1">aGroup3 = mesh.IntersectGroups(aGroup1, 
+<p class="whs3">aGroup3 = mesh.IntersectGroups(aGroup1, 
  aGroup2, &quot;20 &lt; Area &lt; 60&quot;)</p>
 
-<p class="whs1">print &quot;Criterion: 
- 20 &lt; Area &lt; 60 Nb = &quot;, len( aGroup3.GetListOfID() )</p>
+<p class="whs3">print &quot;Criterion: 
+ 20 &lt; Area &lt; 60, Nb = &quot;, len(aGroup3.GetListOfID())</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
+<p class="whs3">salome.sg.updateObjBrowser(1) 
  </p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"><img src="pics/intersect_groups1.png" x-maintain-ratio="TRUE" width="314px" height="351px" border="0" class="img_whs9"> &nbsp;<img src="pics/intersect_groups2.png" x-maintain-ratio="TRUE" width="319px" height="351px" border="0" class="img_whs10"> &nbsp;<img src="pics/intersect_groups3.png" x-maintain-ratio="TRUE" width="304px" height="352px" border="0" class="img_whs11"></p>
+<p class="whs2"><img src="pics/intersect_groups1.png" x-maintain-ratio="TRUE" width="314px" height="351px" border="0" class="img_whs12"> &nbsp;<img src="pics/intersect_groups2.png" x-maintain-ratio="TRUE" width="319px" height="351px" border="0" class="img_whs13"> &nbsp;<img src="pics/intersect_groups3.png" x-maintain-ratio="TRUE" width="304px" height="352px" border="0" class="img_whs14"></p>
 
 <h3><a name=bookmark4>Cut of two groups</a></h3>
 
-<p class="whs1">import SMESH</p>
+<p class="whs1"># Attention! This script has been written 
+ using the old approach basing on direct usage of SMESH idl interface.</p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to create a cut of two groups. </p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">smesh &nbsp;= 
- SMESH_mechanic.smesh</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3">smesh &nbsp;= 
+ SMESH_mechanic.smesh</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">mesh &nbsp;&nbsp;= 
+ SMESH_mechanic.mesh</p>
 
-<p class="whs2"># Criterion : AREA &gt; 
- 20</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
aFunctor )</p>
+<p class="whs4"># Criterion : AREA 
&gt; 20</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 20 )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">aPredicate.SetMargin(20.)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs2"># create a group by adding 
- elements with area &gt; 20</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aGroupMain = mesh.CreateGroup( 
- SMESH.FACE, &quot;Area &gt; 20&quot; )</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">aGroupMain.Add( 
anIds )</p>
+<p class="whs3">print &quot;Criterion: 
Area &gt; 20, Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">print &quot;Criterion: 
Area &gt; 20 Nb = &quot;, len( anIds )</p>
+<p class="whs4"># create a group by 
adding elements with area &gt; 20</p>
 
-<p class="whs1">for i in range( 
len( anIds ) ):</p>
+<p class="whs3">aGroupMain = mesh.CreateGroup(SMESH.FACE, 
&quot;Area &gt; 20&quot;)</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">aGroupMain.Add(anIds)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># Criterion : AREA &lt; 
- 60</p>
+<p class="whs4"># Criterion : AREA 
&lt; 60</p>
 
-<p class="whs2">&nbsp;</p>
-
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
-
-<p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>
-
-<p class="whs1">aPredicate.SetNumFunctor( 
- aFunctor )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 60 )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateLessThan()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aPredicate.SetMargin(60.)</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># create a group by adding 
- elements with area &lt; 60</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">aGroupTool = mesh.CreateGroup( 
- SMESH.FACE, &quot;Area &lt; 60&quot; )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aGroupTool.Add( 
anIds )</p>
+<p class="whs3">print &quot;Criterion: 
Area &lt; 60, Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">print &quot;Criterion: 
Area &lt; 60 Nb = &quot;, len( anIds )</p>
+<p class="whs4"># create a group by 
adding elements with area &lt; 60</p>
 
-<p class="whs1">for i in range( 
len( anIds ) ):</p>
+<p class="whs3">aGroupTool = mesh.CreateGroup(SMESH.FACE, 
&quot;Area &lt; 60&quot;)</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">aGroupTool.Add(anIds)</p>
 
-<p class="whs2">&nbsp;&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># create an intersection 
of groups : area &gt;= 60</p>
+<p class="whs4"># create a cut of groups 
+ : area &gt;= 60</p>
 
-<p class="whs1">aGroupRes = mesh.CutGroups(aGroupMain, 
+<p class="whs3">aGroupRes = mesh.CutGroups(aGroupMain, 
  aGroupTool, &quot;Area &gt;= 60&quot;)</p>
 
-<p class="whs1">print &quot;Criterion: 
- Area &gt;= 60 Nb = &quot;, len( aGroupRes.GetListOfID() )</p>
-
-<p class="whs1">&nbsp;</p>
+<p class="whs3">print &quot;Criterion: 
+ Area &gt;= 60, Nb = &quot;, len(aGroupRes.GetListOfID())</p>
 
-<p class="whs1">salome.sg.updateObjBrowser(1) 
+<p class="whs3">salome.sg.updateObjBrowser(1) 
  </p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"><img src="pics/cut_groups1.png" x-maintain-ratio="TRUE" width="318px" height="355px" border="0" class="img_whs12"> &nbsp;<img src="pics/cut_groups2.png" x-maintain-ratio="TRUE" width="318px" height="355px" border="0" class="img_whs13"> &nbsp;<img src="pics/cut_groups3.png" x-maintain-ratio="TRUE" width="320px" height="354px" border="0" class="img_whs14"></p>
+<p class="whs2"><img src="pics/cut_groups1.png" x-maintain-ratio="TRUE" width="318px" height="355px" border="0" class="img_whs15"> &nbsp;<img src="pics/cut_groups2.png" x-maintain-ratio="TRUE" width="318px" height="355px" border="0" class="img_whs16"> &nbsp;<img src="pics/cut_groups3.png" x-maintain-ratio="TRUE" width="320px" height="354px" border="0" class="img_whs17"></p>
 
 <script type="text/javascript" language="javascript1.2">
 <!--
diff --git a/doc/salome/gui/SMESH/image102.gif b/doc/salome/gui/SMESH/image102.gif
deleted file mode 100755 (executable)
index be6a582..0000000
Binary files a/doc/salome/gui/SMESH/image102.gif and /dev/null differ
diff --git a/doc/salome/gui/SMESH/image104.gif b/doc/salome/gui/SMESH/image104.gif
deleted file mode 100755 (executable)
index 3c33fee..0000000
Binary files a/doc/salome/gui/SMESH/image104.gif and /dev/null differ
index 4e44b555e4994113d5d05f1bdc916434d03d0bfb..555fc7a69c8c028beda279c232d600a619c79ab4 100755 (executable)
@@ -12,15 +12,20 @@ LI.kadov-P {  }
 -->
 </style><style type="text/css">
 <!--
-p.whs1 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs1 { margin-top:0pt; margin-bottom:0pt; font-weight:bold; color:#ff0000; }
 p.whs2 { margin-top:0pt; margin-bottom:0pt; }
-p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
-h4.whs4 { margin-top:0pt; margin-bottom:0pt; }
-p.whs5 { margin-top:0.5pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
-p.whs6 { margin-top:0.5pt; margin-bottom:0pt; }
-p.whs7 { font-family:'Lucida Console' , monospace; }
-p.whs8 { font-family:'Times New Roman' , serif; }
-p.whs9 { margin-left:40px; font-family:'Lucida Console' , monospace; }
+p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs4 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
+h4.whs5 { margin-top:0pt; margin-bottom:0pt; }
+p.whs6 { margin-top:0.5pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs7 { margin-top:0.5pt; margin-bottom:0pt; }
+p.whs8 { margin-top:0.5pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
+p.whs9 { font-family:'Lucida Console' , monospace; }
+p.whs10 { font-family:'Times New Roman' , serif; }
+p.whs11 { margin-left:36px; font-family:'Lucida Console' , monospace; }
+p.whs12 { margin-left:36px; }
+p.whs13 { margin-left:192px; font-family:'Lucida Console' , monospace; }
+p.whs14 { font-family:'Lucida Console' , monospace; margin-left:0px; }
 -->
 </style><script type="text/javascript" language="JavaScript">
 <!--
@@ -30,9 +35,12 @@ if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
   strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";
   strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";
   strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
-  strNSS += "h4.whs4 {margin-top:1pt;margin-bottom:1pt; }";
-  strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";
+  strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";
+  strNSS += "h4.whs5 {margin-top:1pt;margin-bottom:1pt; }";
   strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
+  strNSS += "p.whs7 {margin-top:1pt;margin-bottom:1pt; }";
+  strNSS += "p.whs8 {margin-top:1pt;margin-bottom:1pt; }";
+  strNSS += "p.whs14 {margin-left:1pt; }";
   strNSS +="</style>";
   document.write(strNSS);
 }
@@ -101,1470 +109,1908 @@ if (window.writeIntopicBar)
 
 <h3><a name=bookmark>Adding Nodes and Elements</a></h3>
 
+<p class="whs1"># Attention! The scripts for Adding nodes 
+ and Elements &nbsp;have 
+ been written using the old approach basing on direct usage of SMESH idl 
+ interface.</p>
+
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to add nodes and elements. </p>
+
+<p class="whs2"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ In the next SALOME version the scripts will be updated to use only the 
+ commands from smesh package.</B></font></span></p>
+
 <h4>Add Node</h4>
 
-<p class="whs1">import SMESH</p>
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import 
+ SMESH</span></p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">smesh &nbsp;= 
- SMESH_mechanic.smesh</p>
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs4"># add node</p>
 
-<p class="whs2"># add node</p>
+<p class="whs3">new_id = aMeshEditor.AddNode(50, 
+ 10, 0)</p>
+
+<p class="whs3">print &quot;&quot;</p>
+
+<p class="whs3">if new_id == 0: 
+ print &quot;KO node addition.&quot;</p>
+
+<p class="whs3">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;New Node has been added with ID &quot;, new_id </p>
+
+<p class="whs3">&nbsp;</p>
+
+<h4>Add Edge</h4>
 
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import 
+ SMESH</span></p>
 
-<p class="whs1">if aMeshEditor.AddNode(50, 
- 10, 0) == 1:</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;Node addition is OK!&quot;</p>
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
+
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
+
+<p class="whs3">print &quot;&quot;</p>
 
-<p class="whs1">else:</p>
+<p class="whs3">&nbsp;</p>
+
+<p class="whs4"># add node</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
+<p class="whs3">n1 = aMeshEditor.AddNode(50, 
+ 10, 0)</p>
+
+<p class="whs3">if n1 == 0: print 
  &quot;KO node addition.&quot;</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">salome.sg.updateObjBrowser(1) 
- </p>
+<p class="whs4"># add edge</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">e1 = aMeshEditor.AddEdge([n1, 
+ 38])</p>
 
-<h4>Add Edge</h4>
+<p class="whs3">if e1 == 0: print 
+ &quot;KO edge addition.&quot;</p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs3">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;New Edge has been added with ID &quot;, e1 </p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<h4>Add Triangle</h4>
 
-<p class="whs1">smesh &nbsp;= 
- SMESH_mechanic.smesh</p>
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import 
+ SMESH</span></p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
+
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
+
+<p class="whs3">print &quot;&quot;</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs4"># add node</p>
+
+<p class="whs3">n1 = aMeshEditor.AddNode(50, 
+ 10, 0)</p>
+
+<p class="whs3">if n1 == 0: print 
+ &quot;KO node addition.&quot;</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs4"># add triangle</p>
+
+<p class="whs3">t1 = aMeshEditor.AddFace([n1, 
+ 38, 39])</p>
+
+<p class="whs3">if t1 == 0: print 
+ &quot;KO triangle addition.&quot;</p>
+
+<p class="whs3">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;New Triangle has been added with ID &quot;, t1 </p>
+
+<h4>Add Quadrangle</h4>
+
+<p class="whs3">import SMESH</p>
+
+<p class="whs3">import SMESH_mechanic</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
+
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
+
+<p class="whs3">print &quot;&quot;</p>
 
 <p class="whs2">&nbsp;</p>
 
 <p class="whs2"># add node</p>
 
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs3">n1 = aMeshEditor.AddNode(50, 
+ 10, 0)</p>
 
-<p class="whs1">if aMeshEditor.AddNode(50, 
10, 0) == 1:</p>
+<p class="whs3">if n1 == 0: print 
&quot;KO node addition.&quot;</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;Node addition is OK!&quot;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">else:</p>
+<p class="whs3">n2 = aMeshEditor.AddNode(40, 
+ 20, 0)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
+<p class="whs3">if n2 == 0: print 
  &quot;KO node addition.&quot;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># add edge</p>
+<p class="whs2"># add quadrangle</p>
 
-<p class="whs1">LastNodeId = mesh.NbNodes()</p>
+<p class="whs3">q1 = aMeshEditor.AddFace([n2, 
+ n1, 38, 39])</p>
 
-<p class="whs1">if aMeshEditor.AddEdge([LastNodeId, 
38]) == 1:</p>
+<p class="whs3">if q1 == 0: print 
&quot;KO quadrangle addition.&quot;</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;Edge addition is OK!&quot;</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">else: 
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;New Quadrangle has been added with ID &quot;, q1</span> </p>
 
-<p class="whs1">else:</p>
+<h4>Add Tetrahedron</h4>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;KO edge addition.&quot;</p>
+<p class="whs3">import SMESH </p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs1">salome.sg.updateObjBrowser(1) 
- </p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
 
-<h4>Add Triangle</h4>
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs3">print &quot;&quot;</p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs4"># add node</p>
 
-<p class="whs1">smesh &nbsp;= 
SMESH_mechanic.smesh</p>
+<p class="whs3">n1 = aMeshEditor.AddNode(50, 
10, 0)</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
SMESH_mechanic.mesh</p>
+<p class="whs3">if n1 == 0: print 
&quot;KO node addition.&quot;</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs4"># add tetrahedron</p>
 
-<p class="whs2"># add node</p>
+<p class="whs3">t1 = aMeshEditor.AddVolume([n1, 
+ 38, 39, 246])</p>
 
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs3">if t1 == 0: print 
+ &quot;KO tetrahedron addition.&quot;</p>
 
-<p class="whs1">if aMeshEditor.AddNode(50, 
- 10, 0) == 1:</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">else: 
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;New Tetrahedron has been added with ID &quot;, t1</span> </p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;Node addition is OK!&quot;</p>
+<h4>Add Hexahedron</h4>
 
-<p class="whs1">else:</p>
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import 
+ SMESH</span></p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;KO node addition.&quot;</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">LastNodeId = mesh.NbNodes()</p>
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
+
+<p class="whs3">print &quot;&quot;</p>
 
-<p class="whs2"># add triangle</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">if aMeshEditor.AddFace([LastNodeId, 
- 38, 39]) == 1:</p>
+<p class="whs4"># add nodes</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
&quot;Triangle addition is OK!&quot;</p>
+<p class="whs3">nId1 = aMeshEditor.AddNode(50, 
10, 0)</p>
 
-<p class="whs1">else:</p>
+<p class="whs3">nId2 = aMeshEditor.AddNode(47, 
+ 12, 0)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;KO triangle addition.&quot;</p>
+<p class="whs3">nId3 = aMeshEditor.AddNode(50, 
+ 10, 10)</p>
+
+<p class="whs3">nId4 = aMeshEditor.AddNode(47, 
+ 12, 10)</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">if nId1 == 0 or 
+ nId2 == 0 or nId3 == 0 or nId4 == 0: print &quot;KO node addition.&quot;</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs4"># add hexahedron</p>
+
+<p class="whs3">vId = aMeshEditor.AddVolume([nId2, 
+ nId1, 38, 39, nId4, nId3, 245, 246])</p>
+
+<p class="whs3">if vId == 0: print 
+ &quot;KO Hexahedron addition.&quot;</p>
+
+<p class="whs3">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;New Hexahedron has been added with ID &quot;, vId </p>
+
+<p class="whs3">&nbsp;</p>
+
+<h4>Add Polygon</h4>
+
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import 
+ math</span></p>
+
+<p class="whs3">import salome</p>
+
+<p class="whs3">import smesh</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs4"># create an empty mesh 
+ structure</p>
+
+<p class="whs3">gen = smesh.smesh</p>
+
+<p class="whs3">mesh = gen.CreateEmptyMesh()</p>
+
+<p class="whs3">MeshEditor = mesh.GetMeshEditor()</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs4"># a method to build 
+ a polygonal mesh element with &lt;nb_vert&gt; angles:</p>
+
+<p class="whs3">def MakePolygon 
+ (a_mesh, x0, y0, z0, radius, nb_vert):</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;al 
+ = 2.0 * math.pi / nb_vert</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;node_ids 
+ = []</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# 
+ Create nodes for a polygon</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;for 
+ ii in range(nb_vert):</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nid 
+ = MeshEditor.AddNode(x0 + radius * math.cos(ii*al),</p>
 
-<p class="whs1">salome.sg.updateObjBrowser(1) 
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y0 
+ + radius * math.sin(ii*al),</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z0)</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node_ids.append(nid)</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# 
+ Create a polygon</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;return 
+ MeshEditor.AddPolygonalFace(node_ids)</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs4"># Create three polygons</p>
+
+<p class="whs3">f1 = MakePolygon(mesh, 
+ 0, 0, &nbsp;0, 
+ 30, 13)</p>
+
+<p class="whs3">f2 = MakePolygon(mesh, 
+ 0, 0, 10, 21, &nbsp;9)</p>
+
+<p class="whs3">f3 = MakePolygon(mesh, 
+ 0, 0, 20, 13, &nbsp;6)</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">salome.sg.updateObjBrowser(1) 
  </p>
 
-<p class="whs1">&nbsp;</p>
+<h4>Add Polyhedron</h4>
 
-<h4>Add Quadrangle</h4>
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import 
+ salome</span></p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs3">import math</p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">import smesh</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">smesh &nbsp;= 
SMESH_mechanic.smesh</p>
+<p class="whs4"># create an empty mesh 
structure</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs3">gen = smesh.smesh</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">mesh = gen.CreateEmptyMesh()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">MeshEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs2"># add node</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs4"># Create nodes for 
+ 12-hedron with pentagonal faces</p>
 
-<p class="whs1">if aMeshEditor.AddNode(50, 
10, 0) == 1:</p>
+<p class="whs3">al = 2 * math.pi 
/ 5.0</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;Node addition is OK!&quot;</p>
+<p class="whs3">cosal = math.cos(al)</p>
 
-<p class="whs1">else:</p>
+<p class="whs3">aa = 13</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
&quot;KO node addition.&quot;</p>
+<p class="whs3">rr = aa / (2.0 * 
math.sin(al/2.0))</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">dr = 2.0 * rr * 
+ cosal</p>
 
-<p class="whs1">LastNodeId = mesh.NbNodes()</p>
+<p class="whs3">r1 = rr + dr</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">dh = rr * math.sqrt(2.0 
+ * (1.0 - cosal * (1.0 + 2.0 * cosal)))</p>
 
-<p class="whs2"># add quadrangle</p>
+<p class="whs3">hh = 2.0 * dh - 
+ dr * (rr*(cosal - 1) + (rr + dr)*(math.cos(al/2) - 1)) / dh</p>
 
-<p class="whs1">if aMeshEditor.AddNode(40, 
- 20, 0) == 1:</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
&quot;Node addition is OK!&quot;</p>
+<p class="whs3">dd = [] <span style="font-family: 'Times New Roman', serif;"># 
top</span></p>
 
-<p class="whs1">else:</p>
+<p class="whs3">cc = [] <span style="font-family: 'Times New Roman', serif;"># 
+ below top</span></p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
&quot;KO node addition.&quot;</p>
+<p class="whs3">bb = [] <span style="font-family: 'Times New Roman', serif;"># 
above bottom</span></p>
 
-<p class="whs1">if aMeshEditor.AddFace([mesh.NbNodes(), 
LastNodeId, 38, 39]) == 1:</p>
+<p class="whs3">aa = [] <span style="font-family: 'Times New Roman', serif;"># 
bottom</span></p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;Quadrangle addition is OK!&quot;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">else:</p>
+<p class="whs3">for i in range(5):</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;prin
&quot;KO quadrangle addition.&quot;</p>
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;cos_bo
= math.cos(i*al)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;sin_bot 
+ = math.sin(i*al)</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;<span 
+ style="margin-top: 0pt;
+               margin-bottom: 0pt;
+               font-family: 'Lucida Console', monospace;">cos_top 
+ = math.cos(i*al + al/2.0)</span></p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;sin_top 
+ = math.sin(i*al + al/2.0)</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;nd 
+ = MeshEditor.AddNode(rr * cos_top, rr * sin_top, hh &nbsp;&nbsp;&nbsp;&nbsp;) 
+ <span style="font-family: 'Times New Roman', serif;"># top</span></p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;nc 
+ = MeshEditor.AddNode(r1 * cos_top, r1 * sin_top, hh - dh) <span style="font-family: 'Times New Roman', serif;"># 
+ below top</span></p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;nb 
+ = MeshEditor.AddNode(r1 * cos_bot, r1 * sin_bot, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dh) 
+ <span style="font-family: 'Times New Roman', serif;"># above bottom</span></p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;na 
+ = MeshEditor.AddNode(rr * cos_bot, rr * sin_bot, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0) 
+ <span style="font-family: 'Times New Roman', serif;"># bottom</span></p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;dd.append(nd) 
+ <span style="font-family: 'Times New Roman', serif;"># top</span></p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;cc.append(nc) 
+ <span style="font-family: 'Times New Roman', serif;"># below top</span></p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;bb.append(nb) 
+ <span style="font-family: 'Times New Roman', serif;"># above bottom</span></p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;aa.append(na) 
+ <span style="font-family: 'Times New Roman', serif;"># bottom</span></p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;pass</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs4"># Create a polyhedral 
+ volume (12-hedron with pentagonal faces)</p>
+
+<p class="whs3">MeshEditor.AddPolyhedralVolume([dd[0], 
+ dd[1], dd[2], dd[3], dd[4], &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
+ top</span></p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dd[0], 
+ cc[0], bb[1], cc[1], dd[1], &nbsp;# 
+ -</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dd[1], 
+ cc[1], bb[2], cc[2], dd[2], &nbsp;# 
+ -</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dd[2], 
+ cc[2], bb[3], cc[3], dd[3], &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
+ - below top</span></p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dd[3], 
+ cc[3], bb[4], cc[4], dd[4], &nbsp;# 
+ -</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dd[4], 
+ cc[4], bb[0], cc[0], dd[0], &nbsp;# 
+ -</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aa[4], 
+ bb[4], cc[4], bb[0], aa[0], &nbsp;# 
+ .</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aa[3], 
+ bb[3], cc[3], bb[4], aa[4], &nbsp;# 
+ .</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aa[2], 
+ bb[2], cc[2], bb[3], aa[3], &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
+ . above bottom</span></p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aa[1], 
+ bb[1], cc[1], bb[2], aa[2], &nbsp;# 
+ .</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aa[0], 
+ bb[0], cc[0], bb[1], aa[1], &nbsp;# 
+ .</p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aa[0], 
+ aa[1], aa[2], aa[3], aa[4]], <span style="font-family: 'Times New Roman', serif;"># 
+ bottom</span></p>
+
+<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[5,5,5,5,5,5,5,5,5,5,5,5])</p>
+
+<p class="whs3">salome.sg.updateObjBrowser(1) 
  </p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<h4>Add Tetrahedron</h4>
+<h3><a name=bookmark1>Removing Nodes and Elements</a></h3>
 
-<p class="whs1">import SMESH</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to remove nodes and elements. </p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">smesh &nbsp;= 
- SMESH_mechanic.smesh</p>
+<h4 class="whs5">&nbsp;</h4>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<h4 class="whs5">Removing Nodes</h4>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import 
+ SMESH_mechanic</span></p>
 
-<p class="whs2"># add node</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
 
-<p class="whs1">if aMeshEditor.AddNode(50, 
- 10, 0) == 1:</p>
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;Node addition is OK!&quot;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">else:</p>
+<p class="whs4"># remove nodes #246 
+ and #255</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
&quot;KO node addition.&quot;</p>
+<p class="whs3">res = aMeshEditor.RemoveNodes([246, 
255])</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">if res == 1: print 
+ &quot;Nodes removing is OK!&quot;</p>
 
-<p class="whs1">LastNodeId = mesh.NbNodes()</p>
+<p class="whs3">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;KO nodes removing.&quot; </p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"># add tetrahedron</p>
+<h4>Removing Elements</h4>
+
+<p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import 
+ SMESH_mechanic</span></p>
 
-<p class="whs1">if aMeshEditor.AddVolume([LastNodeId, 
- 38, 39, 246]) == 1:</p>
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;Tetrahedron addition is OK!&quot;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">else:</p>
+<p class="whs3">anEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;KO tetrahedron addition.&quot;</p>
+<p class="whs3">&nbsp;</p>
+
+<p class="whs4"># remove three elements: 
+ #850, #859 and #814</p>
+
+<p class="whs3">res = anEditor.RemoveElements([850, 
+ 859, 814])</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p class="whs3">if res == 1: print 
+ &quot;Elements removing is OK!&quot;</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
+<p class="whs3">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;KO Elements removing.&quot; &nbsp;</p>
+
+<p class="whs3">&nbsp;</p>
+
+<h3><a name=bookmark2>Renumbering Nodes and Elements</a></h3>
+
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
+
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to renumber nodes and elements. </p>
+
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs6">&nbsp;</p>
+
+<p class="whs6">import SMESH_mechanic</p>
+
+<p class="whs6">&nbsp;</p>
+
+<p class="whs6">mesh = SMESH_mechanic.mesh</p>
+
+<p class="whs6">anEditor = mesh.GetMeshEditor()</p>
+
+<p class="whs7">&nbsp;</p>
+
+<p class="whs7"><span style="font-family: 'Lucida Console', monospace;">anEditor.RenumberNodes()</span> 
  </p>
 
+<h3><a name=bookmark3>Moving Nodes</a></h3>
+
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
+
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to move nodes. </p>
+
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">import SMESH</p>
+
+<p class="whs3">import SMESH_mechanic</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
+
+<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
+
 <p class="whs2">&nbsp;</p>
 
-<h4>Add Hexahedron</h4>
+<p class="whs2"># move node #38</p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs3">aMeshEditor.MoveNode(38, 
+ 20., 10., 0.) </p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<h3><a name=bookmark4>Diagonal Inversion</a></h3>
 
-<p class="whs1">smesh &nbsp;= 
- SMESH_mechanic.smesh</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
SMESH_mechanic.mesh</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
methods to produce a diagonal inversion. </p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs7">&nbsp;</p>
 
-<p class="whs2"># add nodes</p>
+<p class="whs6">import salome</p>
 
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs6">import smesh</p>
 
-<p class="whs1">if aMeshEditor.AddNode(50, 
- 10, 0) == 1:</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
&quot;Node addition is OK!&quot;</p>
+<p class="whs8"># create an empty mesh 
structure</p>
 
-<p class="whs1">else:</p>
+<p class="whs6">gen = smesh.smesh</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;KO node addition.&quot;</p>
+<p class="whs6">mesh = gen.CreateEmptyMesh()</p>
 
-<p class="whs1">aNodeId1 = mesh.NbNodes()</p>
+<p class="whs6">aMeshEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs1">if aMeshEditor.AddNode(47, 
12, 0) == 1:</p>
+<p class="whs8"># create the following 
mesh:</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;Node addition is OK!&quot;</p>
+<p class="whs6"># .----.----.----.</p>
 
-<p class="whs1">else:</p>
+<p class="whs6"># | &nbsp;&nbsp;/| 
+ &nbsp;&nbsp;/| 
+ &nbsp;&nbsp;/|</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;KO node addition.&quot;</p>
+<p class="whs6"># | &nbsp;/ 
+ | &nbsp;/ | &nbsp;/ 
+ |</p>
 
-<p class="whs1">aNodeId2 = mesh.NbNodes()</p>
+<p class="whs6"># | / &nbsp;| 
+ / &nbsp;| / &nbsp;|</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs6"># |/ &nbsp;&nbsp;|/ 
+ &nbsp;&nbsp;|/ 
+ &nbsp;&nbsp;|</p>
 
-<p class="whs1">if aMeshEditor.AddNode(50, 
- 10, 10) == 1:</p>
+<p class="whs6"># .----.----.----.</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;Node addition is OK!&quot;</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs1">else:</p>
+<p class="whs6">bb = [0, 0, 0, 0]</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;KO node addition.&quot;</p>
+<p class="whs6">tt = [0, 0, 0, 0]</p>
 
-<p class="whs1">aNodeId3 = mesh.NbNodes()</p>
+<p class="whs6">ff = [0, 0, 0, 0, 
+ 0, 0]</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs1">if aMeshEditor.AddNode(47, 
12, 10) == 1:</p>
+<p class="whs6">bb[0] = aMeshEditor.AddNode( 
0., 0., 0.)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
&quot;Node addition is OK!&quot;</p>
+<p class="whs6">bb[1] = aMeshEditor.AddNode(10., 
0., 0.)</p>
 
-<p class="whs1">else:</p>
+<p class="whs6">bb[2] = aMeshEditor.AddNode(20., 
+ 0., 0.)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
&quot;KO node addition.&quot;</p>
+<p class="whs6">bb[3] = aMeshEditor.AddNode(30., 
0., 0.)</p>
 
-<p class="whs1">aNodeId4 = mesh.NbNodes()</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs6">tt[0] = aMeshEditor.AddNode( 
+ 0., 15., 0.)</p>
 
-<p class="whs2"># add hexahedron</p>
+<p class="whs6">tt[1] = aMeshEditor.AddNode(10., 
+ 15., 0.)</p>
 
-<p class="whs1">if aMeshEditor.AddVolume([aNodeId2
aNodeId1, 38, 39, aNodeId4, aNodeId3, 245, 246]) == 1:</p>
+<p class="whs6">tt[2] = aMeshEditor.AddNode(20.
15., 0.)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
&quot;Hexahedron addition is OK!&quot;</p>
+<p class="whs6">tt[3] = aMeshEditor.AddNode(30., 
15., 0.)</p>
 
-<p class="whs1">else:</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;KO Hexahedron addition.&quot;</p>
+<p class="whs6">ff[0] = aMeshEditor.AddFace([bb[0], 
+ bb[1], tt[1]])</p>
+
+<p class="whs6">ff[1] = aMeshEditor.AddFace([bb[0], 
+ tt[1], tt[0]])</p>
+
+<p class="whs6">ff[2] = aMeshEditor.AddFace([bb[1], 
+ bb[2], tt[2]])</p>
+
+<p class="whs6">ff[3] = aMeshEditor.AddFace([bb[1], 
+ tt[2], tt[1]])</p>
+
+<p class="whs6">ff[4] = aMeshEditor.AddFace([bb[2], 
+ bb[3], tt[3]])</p>
+
+<p class="whs6">ff[5] = aMeshEditor.AddFace([bb[2], 
+ tt[3], tt[2]])</p>
+
+<p class="whs6">&nbsp;</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p class="whs8"># inverse the diagonal 
+ bb[1] - tt[2]</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
+<p class="whs6">print &quot;\nDiagonal 
+ inversion ... &quot;,</p>
+
+<p class="whs6">res = aMeshEditor.InverseDiag(bb[1], 
+ tt[2])</p>
+
+<p class="whs6">if not res: print 
+ &quot;failed!&quot;</p>
+
+<p class="whs6">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;done.&quot;</p>
+
+<p class="whs7">&nbsp;</p>
+
+<p class="whs7"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
  </p>
 
-<p class="whs2">&nbsp;</p>
+<h3><a name=bookmark5>Uniting two Triangles</a></h3>
 
-<h4>Add Polygon</h4>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs1">import salome</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to unite two triangles. </p>
 
-<p class="whs1">import geompy</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">import math</p>
+<p>&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">import salome</p>
 
-<p class="whs1">import StdMeshers</p>
+<p class="whs9">import smesh</p>
 
-<p class="whs1">&nbsp;</p>
+<p>&nbsp;</p>
 
-<p class="whs2"># GEOM module </p>
+<p># create an empty mesh structure</p>
 
-<p class="whs1">shape_mesh = geompy.MakeCylinderRH(13, 
- 77)</p>
+<p class="whs9">gen = smesh.smesh</p>
 
-<p class="whs1">geompy.addToStudy(shape_mesh, 
- &quot;cylinder&quot;)</p>
+<p class="whs9">mesh = gen.CreateEmptyMesh()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">aMeshEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs2"># SMESH module</p>
+<p>&nbsp;</p>
 
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
- &quot;SMESH&quot;)</p>
+<p># create the following mesh:</p>
 
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs9"># .----.----.----.</p>
 
-<p class="whs1">mesh = smesh.CreateMesh(shape_mesh)</p>
+<p class="whs9"># | &nbsp;&nbsp;/| 
+ &nbsp;&nbsp;/| 
+ &nbsp;&nbsp;/|</p>
 
-<p class="whs1">MeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9"># | &nbsp;/ 
+ | &nbsp;/ | &nbsp;/ 
+ |</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9"># | / &nbsp;| 
+ / &nbsp;| / &nbsp;|</p>
 
-<p class="whs2"># a method to build a polygonal 
- mesh element with nb_vert angles:</p>
+<p class="whs9"># |/ &nbsp;&nbsp;|/ 
+ &nbsp;&nbsp;|/ 
+ &nbsp;&nbsp;|</p>
 
-<p class="whs1">def MakePolygon 
- (a_mesh, x0, y0, z0, radius, nb_vert):</p>
+<p class="whs9"># .----.----.----.</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;node_start_id 
- = a_mesh.NbNodes() + 1</p>
+<p>&nbsp;</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;al 
- = 2.0 * math.pi / nb_vert</p>
+<p class="whs9">bb = [0, 0, 0, 0]</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;node_ids 
- = []</p>
+<p class="whs9">tt = [0, 0, 0, 0]</p>
 
-<p class="whs2">&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p class="whs9">ff = [0, 0, 0, 0, 
+ 0, 0]</p>
 
-<p class="whs2"># Create nodes for a polyhedron</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;for 
ii in range(nb_vert):</p>
+<p class="whs9">bb[0] = aMeshEditor.AddNode( 
0., 0., 0.)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MeshEditor.AddNode(x0 
+ radius * math.cos(ii*al),</p>
+<p class="whs9">bb[1] = aMeshEditor.AddNode(10., 
0., 0.)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y0 
+ radius * math.sin(ii*al),</p>
+<p class="whs9">bb[2] = aMeshEditor.AddNode(20., 
0., 0.)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z0)</p>
+<p class="whs9">bb[3] = aMeshEditor.AddNode(30., 
+ 0., 0.)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node_ids.append(node_start_id 
- + ii)</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass</p>
+<p class="whs9">tt[0] = aMeshEditor.AddNode( 
+ 0., 15., 0.)</p>
 
-<p class="whs2">&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p class="whs9">tt[1] = aMeshEditor.AddNode(10., 
+ 15., 0.)</p>
 
-<p class="whs2"># Create a polygon</p>
+<p class="whs9">tt[2] = aMeshEditor.AddNode(20., 
+ 15., 0.)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;MeshEditor.AddPolygonalFace(node_ids)</p>
+<p class="whs9">tt[3] = aMeshEditor.AddNode(30., 
+ 15., 0.)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;return 
- 0</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">ff[0] = aMeshEditor.AddFace([bb[0], 
+ bb[1], tt[1]])</p>
 
-<p class="whs2"># Create three polygons</p>
+<p class="whs9">ff[1] = aMeshEditor.AddFace([bb[0], 
+ tt[1], tt[0]])</p>
 
-<p class="whs1">MakePolygon(mesh, 
- 0, 0, &nbsp;0, 
- 30, 13)</p>
+<p class="whs9">ff[2] = aMeshEditor.AddFace([bb[1], 
+ bb[2], tt[2]])</p>
 
-<p class="whs1">MakePolygon(mesh
0, 0, 10, 21, &nbsp;9)</p>
+<p class="whs9">ff[3] = aMeshEditor.AddFace([bb[1]
tt[2], tt[1]])</p>
 
-<p class="whs1">MakePolygon(mesh
0, 0, 20, 13, &nbsp;6)</p>
+<p class="whs9">ff[4] = aMeshEditor.AddFace([bb[2]
bb[3], tt[3]])</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">ff[5] = aMeshEditor.AddFace([bb[2], 
+ tt[3], tt[2]])</p>
 
-<p class="whs1">salome.sg.updateObjBrowser(1) 
- &nbsp;</p>
+<p>&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p># delete the diagonal bb[1] - tt[2]</p>
 
-<h4>Add polyhedron</h4>
+<p class="whs9">print &quot;\nUnite 
+ two triangles ... &quot;,</p>
 
-<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import 
salome</span></p>
+<p class="whs9">res = aMeshEditor.DeleteDiag(bb[1], 
tt[2])</p>
 
-<p class="whs1">import geompy</p>
+<p class="whs9">if not res: print 
+ &quot;failed!&quot;</p>
 
-<p class="whs1">import math</p>
+<p class="whs9">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;done.&quot;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">#import SMESH</p>
+<p><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
+ </p>
 
-<p class="whs1">import StdMeshers</p>
+<h3><a name=bookmark6>Uniting a Set of Triangles</a></h3>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs3"># GEOM</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to unite a set of triangles. </p>
 
-<p class="whs1">shape_mesh = geompy.MakeCylinderRH(13, 
77)</p>
+<p class="whs1"># In the next SALOME version the scripts will 
be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">geompy.addToStudy(shape_mesh, 
- &quot;cylinder&quot;)</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">import salome</p>
 
-<p class="whs3"># SMESH</p>
+<p class="whs9">import smesh</p>
 
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
- &quot;SMESH&quot;)</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs10"># create an empty mesh 
+ structure</p>
 
-<p class="whs1">mesh = smesh.CreateMesh(shape_mesh)</p>
+<p class="whs9">gen = smesh.smesh</p>
 
-<p class="whs1">MeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">mesh = gen.CreateEmptyMesh()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">aMeshEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs3"># Now we are going 
- to create a 12-hedron:</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs3">&nbsp;</p>
+<p class="whs10"># create the following 
+ mesh:</p>
 
-<p class="whs3"># Create nodes for 
- polyhedron</p>
+<p class="whs9"># .----.----.----.</p>
 
-<p class="whs1">al = 2 * math.pi 
- / 5.0</p>
+<p class="whs9"># | &nbsp;&nbsp;/| 
+ &nbsp;&nbsp;/| 
+ &nbsp;&nbsp;/|</p>
 
-<p class="whs1">cosal = math.cos(al)</p>
+<p class="whs9"># | &nbsp;/ 
+ | &nbsp;/ | &nbsp;/ 
+ |</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9"># | / &nbsp;| 
+ / &nbsp;| / &nbsp;|</p>
 
-<p class="whs1">aa = 13</p>
+<p class="whs9"># |/ &nbsp;&nbsp;|/ 
+ &nbsp;&nbsp;|/ 
+ &nbsp;&nbsp;|</p>
 
-<p class="whs1">rr = aa / (2.0 * 
- math.sin(al/2.0))</p>
+<p class="whs9"># .----.----.----.</p>
 
-<p class="whs1">dr = 2.0 * rr * 
- cosal</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">r1 = rr + dr</p>
+<p class="whs9">bb = [0, 0, 0, 0]</p>
 
-<p class="whs1">dh = rr * math.sqrt(2.0 
- * (1.0 - cosal * (1.0 + 2.0 * cosal)))</p>
+<p class="whs9">tt = [0, 0, 0, 0]</p>
 
-<p class="whs1">hh = 2.0 * dh - 
dr * (rr*(cosal - 1) + (rr + dr)*(math.cos(al/2) - 1)) / dh</p>
+<p class="whs9">ff = [0, 0, 0, 0, 
0, 0]</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">for i in range(5):</p>
+<p class="whs9">bb[0] = aMeshEditor.AddNode( 
+ 0., 0., 0.)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;MeshEditor.AddNode(rr*math.cos(i*al), 
- rr*math.sin(i*al), &nbsp;0) 
- <span style="font-family: 'Times New Roman', serif;"># 1,3,5,7, 9 # bottom</span></p>
+<p class="whs9">bb[1] = aMeshEditor.AddNode(10., 
+ 0., 0.)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;MeshEditor.AddNode(r1*math.cos(i*al), 
- r1*math.sin(i*al), dh) <span style="font-family: 'Times New Roman', serif;"># 
- 2,4,6,8,10 # above bottom</span></p>
+<p class="whs9">bb[2] = aMeshEditor.AddNode(20., 
+ 0., 0.)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">bb[3] = aMeshEditor.AddNode(30., 
+ 0., 0.)</p>
 
-<p class="whs1">for i in range(5):</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;MeshEditor.AddNode(rr*math.cos(i*al 
+ al/2.0),</p>
+<p class="whs9">tt[0] = aMeshEditor.AddNode( 
0., 15., 0.)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rr*math.sin(i*al 
- + al/2.0), hh) # 11,13,15,17,19 <span style="font-family: 'Times New Roman', serif;"># 
- top</span></p>
+<p class="whs9">tt[1] = aMeshEditor.AddNode(10., 
+ 15., 0.)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;MeshEditor.AddNode(r1*math.cos(i*al 
+ al/2.0),</p>
+<p class="whs9">tt[2] = aMeshEditor.AddNode(20., 
15., 0.)</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1*math.sin(i*al 
- + al/2.0), hh - dh) # 12,14,16,18,20 <span style="font-family: 'Times New Roman', serif;"># 
- below top</span></p>
+<p class="whs9">tt[3] = aMeshEditor.AddNode(30., 
+ 15., 0.)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs3"># Create a polyhedral 
volume</p>
+<p class="whs9">ff[0] = aMeshEditor.AddFace([bb[0], 
bb[1], tt[1]])</p>
 
-<p class="whs1">MeshEditor.AddPolyhedralVolume([ 
- 1, &nbsp;3, &nbsp;5, 
- &nbsp;7, &nbsp;9, 
- &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
- bottom</span></p>
+<p class="whs9">ff[1] = aMeshEditor.AddFace([bb[0], 
+ tt[1], tt[0]])</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1, 
- &nbsp;2, 12, 
- &nbsp;4, &nbsp;3, 
- &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
- .</span></p>
-
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3, 
- &nbsp;4, 14, 
- &nbsp;6, &nbsp;5, 
- &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
- .</span></p>
-
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5, 
- &nbsp;6, 16, 
- &nbsp;8, &nbsp;7, 
- &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
- . above bottom</span></p>
+<p class="whs9">ff[2] = aMeshEditor.AddFace([bb[1], 
+ bb[2], tt[2]])</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7, 
- &nbsp;8, 18, 
- 10, &nbsp;9, 
- &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
- .</span></p>
-
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9, 
- 10, 20, &nbsp;2, 
- &nbsp;1, &nbsp;<span 
- style="font-family: 'Times New Roman', serif;"># 
- .</span></p>
-
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11, 
- 12, &nbsp;4, 
- 14, 13, &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
- -</span></p>
-
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13, 
- 14, &nbsp;6, 
- 16, 15, &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
- -</span></p>
-
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15, 
- 16, &nbsp;8, 
- 18, 17, &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
- - below top</span></p>
+<p class="whs9">ff[3] = aMeshEditor.AddFace([bb[1], 
+ tt[2], tt[1]])</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;17, 
- 18, 10, 20, 19, &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
- -</span></p>
+<p class="whs9">ff[4] = aMeshEditor.AddFace([bb[2], 
+ bb[3], tt[3]])</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;19, 
- 20, &nbsp;2, 
- 12, 11, &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
- -</span></p>
+<p class="whs9">ff[5] = aMeshEditor.AddFace([bb[2], 
+ tt[3], tt[2]])</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11, 
- 13, 15, 17, 19], <span style="font-family: 'Times New Roman', serif;"># 
- top</span></p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[5,5,5,5,5,5,5,5,5,5,5,5])</p>
+<p class="whs10"># unite a set of triangles</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">aFilterMgr = smesh.smesh.CreateFilterManager()</p>
 
-<p class="whs1">salome.sg.updateObjBrowser(1) 
- &nbsp;</p>
+<p class="whs9">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">print &quot;\nUnite 
+ a set of triangles ... &quot;,</p>
 
-<h3><a name=bookmark1>Removing Nodes and Elements</a></h3>
+<p class="whs9">res = aMeshEditor.TriToQuad([ff[2], 
+ ff[3], ff[4], ff[5]], aFunctor, 60.)</p>
 
-<h4 class="whs4">Removing Nodes</h4>
+<p class="whs9">if not res: print 
+ &quot;failed!&quot;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs9">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;done.&quot;</p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs9">salome.sg.updateObjBrowser(1) 
+ </p>
 
-<p class="whs1">&nbsp;</p>
+<h3><a name=bookmark12>Orientation</a></h3>
 
-<p class="whs1">smesh &nbsp;= 
- SMESH_mechanic.smesh</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
SMESH_mechanic.mesh</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
methods to change orientation. </p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs2"># add node</p>
+<p class="whs9">import salome</p>
 
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">import smesh</p>
 
-<p class="whs1">if aMeshEditor.RemoveNodes([246, 
- 255]) == 1:</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;Node removing is OK!&quot;</p>
+<p class="whs10"># SMESH module</p>
 
-<p class="whs1">else:</p>
+<p class="whs9">gen = smesh.smesh</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
- &quot;KO node removing.&quot;</p>
+<p class="whs9">mesh = gen.CreateEmptyMesh()</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p class="whs9">MeshEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs10"># build five quadrangles:</p>
 
-<h4>Removing Elements</h4>
+<p class="whs9">dx = 10</p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs9">dy = 20</p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">n1 &nbsp;= 
+ MeshEditor.AddNode(0.0 * dx, 0, 0)</p>
 
-<p class="whs1">smesh &nbsp;= 
SMESH_mechanic.smesh</p>
+<p class="whs9">n2 &nbsp;= 
MeshEditor.AddNode(1.0 * dx, 0, 0)</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
SMESH_mechanic.mesh</p>
+<p class="whs9">n3 &nbsp;= 
MeshEditor.AddNode(2.0 * dx, 0, 0)</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs9">n4 &nbsp;= 
+ MeshEditor.AddNode(3.0 * dx, 0, 0)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">n5 &nbsp;= 
+ MeshEditor.AddNode(4.0 * dx, 0, 0)</p>
 
-<p class="whs1">anEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">n6 &nbsp;= 
+ MeshEditor.AddNode(5.0 * dx, 0, 0)</p>
 
-<p class="whs1">anEditor.RemoveElements([850, 
859, 814])</p>
+<p class="whs9">n7 &nbsp;= 
MeshEditor.AddNode(0.0 * dx, dy, 0)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">n8 &nbsp;= 
+ MeshEditor.AddNode(1.0 * dx, dy, 0)</p>
 
-<p class="whs1">salome.sg.updateObjBrowser(1) 
- </p>
+<p class="whs9">n9 &nbsp;= 
MeshEditor.AddNode(2.0 * dx, dy, 0)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">n10 = MeshEditor.AddNode(3.0 
+ * dx, dy, 0)</p>
 
-<h3><a name=bookmark2>Renumbering Nodes and Elements</a></h3>
+<p class="whs9">n11 = MeshEditor.AddNode(4.0 
+ * dx, dy, 0)</p>
 
-<p class="whs5">import SMESH</p>
+<p class="whs9">n12 = MeshEditor.AddNode(5.0 
+ * dx, dy, 0)</p>
 
-<p class="whs5">import SMESH_mechanic</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs5">&nbsp;</p>
+<p class="whs9">f1 = MeshEditor.AddFace([n1, 
+ n2, n8 , n7 ])</p>
 
-<p class="whs5">mesh &nbsp;&nbsp;= 
SMESH_mechanic.mesh</p>
+<p class="whs9">f2 = MeshEditor.AddFace([n2, 
n3, n9 , n8 ])</p>
 
-<p class="whs5">salome = SMESH_mechanic.salome</p>
+<p class="whs9">f3 = MeshEditor.AddFace([n3, 
+ n4, n10, n9 ])</p>
 
-<p class="whs5">&nbsp;</p>
+<p class="whs9">f4 = MeshEditor.AddFace([n4, 
+ n5, n11, n10])</p>
 
-<p class="whs5">anEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">f5 = MeshEditor.AddFace([n5, 
+ n6, n12, n11])</p>
 
-<p class="whs5">anEditor.RenumberNodes()</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs5">&nbsp;</p>
+<p class="whs10"># Change the orientation 
+ of the second and the fourth faces.</p>
 
-<p class="whs6"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
+<p class="whs9">MeshEditor.Reorient([2, 
+ 4])</p>
+
+<p class="whs9">&nbsp;</p>
+
+<p class="whs9">salome.sg.updateObjBrowser(1) 
  </p>
 
-<p class="whs6">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p>&nbsp;</p>
+<h3><a name=bookmark7>Cutting Quadrangles</a></h3>
 
-<h3><a name=bookmark3>Moving Nodes</a></h3>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to cut quadrangles. </p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">smesh &nbsp;= 
- SMESH_mechanic.smesh</p>
+<p class="whs9">import SMESH</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
+<p class="whs9">import SMESH_mechanic</p>
+
+<p class="whs9">&nbsp;</p>
+
+<p class="whs9">smesh = SMESH_mechanic.smesh</p>
+
+<p class="whs9">mesh &nbsp;= 
  SMESH_mechanic.mesh</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs10"># cut two quadrangles: 
+ 405 and 406</p>
 
-<p class="whs2"># move node</p>
+<p class="whs9">aFilterMgr = smesh.CreateFilterManager()</p>
 
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
 
-<p class="whs1">aMeshEditor.MoveNode(38, 
- 20, 10, 0)</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p class="whs9">aMeshEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs9">aMeshEditor.QuadToTri([405, 
406], aFunctor) </p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs10">&nbsp;</p>
 
-<h3><a name=bookmark4>Diagonal Inversion</a></h3>
+<h3><a name=bookmark8>Smoothing</a></h3>
 
-<p class="whs1">import SMESH</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to perform smoothing. </p>
+
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
 <p class="whs1">&nbsp;</p>
 
-<p class="whs1">smesh &nbsp;= 
- SMESH_mechanic.smesh</p>
+<p class="whs9">import salome</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs9">import geompy</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs9">import SMESH</p>
 
-<p class="whs2"># inverse diagonal</p>
+<p class="whs9">import SMESH_mechanic</p>
 
-<p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs1">aMeshEditor.InverseDiag(700, 
- 642)</p>
+<p class="whs9">mesh = SMESH_mechanic.mesh</p>
 
-<p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p class="whs9">aMeshEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs10"># select the top face</p>
 
-<h3><a name=bookmark5>Uniting two Triangles</a></h3>
+<p class="whs9">faces = geompy.SubShapeAllSorted(SMESH_mechanic.shape_mesh, 
+ geompy.ShapeType[&quot;FACE&quot;])</p>
 
-<p class="whs7">import SMESH</p>
+<p class="whs9">face = faces[3]</p>
 
-<p class="whs7">import SMESH_mechanic</p>
+<p class="whs9">geompy.addToStudyInFather(SMESH_mechanic.shape_mesh, 
+ face, &quot;face planar with hole&quot;)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">smesh &nbsp;= 
SMESH_mechanic.smesh</p>
+<p class="whs10"># create a group of faces 
to be smoothed</p>
 
-<p class="whs7">mesh &nbsp;&nbsp;= 
SMESH_mechanic.mesh</p>
+<p class="whs9">GroupSmooth = mesh.CreateGroupFromGEOM(SMESH.FACE, 
&quot;Group of faces (smooth)&quot;, face)</p>
 
-<p class="whs7">salome = SMESH_mechanic.salome</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs10"># perform smoothing</p>
 
-<p># delete diagonal</p>
+<p class="whs10"># boolean SmoothObject(Object, 
+ IDsOfFixedNodes, MaxNbOfIterations, MaxAspectRatio, Method)</p>
 
-<p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">res = aMeshEditor.SmoothObject(GroupSmooth, 
+ [], 20, 2., SMESH.SMESH_MeshEditor.CENTROIDAL_SMOOTH)</p>
 
-<p class="whs7">aMeshEditor.DeleteDiag(700, 
- 642)</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p class="whs9">print &quot;\nSmoothing 
+ ... &quot;,</p>
 
-<p><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
+<p class="whs9">if not res: print 
+ &quot;failed!&quot;</p>
+
+<p class="whs9">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
+ &quot;done.&quot;</p>
+
+<p class="whs9">&nbsp;</p>
+
+<p class="whs9">salome.sg.updateObjBrowser(1) 
  </p>
 
-<p>&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<h3><a name=bookmark6>Uniting a Set of Triangles</a></h3>
+<h3><a name=bookmark9>Extrusion</a></h3>
 
-<p class="whs7">import SMESH</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs7">import SMESH_mechanic</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to perform extrusion. </p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs7">smesh &nbsp;= 
- SMESH_mechanic.smesh</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs9">import salome</p>
 
-<p class="whs7">salome = SMESH_mechanic.salome</p>
+<p class="whs9">import geompy</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p># unite a set of triangles</p>
+<p class="whs9">import SMESH</p>
 
-<p class="whs7">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs9">import SMESH_mechanic</p>
 
-<p class="whs7">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">mesh = SMESH_mechanic.mesh</p>
 
-<p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">aMeshEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs7">aMeshEditor.TriToQuad([1145, 
- 1147, 1159, 1135], aFunctor, 60)</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p class="whs10"># select the top face</p>
 
-<p class="whs7">salome.sg.updateObjBrowser(1) 
- </p>
+<p class="whs9">faces = geompy.SubShapeAllSorted(SMESH_mechanic.shape_mesh, 
geompy.ShapeType[&quot;FACE&quot;])</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">face = faces[7]</p>
 
-<h3><a name=bookmark12>Orientation</a></h3>
+<p class="whs9">geompy.addToStudyInFather(SMESH_mechanic.shape_mesh, 
+ face, &quot;face circular top&quot;)</p>
 
-<p class="whs7"><span style="font-family: 'Lucida Console', monospace;">import 
- salome</span></p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">import geompy</p>
+<p class="whs10"># create a vector for 
+ extrusion</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">point = SMESH.PointStruct(0., 
+ 0., 5.)</p>
 
-<p class="whs7">import StdMeshers</p>
+<p class="whs9">vector = SMESH.DirStruct(point)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs8"># GEOM module</p>
+<p class="whs10"># create a group to be 
+ extruded</p>
 
-<p class="whs7">shape_mesh = geompy.MakeCylinderRH(13
77)</p>
+<p class="whs9">GroupTri = mesh.CreateGroupFromGEOM(SMESH.FACE
&quot;Group of faces (extrusion)&quot;, face)</p>
 
-<p class="whs7">geompy.addToStudy(shape_mesh, 
- &quot;cylinder&quot;)</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs10"># perform extrusion of 
+ the group</p>
 
-<p class="whs8"># SMESH module</p>
+<p class="whs9">aMeshEditor.ExtrusionSweepObject(GroupTri, 
+ vector, 5)</p>
 
-<p class="whs7">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
- &quot;SMESH&quot;)</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs7">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs10"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
+ </p>
 
-<p class="whs7">mesh = smesh.CreateMesh(shape_mesh)</p>
+<h3><a name=bookmark10>Extrusion along a Path</a></h3>
 
-<p class="whs7">MeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to perform extrusion along a path. </p>
 
-<p class="whs8"># build five quadrangles:</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs7">node_start_id = mesh.NbNodes() 
- + 1</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">dx = 10</p>
+<p class="whs9">import math</p>
 
-<p class="whs7">dy = 20</p>
+<p class="whs9">import salome</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">MeshEditor.AddNode(0.0 
- * dx, 0, 0) # 1</p>
+<p class="whs10"># Geometry</p>
 
-<p class="whs7">MeshEditor.AddNode(1.0 
- * dx, 0, 0) # 2</p>
+<p class="whs9">import geompy</p>
 
-<p class="whs7">MeshEditor.AddNode(2.0 
- * dx, 0, 0) # 3</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs7">MeshEditor.AddNode(3.0 
- * dx, 0, 0) # 4</p>
+<p class="whs10"># 1. Create points</p>
 
-<p class="whs7">MeshEditor.AddNode(4.0 
* dx, 0, 0) # 5</p>
+<p class="whs9">points = [[0, 0], 
[50, 30], [50, 110], [0, 150], [-80, 150], [-130, 70], [-130, -20]]</p>
 
-<p class="whs7">MeshEditor.AddNode(5.0 
- * dx, 0, 0) # 6</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">iv = 1</p>
 
-<p class="whs7">MeshEditor.AddNode(0.0 
- * dx, dy, 0) # 7</p>
+<p class="whs9">vertices = []</p>
 
-<p class="whs7">MeshEditor.AddNode(1.0 
- * dx, dy, 0) # 8</p>
+<p class="whs9">for point in points:</p>
 
-<p class="whs7">MeshEditor.AddNode(2.0 
* dx, dy, 0) # 9</p>
+<p class="whs11">vert 
= geompy.MakeVertex(point[0], point[1], 0)</p>
 
-<p class="whs7">MeshEditor.AddNode(3.0 
* dx, dy, 0) # 10</p>
+<p class="whs11">geompy.addToStudy(vert, 
&quot;Vertex_&quot; + `iv`)</p>
 
-<p class="whs7">MeshEditor.AddNode(4.0 
- * dx, dy, 0) # 11</p>
+<p class="whs11">vertices.append(vert)</p>
 
-<p class="whs7">MeshEditor.AddNode(5.0 
* dx, dy, 0) # 12</p>
+<p class="whs11">iv 
+= 1</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs11">pass</p>
 
-<p class="whs7">MeshEditor.AddFace([1, 
- 2, &nbsp;8, &nbsp;7])</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs7">MeshEditor.AddFace([2, 
3, &nbsp;9, &nbsp;8])</p>
+<p class="whs10"># 2. Create edges and 
wires</p>
 
-<p class="whs7">MeshEditor.AddFace([3
4, 10, &nbsp;9])</p>
+<p class="whs9">Edge_straight = geompy.MakeEdge(vertices[0]
vertices[4])</p>
 
-<p class="whs7">MeshEditor.AddFace([4, 
- 5, 11, 10])</p>
+<p class="whs9">Edge_bezierrr = geompy.MakeBezier(vertices)</p>
 
-<p class="whs7">MeshEditor.AddFace([5, 
- 6, 12, 11])</p>
+<p class="whs9">Wire_polyline = geompy.MakePolyline(vertices)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">Edge_Circle &nbsp;&nbsp;= 
+ geompy.MakeCircleThreePnt(vertices[0], vertices[1], vertices[2])</p>
 
-<p class="whs8"># Change orientation 
- of the second and the fourth faces.</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">MeshEditor.Reorient([2
4])</p>
+<p class="whs9">geompy.addToStudy(Edge_straight
&quot;Edge_straight&quot;)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">geompy.addToStudy(Edge_bezierrr, 
+ &quot;Edge_bezierrr&quot;)</p>
 
-<p class="whs7">salome.sg.updateObjBrowser(1) 
- &nbsp;</p>
+<p class="whs9">geompy.addToStudy(Wire_polyline, 
+ &quot;Wire_polyline&quot;)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">geompy.addToStudy(Edge_Circle 
+ &nbsp;, &quot;Edge_Circle&quot;)</p>
 
-<h3><a name=bookmark7>Cutting Quadrangles</a></h3>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs7">import SMESH</p>
+<p class="whs10"># 3. Explode wire on 
+ edges, as they will be used for mesh extrusion</p>
 
-<p class="whs7">import SMESH_mechanic</p>
+<p class="whs9">Wire_polyline_edges 
+ = geompy.SubShapeAll(Wire_polyline, geompy.ShapeType[&quot;EDGE&quot;])</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">for ii in range(len(Wire_polyline_edges)):</p>
 
-<p class="whs7">smesh &nbsp;= 
SMESH_mechanic.smesh</p>
+<p class="whs11">geompy.addToStudyInFather(Wire_polyline, 
Wire_polyline_edges[ii], &quot;Edge_&quot; + `ii + 1`)</p>
 
-<p class="whs7">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs11">pass</p>
 
-<p class="whs7">salome = SMESH_mechanic.salome</p>
+<p class="whs12">&nbsp;</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs10"># Mesh</p>
 
-<p class="whs8"># unite a set of triangles</p>
+<p class="whs9">import smesh</p>
 
-<p class="whs7">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs9">import SMESH</p>
 
-<p class="whs7">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">gen = smesh.smesh</p>
 
-<p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">aMeshEditor.QuadToTri([405, 
- 406], aFunctor)</p>
+<p class="whs9">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>
 
-<p class="whs7">&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p class="whs9">smeshgui.Init(salome.myStudyId)</p>
 
-<p class="whs7">salome.sg.updateObjBrowser(1) 
- </p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs8">&nbsp;</p>
+<p class="whs10"># 1D algorithm and three 
+ 1D hypotheses</p>
 
-<h3><a name=bookmark8>Smoothing</a></h3>
+<p class="whs9">Wire_discretisation 
+ = gen.CreateHypothesis('Regular_1D', 'libStdMeshersEngine.so')</p>
 
-<p class="whs7">import SMESH</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">import SMESH_mechanic</p>
+<p class="whs9">Nb_Segments_3 = gen.CreateHypothesis('NumberOfSegments', 
+ 'libStdMeshersEngine.so')</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">Nb_Segments_7 = gen.CreateHypothesis('NumberOfSegments', 
+ 'libStdMeshersEngine.so')</p>
 
-<p class="whs7">smesh &nbsp;= 
SMESH_mechanic.smesh</p>
+<p class="whs9">Nb_Segments_8 = gen.CreateHypothesis('NumberOfSegments', 
'libStdMeshersEngine.so')</p>
 
-<p class="whs7">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">salome = SMESH_mechanic.salome</p>
+<p class="whs9">Nb_Segments_3.SetNumberOfSegments(3)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">Nb_Segments_7.SetNumberOfSegments(7)</p>
 
-<p class="whs8"># smooth</p>
+<p class="whs9">Nb_Segments_8.SetNumberOfSegments(8)</p>
 
-<p class="whs7">FacesSmooth = [911, 
- 931, 950, 864, 932]</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs7">GroupSmooth = mesh.CreateGroup(SMESH.FACE,&quot;Group 
of faces (smooth)&quot;)</p>
+<p class="whs10"># Mesh given shape with 
given 1d hypothesis</p>
 
-<p class="whs7">GroupSmooth.Add(FacesSmooth)</p>
+<p class="whs9">def Mesh1D(shape1d, 
+ hyp1d, name):</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs11">mesh1d_tool 
+ = smesh.Mesh(shape1d)</p>
 
-<p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs11">mesh1d 
+ = mesh1d_tool.GetMesh()</p>
 
-<p class="whs7">aMeshEditor.SmoothObject(GroupSmooth, 
[], 20, 2, SMESH.SMESH_MeshEditor.CENTROIDAL_SMOOTH)</p>
+<p class="whs11">status 
= mesh1d.AddHypothesis(shape1d, hyp1d)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs11">status 
+ = mesh1d.AddHypothesis(shape1d, Wire_discretisation)</p>
 
-<p class="whs7">salome.sg.updateObjBrowser(1) 
- </p>
+<p class="whs11">isDone 
= mesh1d_tool.Compute()</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs11">if 
+ not isDone: print 'Mesh ', name, ': computation failed'</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs11">return 
+ mesh1d</p>
 
-<h3><a name=bookmark9>Extrusion</a></h3>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs8">import SMESH</p>
+<p class="whs10"># Create a mesh with 
+ six nodes, seven edges and two quadrangle faces</p>
 
-<p class="whs8">import SMESH_mechanic</p>
+<p class="whs9">def MakeQuadMesh2(mesh_name):</p>
 
-<p class="whs8">&nbsp;</p>
+<p class="whs11">quad_1 
+ = gen.CreateEmptyMesh()</p>
 
-<p class="whs8">smesh &nbsp;= 
SMESH_mechanic.smesh</p>
+<p class="whs11">smeshgui.SetName(salome.ObjectToID(quad_1), 
mesh_name)</p>
 
-<p class="whs8">mesh &nbsp;&nbsp;= 
SMESH_mechanic.mesh</p>
+<p class="whs11">editor_1 
= quad_1.GetMeshEditor()</p>
 
-<p class="whs8">salome = SMESH_mechanic.salome</p>
+<p class="whs12">&nbsp;</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs12"># six nodes</p>
 
-<p class="whs8"># extrusion of the group</p>
+<p class="whs11">n1 
+ = editor_1.AddNode(0, 20, 10)</p>
 
-<p class="whs8">point = SMESH.PointStruct(0, 
0, 5)</p>
+<p class="whs11">n2 
= editor_1.AddNode(0, 40, 10)</p>
 
-<p class="whs8">vector = SMESH.DirStruct(point)</p>
+<p class="whs11">n3 
+ = editor_1.AddNode(0, 40, 30)</p>
 
-<p class="whs8">FacesTriToQuad = [2381, 
- 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 
- 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 
- 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 
- 2418, 2419, 2420, 2421, 2422]</p>
+<p class="whs11">n4 
+ = editor_1.AddNode(0, 20, 30)</p>
 
-<p class="whs8">&nbsp;</p>
+<p class="whs11">n5 
+ = editor_1.AddNode(0, &nbsp;0, 
+ 30)</p>
 
-<p class="whs8">GroupTriToQuad = mesh.CreateGroup(SMESH.FACE,&quot;Group 
- of faces (quad)&quot;)</p>
+<p class="whs11">n6 
+ = editor_1.AddNode(0, &nbsp;0, 
+ 10)</p>
 
-<p class="whs8">GroupTriToQuad.Add(FacesTriToQuad)</p>
+<p class="whs12">&nbsp;</p>
 
-<p class="whs8">&nbsp;</p>
+<p class="whs12"># seven edges</p>
 
-<p class="whs8">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs11">editor_1.AddEdge([n1, 
+ n2]) # 1</p>
 
-<p class="whs8">aMeshEditor.ExtrusionSweepObject(GroupTriToQuad
vector, 5)</p>
+<p class="whs11">editor_1.AddEdge([n2
n3]) # 2</p>
 
-<p class="whs8">&nbsp;</p>
+<p class="whs11">editor_1.AddEdge([n3, 
+ n4]) # 3</p>
 
-<p class="whs8">salome.sg.updateObjBrowser(1) 
- </p>
+<p class="whs11">editor_1.AddEdge([n4, 
n1]) # 4</p>
 
-<p class="whs8">&nbsp;</p>
+<p class="whs11">editor_1.AddEdge([n4, 
+ n5]) # 5</p>
 
-<h3><a name=bookmark10>Extrusion along a Path</a></h3>
+<p class="whs11">editor_1.AddEdge([n5, 
+ n6]) # 6</p>
 
-<p class="whs7">import geompy</p>
+<p class="whs11">editor_1.AddEdge([n6, 
+ n1]) # 7</p>
 
-<p class="whs7">import smesh</p>
+<p class="whs12">&nbsp;</p>
 
-<p class="whs7">import salome</p>
+<p class="whs12"># two quadrangle faces</p>
 
-<p class="whs7">import SMESH</p>
+<p class="whs11">editor_1.AddFace([n1, 
+ n2, n3, n4]) # 8</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs11">editor_1.AddFace([n1, 
+ n4, n5, n6]) # 9</p>
 
-<p class="whs8"># create a face to be 
meshed</p>
+<p class="whs11">return 
[quad_1, editor_1, [1,2,3,4,5,6,7], [8,9]]</p>
 
-<p class="whs7">px = geompy.MakeVertex(100., 
- 0. &nbsp;, 0. 
- &nbsp;)</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs7">py = geompy.MakeVertex(0. 
- &nbsp;, 100., 
- 0. &nbsp;)</p>
+<p class="whs10"># Path meshes</p>
 
-<p class="whs7">pz = geompy.MakeVertex(0. 
- &nbsp;, 0. &nbsp;, 
- 100.)</p>
+<p class="whs9">Edge_straight_mesh 
+ = Mesh1D(Edge_straight, Nb_Segments_7, &quot;Edge_straight&quot;)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">Edge_bezierrr_mesh 
+ = Mesh1D(Edge_bezierrr, Nb_Segments_7, &quot;Edge_bezierrr&quot;)</p>
 
-<p class="whs7">vxy = geompy.MakeVector(px, 
py)</p>
+<p class="whs9">Wire_polyline_mesh 
= Mesh1D(Wire_polyline, Nb_Segments_3, &quot;Wire_polyline&quot;)</p>
 
-<p class="whs7">arc = geompy.MakeArc(py, 
- pz, px)</p>
+<p class="whs9">Edge_Circle_mesh &nbsp;&nbsp;= 
+ Mesh1D(Edge_Circle &nbsp;, 
+ Nb_Segments_8, &quot;Edge_Circle&quot;)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs7">wire = geompy.MakeWire([vxy, 
arc])</p>
+<p class="whs10"># Initial meshes (to 
be extruded)</p>
 
-<p class="whs7">isPlanarFace = 1</p>
+<p class="whs9">[quad_1, editor_1, 
+ ee_1, ff_1] = MakeQuadMesh2(&quot;quad_1&quot;)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">[quad_2, editor_2, 
+ ee_2, ff_2] = MakeQuadMesh2(&quot;quad_2&quot;)</p>
 
-<p class="whs7">face1 = geompy.MakeFace(wire
isPlanarFace)</p>
+<p class="whs9">[quad_3, editor_3
ee_3, ff_3] = MakeQuadMesh2(&quot;quad_3&quot;)</p>
 
-<p class="whs7">id_face1 = geompy.addToStudy(face1
&quot;Face1&quot;)</p>
+<p class="whs9">[quad_4, editor_4
ee_4, ff_4] = MakeQuadMesh2(&quot;quad_4&quot;)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">[quad_5, editor_5, 
+ ee_5, ff_5] = MakeQuadMesh2(&quot;quad_5&quot;)</p>
 
-<p class="whs8"># create a 2D mesh on 
the face</p>
+<p class="whs9">[quad_6, editor_6, 
ee_6, ff_6] = MakeQuadMesh2(&quot;quad_6&quot;)</p>
 
-<p class="whs7">trias = smesh.Mesh(face1
&quot;Face : 2D mesh&quot;)</p>
+<p class="whs9">[quad_7, editor_7
ee_7, ff_7] = MakeQuadMesh2(&quot;quad_7&quot;)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs7">algo = trias.Segment()</p>
+<p class="whs10"># ExtrusionAlongPath</p>
 
-<p class="whs7">algo.NumberOfSegments(6)</p>
+<p class="whs10"># IDsOfElements, PathMesh, 
+ PathShape, NodeStart,</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs10"># HasAngles, Angles, 
+ HasRefPoint, RefPoint</p>
 
-<p class="whs7">algo = trias.Triangle()</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs7">algo.LengthFromEdges()</p>
+<p class="whs9">refPoint = SMESH.PointStruct(0, 
+ 0, 0)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">trias.Compute()</p>
+<p class="whs9">a10 = 10.0*math.pi/180.0</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">a45 = 45.0*math.pi/180.0</p>
 
-<p class="whs8"># create a path mesh</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs7">px1 = geompy.MakeVertex(100., 
- 100. &nbsp;, 
- 0. &nbsp;)</p>
+<p class="whs10"># 1. Extrusion of two 
+ mesh edges along a straight path</p>
 
-<p class="whs7">py1 = geompy.MakeVertex(-100. 
- &nbsp;, -100., 
- 0. &nbsp;)</p>
+<p class="whs9">error = editor_1.ExtrusionAlongPath([1,2], 
+ Edge_straight_mesh, Edge_straight, 1,</p>
 
-<p class="whs7">pz1 = geompy.MakeVertex(0. 
- &nbsp;, 0. &nbsp;, 
- 50.)</p>
+<p class="whs13">&nbsp;&nbsp;&nbsp;&nbsp;0, 
+ [], 0, refPoint)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs7">circle = geompy.MakeCircleThreePnt(py1, 
pz1, px1)</p>
+<p class="whs10"># 2. Extrusion of one 
mesh edge along a curved path</p>
 
-<p class="whs7">id_circle = geompy.addToStudy(circle
&quot;Path&quot;)</p>
+<p class="whs9">error = editor_2.ExtrusionAlongPath([2]
Edge_bezierrr_mesh, Edge_bezierrr, 1,</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs13">&nbsp;&nbsp;&nbsp;&nbsp;0, 
+ [], 0, refPoint)</p>
 
-<p class="whs7">circlemesh = smesh.Mesh(circle, 
- &quot;Path mesh&quot;)</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs10"># 3. Extrusion of one 
+ mesh edge along a curved path with usage of angles </p>
 
-<p class="whs7">algo = circlemesh.Segment()</p>
+<p class="whs9">error = editor_3.ExtrusionAlongPath([2], 
+ Edge_bezierrr_mesh, Edge_bezierrr, 1,</p>
 
-<p class="whs7">algo.NumberOfSegments(10)</p>
+<p class="whs13">&nbsp;&nbsp;&nbsp;&nbsp;1, 
+ [a45, a45, a45, 0, -a45, -a45, -a45], 0, refPoint)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs7">circlemesh.Compute()</p>
+<p class="whs10"># 4. Extrusion of one 
+ mesh edge along the path, which is a part of a meshed wire</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">error = editor_4.ExtrusionAlongPath([4], 
+ Wire_polyline_mesh, Wire_polyline_edges[0], 1,</p>
 
-<p class="whs8"># extrusion of the mesh</p>
+<p class="whs13">&nbsp;&nbsp;&nbsp;&nbsp;1, 
+ [a10, a10, a10], 0, refPoint)</p>
 
-<p class="whs8"># The mesh &quot;trias&quot; 
- will be extruded along another mesh, which is a sub-mesh of &quot;circlemesh&quot;,</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs8"><span style="font-family: 'Times New Roman', serif;"># 
- corresponding to geometry &quot;circle&quot;. In this particular case 
- the path mesh will be the whole &quot;circlemesh&quot;</span></p>
+<p class="whs10"># 5. Extrusion of two 
+ mesh faces along the path, which is a part of a meshed wire</p>
 
-<p class="whs8">&nbsp;</p>
+<p class="whs9">error = editor_5.ExtrusionAlongPath(ff_5 
+ , Wire_polyline_mesh, Wire_polyline_edges[2], 4,</p>
 
-<p class="whs7">aMeshEditor = trias.GetMesh().GetMeshEditor()</p>
+<p class="whs13">&nbsp;&nbsp;&nbsp;&nbsp;0, 
+ [], 0, refPoint)</p>
 
-<p class="whs7">aMeshEditor.ExtrusionAlongPathObject(trias.GetMesh(), 
- circlemesh.GetMesh(), circle, 1, 0, [], 0, SMESH.PointStruct(0, 0, 0))</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs10"># 6. Extrusion of two 
+ mesh faces along a closed path</p>
 
-<p class="whs8"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs9">error = editor_6.ExtrusionAlongPath(ff_6 
+ , Edge_Circle_mesh, Edge_Circle, 1,</p>
+
+<p class="whs13">&nbsp;&nbsp;&nbsp;&nbsp;0, 
+ [], 0, refPoint)</p>
+
+<p class="whs10">&nbsp;</p>
+
+<p class="whs10"># 7. Extrusion of two 
+ mesh faces along a closed path with usage of angles </p>
+
+<p class="whs9">error = editor_7.ExtrusionAlongPath(ff_7, 
+ Edge_Circle_mesh, Edge_Circle, 1,</p>
+
+<p class="whs13">&nbsp;&nbsp;&nbsp;&nbsp;1, 
+ [a45, -a45, a45, -a45, a45, -a45, a45, -a45], 0, refPoint</p>
+
+<p class="whs13">&nbsp;</p>
+
+<p class="whs14">salome.sg.updateObjBrowser(1)</p>
 
 <h3><a name=bookmark11>Revolution</a></h3>
 
-<p class="whs7">import SMESH</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs7">import SMESH_mechanic</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to perform revolution. </p>
 
-<p class="whs7">import math</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs1">&nbsp;</p>
 
-<p class="whs7">smesh &nbsp;= 
- SMESH_mechanic.smesh</p>
+<p class="whs9">import math</p>
 
-<p class="whs7">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs9">import SMESH</p>
+
+<p class="whs9">import SMESH_mechanic</p>
+
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">salome = SMESH_mechanic.salome</p>
+<p class="whs9">mesh = SMESH_mechanic.mesh</p>
 
-<p class="whs8">&nbsp;</p>
+<p class="whs9">aMeshEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs8"># rotate a sweep object</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">FacesRotate = [492, 
+<p class="whs10"># create a group of faces 
+ to be revolved</p>
+
+<p class="whs9">FacesRotate = [492, 
  493, 502, 503]</p>
 
-<p class="whs7">GroupRotate = mesh.CreateGroup(SMESH.FACE,&quot;Group 
+<p class="whs9">GroupRotate = mesh.CreateGroup(SMESH.FACE,&quot;Group 
  of faces (rotate)&quot;)</p>
 
-<p class="whs7">GroupRotate.Add(FacesRotate)</p>
+<p class="whs9">GroupRotate.Add(FacesRotate)</p>
 
-<p class="whs7">angle45 = &nbsp;45*math.pi/180</p>
+<p class="whs10">&nbsp;</p>
 
-<p class="whs7">axisXYZ = SMESH.AxisStruct(-38.3128, 
-73.3658, -23.321, -13.3402, -13.3265, 6.66632)</p>
+<p class="whs10"># define revolution angle 
and axis</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">angle45 = 45 * math.pi 
+ / 180</p>
 
-<p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs9">axisXYZ = SMESH.AxisStruct(-38.3128, 
+ -73.3658, -23.321, -13.3402, -13.3265, 6.66632)</p>
 
-<p class="whs7">aMeshEditor.RotationSweepObject(GroupRotate, 
- axisXYZ, angle45, 4, 1e-5)</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs10"># perform revolution 
+ of an object</p>
 
-<p class="whs8"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs9">aMeshEditor.RotationSweepObject(GroupRotate, 
axisXYZ, angle45, 4, 1e-5) </p>
 
-<p class="whs8">&nbsp;</p>
+<p class="whs10">&nbsp;</p>
 
 <h3><a name=bookmark13>Pattern Mapping</a></h3>
 
-<p class="whs7">import salome</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs7">import geompy</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to perform pattern mapping. </p>
 
-<p class="whs7">import SMESH, smesh</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">geompy.init_geom(salome.myStudy)</p>
+<p class="whs9">import geompy</p>
 
-<p class="whs7">smesh.smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs9">import smesh</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs8"># define geometry</p>
+<p class="whs10"># define the geometry</p>
 
-<p class="whs7">Box_1 = geompy.MakeBoxDXDYDZ(200
- 200, 200)</p>
+<p class="whs9">Box_1 = geompy.MakeBoxDXDYDZ(200.
+ 200., 200.)</p>
 
-<p class="whs7">geompy.addToStudy(Box_1, 
+<p class="whs9">geompy.addToStudy(Box_1, 
  &quot;Box_1&quot;)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">faces = geompy.SubShapeAll(Box_1, 
+<p class="whs9">faces = geompy.SubShapeAll(Box_1, 
  geompy.ShapeType[&quot;FACE&quot;])</p>
 
-<p class="whs7">Face_1 = faces[0]</p>
+<p class="whs9">Face_1 = faces[0]</p>
 
-<p class="whs7">Face_2 = faces[1]</p>
+<p class="whs9">Face_2 = faces[1]</p>
 
-<p class="whs7">geompy.addToStudyInFather(Box_1, 
+<p class="whs9">geompy.addToStudyInFather(Box_1, 
  Face_1, &quot;Face_1&quot;)</p>
 
-<p class="whs7">geompy.addToStudyInFather(Box_1, 
+<p class="whs9">geompy.addToStudyInFather(Box_1, 
  Face_2, &quot;Face_2&quot;)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs8"># build quadrangle mesh 
- 3x3 on Face_1</p>
+<p class="whs10"># build a quadrangle 
mesh 3x3 on Face_1</p>
 
-<p class="whs7">Mesh_1 = smesh.Mesh(Face_1)</p>
+<p class="whs9">Mesh_1 = smesh.Mesh(Face_1)</p>
 
-<p class="whs7">Wire_discretisation 
- = Mesh_1.Segment()</p>
+<p class="whs9">algo1D = Mesh_1.Segment()</p>
 
-<p class="whs7">Wire_discretisation.NumberOfSegments(3)</p>
+<p class="whs9">algo1D.NumberOfSegments(3)</p>
 
-<p class="whs7">Mesh_1.Quadrangle()</p>
+<p class="whs9">Mesh_1.Quadrangle()</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">isDone = Mesh_1.Compute()</p>
+<p class="whs9">isDone = Mesh_1.Compute()</p>
 
-<p class="whs7">if not isDone: print 
+<p class="whs9">if not isDone: print 
  'Mesh Mesh_1 : computation failed'</p>
 
-<p class="whs7">&nbsp;</p>
-
-<p class="whs8"># pattern the mesh</p>
-
-<p class="whs7">Mesh_2 = smesh.Mesh(Face_2)</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">Nb_Segments_1 = smesh.smesh.CreateHypothesis('NumberOfSegments', 
'libStdMeshersEngine.so')</p>
+<p class="whs10"># build a triangle mesh 
on Face_2</p>
 
-<p class="whs7">Nb_Segments_1.SetNumberOfSegments(1)</p>
+<p class="whs9">Mesh_2 = smesh.Mesh(Face_2)</p>
 
-<p class="whs7">status = Mesh_2.GetMesh().AddHypothesis(Face_2, 
- Nb_Segments_1)</p>
+<p class="whs9">algo1D = Mesh_2.Segment()</p>
 
-<p class="whs7">status = Mesh_2.GetMesh().AddHypothesis(Face_2, 
- Wire_discretisation.GetAlgorithm())</p>
+<p class="whs9">algo1D.NumberOfSegments(1)</p>
 
-<p class="whs7">Triangle_Mefisto = 
- Mesh_2.Triangle()</p>
+<p class="whs9">algo2D = Mesh_2.Triangle()</p>
 
-<p class="whs7">Max_Element_Area = 
- Triangle_Mefisto.MaxElementArea(240)</p>
+<p class="whs9">algo2D.MaxElementArea(240)</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">isDone = Mesh_2.Compute()</p>
 
-<p class="whs7">isDone = Mesh_2.Compute()</p>
-
-<p class="whs7">if not isDone: print 
+<p class="whs9">if not isDone: print 
  'Mesh Mesh_2 : computation failed'</p>
 
-<p class="whs7">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs8"># create a pattern</p>
+<p class="whs10"># create a pattern</p>
 
-<p class="whs7">pattern = smesh.smesh.GetPattern()</p>
+<p class="whs9">pattern = smesh.smesh.GetPattern()</p>
 
-<p class="whs7">isDone = pattern.LoadFromFace(Mesh_2.GetMesh(), 
+<p class="whs9">isDone = pattern.LoadFromFace(Mesh_2.GetMesh(), 
  Face_2, 0)</p>
 
-<p class="whs7">if (isDone != 1):</p>
+<p class="whs9">if (isDone != 1): 
+ print 'LoadFromFace :', pattern.GetErrorCode()</p>
 
-<p class="whs9">print 
- 'LoadFromFace :', pattern.GetErrorCode()</p>
-
-<p class="whs7">&nbsp;</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs8"># apply the pattern to 
+<p class="whs10"># apply the pattern to 
  a face of the first mesh</p>
 
-<p class="whs7">pattern.ApplyToMeshFaces(Mesh_1.GetMesh(), 
+<p class="whs9">pattern.ApplyToMeshFaces(Mesh_1.GetMesh(), 
  [17], 0, 0)</p>
 
-<p class="whs7">isDone = pattern.MakeMesh(Mesh_1.GetMesh(), 
+<p class="whs9">isDone = pattern.MakeMesh(Mesh_1.GetMesh(), 
  0, 0)</p>
 
-<p class="whs7">if (isDone != 1):</p>
+<p class="whs9">if (isDone != 1): 
+ print 'MakeMesh :', pattern.GetErrorCode() </p>
 
-<p class="whs9">print 
- 'MakeMesh :', pattern.GetErrorCode()</p>
+<p class="whs9">&nbsp;</p>
 
-<p class="whs7">&nbsp;</p>
-
-<p class="whs8"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs10">&nbsp;</p>
 
 <script type="text/javascript" language="javascript1.2">
 <!--
diff --git a/doc/salome/gui/SMESH/pics/circle_angles_after.png b/doc/salome/gui/SMESH/pics/circle_angles_after.png
new file mode 100644 (file)
index 0000000..f4c606b
Binary files /dev/null and b/doc/salome/gui/SMESH/pics/circle_angles_after.png differ
diff --git a/doc/salome/gui/SMESH/pics/circle_simple_after.png b/doc/salome/gui/SMESH/pics/circle_simple_after.png
new file mode 100644 (file)
index 0000000..99f65b5
Binary files /dev/null and b/doc/salome/gui/SMESH/pics/circle_simple_after.png differ
diff --git a/doc/salome/gui/SMESH/pics/circle_simple_before.png b/doc/salome/gui/SMESH/pics/circle_simple_before.png
new file mode 100644 (file)
index 0000000..95b9037
Binary files /dev/null and b/doc/salome/gui/SMESH/pics/circle_simple_before.png differ
diff --git a/doc/salome/gui/SMESH/pics/curvi_angles_after.png b/doc/salome/gui/SMESH/pics/curvi_angles_after.png
new file mode 100644 (file)
index 0000000..9d06262
Binary files /dev/null and b/doc/salome/gui/SMESH/pics/curvi_angles_after.png differ
diff --git a/doc/salome/gui/SMESH/pics/curvi_simple_after.png b/doc/salome/gui/SMESH/pics/curvi_simple_after.png
new file mode 100644 (file)
index 0000000..ae1d98f
Binary files /dev/null and b/doc/salome/gui/SMESH/pics/curvi_simple_after.png differ
diff --git a/doc/salome/gui/SMESH/pics/curvi_simple_before.png b/doc/salome/gui/SMESH/pics/curvi_simple_before.png
new file mode 100644 (file)
index 0000000..a0bbf73
Binary files /dev/null and b/doc/salome/gui/SMESH/pics/curvi_simple_before.png differ
diff --git a/doc/salome/gui/SMESH/pics/edge_wire_3d_after.png b/doc/salome/gui/SMESH/pics/edge_wire_3d_after.png
new file mode 100644 (file)
index 0000000..3fab598
Binary files /dev/null and b/doc/salome/gui/SMESH/pics/edge_wire_3d_after.png differ
diff --git a/doc/salome/gui/SMESH/pics/edge_wire_3d_before.png b/doc/salome/gui/SMESH/pics/edge_wire_3d_before.png
new file mode 100644 (file)
index 0000000..28f9868
Binary files /dev/null and b/doc/salome/gui/SMESH/pics/edge_wire_3d_before.png differ
diff --git a/doc/salome/gui/SMESH/pics/edge_wire_after.png b/doc/salome/gui/SMESH/pics/edge_wire_after.png
new file mode 100644 (file)
index 0000000..408480e
Binary files /dev/null and b/doc/salome/gui/SMESH/pics/edge_wire_after.png differ
diff --git a/doc/salome/gui/SMESH/pics/edge_wire_before.png b/doc/salome/gui/SMESH/pics/edge_wire_before.png
new file mode 100644 (file)
index 0000000..186528e
Binary files /dev/null and b/doc/salome/gui/SMESH/pics/edge_wire_before.png differ
diff --git a/doc/salome/gui/SMESH/pics/extrusion1.png b/doc/salome/gui/SMESH/pics/extrusion1.png
new file mode 100644 (file)
index 0000000..b7b1559
Binary files /dev/null and b/doc/salome/gui/SMESH/pics/extrusion1.png differ
diff --git a/doc/salome/gui/SMESH/pics/mesh_for_extr_along_path.png b/doc/salome/gui/SMESH/pics/mesh_for_extr_along_path.png
new file mode 100644 (file)
index 0000000..4ee52eb
Binary files /dev/null and b/doc/salome/gui/SMESH/pics/mesh_for_extr_along_path.png differ
diff --git a/doc/salome/gui/SMESH/pics/straight_after.png b/doc/salome/gui/SMESH/pics/straight_after.png
new file mode 100644 (file)
index 0000000..4572fea
Binary files /dev/null and b/doc/salome/gui/SMESH/pics/straight_after.png differ
diff --git a/doc/salome/gui/SMESH/pics/straight_before.png b/doc/salome/gui/SMESH/pics/straight_before.png
new file mode 100644 (file)
index 0000000..200aad8
Binary files /dev/null and b/doc/salome/gui/SMESH/pics/straight_before.png differ
index 4e4d2fcdcb3c78fedc18ed9e2b68ab1ee3516268..2f1f693316815a0148b4b8614c65daafaf541d4f 100755 (executable)
@@ -7,9 +7,10 @@
 <meta http-equiv="content-type" content="text/html; charset=windows-1252">
 <meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style type="text/css">
 <!--
-p.whs1 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs1 { margin-top:0pt; margin-bottom:0pt; font-weight:bold; color:#ff0000; }
 p.whs2 { margin-top:0pt; margin-bottom:0pt; }
-p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
+p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs4 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
 -->
 </style><script type="text/javascript" language="JavaScript">
 <!--
@@ -19,6 +20,7 @@ if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
   strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";
   strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";
   strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
+  strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";
   strNSS +="</style>";
   document.write(strNSS);
 }
@@ -87,1539 +89,1576 @@ if (window.writeIntopicBar)
 
 <h3><a name=bookmark>Free Borders</a></h3>
 
-<p class="whs1">import salome</p>
+<p class="whs1"># Attention! This script has been written 
+ using the old approach basing on direct usage of SMESH idl interface.</p>
 
-<p class="whs1">import geompy</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to check free borders. </p>
 
-<p class="whs1">import SMESH</p>
-
-<p class="whs1">import StdMeshers</p>
-
-<p class="whs1">&nbsp;</p>
-
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
- &quot;SMESH&quot;)</p>
-
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"># create a box without 
- one plane</p>
+<p class="whs3">import salome</p>
 
-<p class="whs1">box = geompy.MakeBox(0., 
- 0., 0., 20., 20., 15.)</p>
-
-<p class="whs1">subShapeList = geompy.SubShapeAll(box, 
- geompy.ShapeType[&quot;FACE&quot;])</p>
+<p class="whs3">import geompy</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">FaceList &nbsp;= 
- []</p>
+<p class="whs3">import smesh</p>
 
-<p class="whs1">for i in range( 
- 5 ):</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs1">&nbsp;&nbsp;FaceList.append( 
- subShapeList[ i ] )</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs2"># create open shell: a 
+ box without one plane</p>
 
-<p class="whs1">aComp = geompy.MakeCompound( 
FaceList )</p>
+<p class="whs3">box = geompy.MakeBox(0., 
0., 0., 20., 20., 15.)</p>
 
-<p class="whs1">aBox = geompy.Sew( 
aComp, 1. )</p>
+<p class="whs3">FaceList = geompy.SubShapeAll(box, 
geompy.ShapeType[&quot;FACE&quot;])</p>
 
-<p class="whs1">idbox = geompy.addToStudy( 
- aBox, &quot;box&quot; )</p>
+<p class="whs3">FaceList.remove(FaceList[5])</p>
 
-<p class="whs1">&nbsp;&nbsp;</p>
+<p class="whs3">box = geompy.MakeShell(FaceList)</p>
 
-<p class="whs1">aBox &nbsp;= 
salome.IDToObject( idbox )</p>
+<p class="whs3">idbox = geompy.addToStudy(box, 
&quot;box&quot;)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs2">&nbsp;</p>
 
 <p class="whs2"># create a mesh</p>
 
-<p class="whs1">hyp1 = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs1">hyp1.SetNumberOfSegments(5)</p>
+<p class="whs3">tria = smesh.Mesh(box, 
+ &quot;Mesh_free_borders&quot;)</p>
 
-<p class="whs1">hyp2 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">algo = tria.Segment()</p>
 
-<p class="whs1">hyp2.SetMaxElementArea(20)</p>
+<p class="whs3">algo.NumberOfSegments(5)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">algo = tria.Triangle()</p>
 
-<p class="whs1">algo1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">algo.MaxElementArea(20.)</p>
 
-<p class="whs1">algo2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">tria.Compute()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
+<p class="whs3">mesh = tria.GetMesh()</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
+<p class="whs3">gen = smesh.smesh</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
-
-<p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
-
-<p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs2"># criterion : free borders</p>
 
-<p class="whs1">smesh.Compute(mesh,aBox)</p>
+<p class="whs3">aFilterMgr = gen.CreateFilterManager()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateFreeBorders()</p>
 
-<p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">smeshgui.SetName( 
- salome.ObjectToID( mesh ), &quot;Mesh_freebord&quot; );</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"># criterion : free borders</p>
-
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
-
-<p class="whs1">aPredicate = aFilterMgr.CreateFreeBorders()</p>
+<p class="whs2"># print the result</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">print &quot;Criterion: 
+ Free borders Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">j = 1</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">for i in range(len(anIds)):</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;if 
+ j &gt; 20: j = 1; print &quot;&quot;</p>
 
-<p class="whs2"># print the result</p>
+<p class="whs3">&nbsp;&nbsp;print 
+ anIds[i],</p>
 
-<p class="whs1">print &quot;Criterion: 
Free borders Nb = &quot;, len( anIds )</p>
+<p class="whs3">&nbsp;&nbsp;j 
= j + 1</p>
 
-<p class="whs1">for i in range( 
- len( anIds ) ):</p>
+<p class="whs3">&nbsp;&nbsp;pass</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">print &quot;&quot;</p>
 
 <p class="whs2">&nbsp;</p>
 
 <p class="whs2"># create a group</p>
 
-<p class="whs1">aGroup = mesh.CreateGroup( 
- SMESH.EDGE, &quot;Free borders&quot; )</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.EDGE, 
+ &quot;Free borders&quot;)</p>
+
+<p class="whs3">aGroup.Add(anIds)</p>
 
-<p class="whs1">aGroup.Add( anIds 
- )</p>
+<p class="whs3">&nbsp;</p>
 
 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
  </p>
 
-<p class="whs2">&nbsp;</p>
-
 <h3><a name=bookmark1>Borders at Multiconnection</a></h3>
 
-<p class="whs1">import salome</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs1">import geompy</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to check borders at multiconnection. </p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">import StdMeshers</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">import salome</p>
 
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
- &quot;SMESH&quot;)</p>
+<p class="whs3">import geompy</p>
 
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">import smesh</p>
 
-<p class="whs2"># create a box without 
- one plane</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
+
+<p class="whs4"># create open shell: 
+ a box without one plane</p>
 
-<p class="whs1">box = geompy.MakeBox(0., 
+<p class="whs3">box = geompy.MakeBox(0., 
  0., 0., 20., 20., 15.)</p>
 
-<p class="whs1">subShapeList = geompy.SubShapeAll(box, 
+<p class="whs3">FaceList = geompy.SubShapeAll(box, 
  geompy.ShapeType[&quot;FACE&quot;])</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">FaceList.remove(FaceList[5])</p>
 
-<p class="whs1">FaceList &nbsp;= 
- []</p>
+<p class="whs3">box = geompy.MakeShell(FaceList)</p>
 
-<p class="whs1">for i in range( 
5 ):</p>
+<p class="whs3">idbox = geompy.addToStudy(box, 
&quot;box&quot;)</p>
 
-<p class="whs1">&nbsp;&nbsp;FaceList.append( 
- subShapeList[ i ] )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs4"># create a mesh</p>
 
-<p class="whs1">aComp = geompy.MakeCompound( 
FaceList )</p>
+<p class="whs3">tria = smesh.Mesh(box, 
&quot;Mesh_borders_at_multi-connections&quot;)</p>
 
-<p class="whs1">aBox = geompy.Sew( 
- aComp, 1. )</p>
+<p class="whs3">algo = tria.Segment()</p>
 
-<p class="whs1">idbox = geompy.addToStudy( 
- aBox, &quot;box&quot; )</p>
+<p class="whs3">algo.NumberOfSegments(5)</p>
 
-<p class="whs1">&nbsp;&nbsp;</p>
+<p class="whs3">algo = tria.Triangle()</p>
 
-<p class="whs1">aBox &nbsp;= 
- salome.IDToObject( idbox )</p>
+<p class="whs3">algo.MaxElementArea(20.)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">tria.Compute()</p>
 
-<p class="whs2"># create a mesh</p>
+<p class="whs3">mesh = tria.GetMesh()</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">gen = smesh.smesh</p>
+
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">hyp1 = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
&quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs4"># Criterion : Borders 
at multi-connection</p>
 
-<p class="whs1">hyp1.SetNumberOfSegments(5)</p>
+<p class="whs3">nb_conn = 2</p>
 
-<p class="whs1">hyp2 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">hyp2.SetMaxElementArea(20)</p>
+<p class="whs3">aFilterMgr = gen.CreateFilterManager()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateMultiConnection()</p>
 
-<p class="whs1">algo1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">algo2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateEqualTo()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
+<p class="whs3">aPredicate.SetMargin(nb_conn)</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">smesh.Compute(mesh,aBox)</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs4"># print the result</p>
 
-<p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>
+<p class="whs3">print &quot;Criterion: 
+ Borders at multi-connections Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs3">j = 1</p>
 
-<p class="whs1">smeshgui.SetName( 
- salome.ObjectToID( mesh ), &quot;Mesh_borders_at_multi-connections&quot; 
- );</p>
+<p class="whs3">for i in range(len(anIds)):</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;if 
+ j &gt; 20: j = 1; print &quot;&quot;</p>
 
-<p class="whs2"># Criterion : Borders a
multi-connection</p>
+<p class="whs3">&nbsp;&nbsp;prin
anIds[i],</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3">&nbsp;&nbsp;j 
+ = j + 1</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateMultiConnection()</p>
+<p class="whs3">&nbsp;&nbsp;pass</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">print &quot;&quot;</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateEqualTo()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
- aFunctor )</p>
+<p class="whs4"># create a group</p>
 
-<p class="whs1">aPredicate.SetMargin( 
)</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.EDGE, 
&quot;Borders at multi-connections&quot;)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aGroup.Add(anIds)</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">salome.sg.updateObjBrowser(1) 
+ </p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<h3><a name=bookmark2>Length 1D</a></h3>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to check length 1D. </p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs2"># print the result</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs1">print &quot;Criterion: 
- Borders at multi-connections Nb = &quot;, len( anIds )</p>
+<p class="whs3">import salome</p>
 
-<p class="whs1">for i in range( 
- len( anIds ) ):</p>
+<p class="whs3">import geompy</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">import smesh</p>
+
+<p class="whs3">import SMESH</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"># create a group</p>
+<p class="whs2"># create open shell: a 
+ box without one plane</p>
 
-<p class="whs1">aGroup = mesh.CreateGroup( 
SMESH.EDGE, &quot;Borders at multi-connections&quot; )</p>
+<p class="whs3">box = geompy.MakeBox(0., 
0., 0., 20., 20., 15.)</p>
 
-<p class="whs1">aGroup.Add( anIds 
- )</p>
+<p class="whs3">FaceList = geompy.SubShapeAll(box, 
geompy.ShapeType[&quot;FACE&quot;])</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs3">FaceList.remove(FaceList[5])</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">box = geompy.MakeShell(FaceList)</p>
 
-<h3><a name=bookmark2>Length 1D</a></h3>
+<p class="whs3">idbox = geompy.addToStudy(box, 
+ &quot;box&quot;)</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs1">import salome</p>
+<p class="whs2"># create a mesh</p>
 
-<p class="whs1">import geompy</p>
+<p class="whs3">tria = smesh.Mesh(box, 
+ &quot;Mesh_Length_1D&quot;)</p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs3">algo = tria.Segment()</p>
 
-<p class="whs1">import StdMeshers</p>
+<p class="whs3">algo.NumberOfSegments(5)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">algo = tria.Triangle()</p>
 
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
- &quot;SMESH&quot;)</p>
+<p class="whs3">algo.MaxElementArea(20.)</p>
 
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs3">tria.Compute()</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">mesh = tria.GetMesh()</p>
 
-<p class="whs2"># create a box without 
- one plane</p>
+<p class="whs3">gen = smesh.smesh</p>
 
-<p class="whs1">box = geompy.MakeBox(0., 
- 0., 0., 20., 20., 15.)</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs1">subShapeList = geompy.SubShapeAll(box, 
geompy.ShapeType[&quot;FACE&quot;])</p>
+<p class="whs2"># Criterion : Length &gt; 
3.</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">length_margin = 
+ 3.</p>
 
-<p class="whs1">FaceList &nbsp;= 
- []</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">for i in range( 
- 5 ):</p>
+<p class="whs3">aFilterMgr = gen.CreateFilterManager()</p>
 
-<p class="whs1">&nbsp;&nbsp;FaceList.append( 
- subShapeList[ i ] )</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateLength()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aComp = geompy.MakeCompound( 
- FaceList )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
 
-<p class="whs1">aBox = geompy.Sew( 
- aComp, 1. )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">idbox = geompy.addToStudy( 
- aBox, &quot;box&quot; )</p>
+<p class="whs3">aPredicate.SetMargin(length_margin)</p>
 
-<p class="whs1">&nbsp;&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aBox &nbsp;= 
- salome.IDToObject( idbox )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs2"># create a mesh</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">hyp1 = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">hyp1.SetNumberOfSegments(5)</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs1">hyp2 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs2"># print the result</p>
 
-<p class="whs1">hyp2.SetMaxElementArea(20)</p>
+<p class="whs3">print &quot;Criterion: 
+ Edges length &gt; &quot;, length_margin, &quot; Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">j = 1</p>
 
-<p class="whs1">algo1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">for i in range(len(anIds)):</p>
 
-<p class="whs1">algo2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
&quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">&nbsp;&nbsp;if 
j &gt; 20: j = 1; print &quot;&quot;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;print 
+ anIds[i],</p>
 
-<p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
+<p class="whs3">&nbsp;&nbsp;j 
+ = j + 1</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
+<p class="whs3">&nbsp;&nbsp;pass</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
+<p class="whs3">print &quot;&quot;</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
+<p class="whs2"># create a group</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.EDGE, 
+ &quot;Edges with length &gt; &quot; + `length_margin`)</p>
 
-<p class="whs1">smesh.Compute(mesh,aBox)</p>
+<p class="whs3">aGroup.Add(anIds)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>
+<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
+ </p>
 
-<p class="whs1">smeshgui.Init(salome.myStudyId);</p>
+<h3><a name=bookmark3>Free Edges</a></h3>
 
-<p class="whs1">smeshgui.SetName( 
- salome.ObjectToID( mesh ), &quot;Mesh&quot; );</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to check free edges. </p>
 
-<p class="whs2"># Criterion : Length &gt; 
3</p>
+<p class="whs1"># In the next SALOME version the scripts will 
be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateLength()</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
aFunctor )</p>
+<p class="whs3">smesh &nbsp;= 
SMESH_mechanic.smesh</p>
 
-<p class="whs1">aPredicate.SetMargin( 
3 )</p>
+<p class="whs3">mesh &nbsp;&nbsp;= 
SMESH_mechanic.mesh</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
mesh )</p>
+<p class="whs4"># Remove some elements 
to obtain free edges</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs4"># Criterion : AREA 
+ &gt; 95.</p>
 
-<p class="whs2"># print the result</p>
+<p class="whs3">area_margin = 95.</p>
 
-<p class="whs1">print &quot;Criterion: 
- Edges length &gt; 3 Nb = &quot;, len( anIds )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">for i in range( 
- len( anIds ) ):</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs2"># create a group</p>
+<p class="whs3">aPredicate.SetMargin(area_margin)</p>
 
-<p class="whs1">aGroup = mesh.CreateGroup( 
- SMESH.EDGE, &quot;Edges with legth &gt; 3&quot; )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aGroup.Add( anIds 
- )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">salome.sg.updateObjBrowser(1)</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<h3><a name=bookmark3>Free Edges</a></h3>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs3">anEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">anEditor.RemoveElements(anIds)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">smesh &nbsp;= 
SMESH_mechanic.smesh</p>
+<p class="whs4"># Criterion : Free 
Edges</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateFreeEdges()</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">aPredicate.SetMesh(mesh)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aBorders = aPredicate.GetBorders()</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs4"># create groups</p>
 
-<p class="whs2"># Criterion : AREA &gt; 
30</p>
+<p class="whs3">aGroupF = mesh.CreateGroup(SMESH.FACE, 
&quot;Faces with free edges&quot;)</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">aGroupN = mesh.CreateGroup(SMESH.NODE, 
+ &quot;Nodes on free edges&quot;)</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
aFunctor )</p>
+<p class="whs4"># fill groups with 
elements, corresponding to the criterion</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 95 )</p>
+<p class="whs3">print &quot;&quot;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">print &quot;Criterion: 
+ Free edges Nb = &quot;, len(aBorders)</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">for i in range(len(aBorders)):</p>
 
-<p class="whs1">aFilter.SetPredicate( 
aPredicate )</p>
+<p class="whs3">&nbsp;&nbsp;aBorder 
= aBorders[i]</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;print 
+ &quot;Face # &quot;, aBorder.myElemId, &quot; : Edge between nodes (&quot;,</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
mesh )</p>
+<p class="whs3">&nbsp;&nbsp;print 
aBorder.myPnt1, &quot;, &quot;, aBorder.myPnt2, &quot;)&quot;</p>
 
-<p class="whs1">anEditor = mesh.GetMeshEditor()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">anEditor.RemoveElements(anIds)</p>
+<p class="whs3">&nbsp;&nbsp;<span 
+ style="margin-top: 0pt;
+               margin-bottom: 0pt;
+               font-family: 'Lucida Console', monospace;">aGroupF.Add([aBorder.myElemId])</span></p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;aGroupN.Add([aBorder.myPnt1, 
+ aBorder.myPnt2])</p>
 
-<p class="whs2"># Criterion : Free Edges</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">salome.sg.updateObjBrowser(1) 
+ </p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateFreeEdges()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate.SetMesh( 
- mesh )</p>
+<h3><a name=bookmark4>Length 2D</a></h3>
 
-<p class="whs1">aBorders = aPredicate.GetBorders()</p>
+<p class="whs1"><span><font color=red ><B><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></B></font></span></p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to check length 2D. </p>
 
-<p class="whs2"># create groups</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">aGroupF = mesh.CreateGroup( 
- SMESH.FACE, &quot;Faces with free edges&quot; )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aGroupN = mesh.CreateGroup( 
- SMESH.NODE, &quot;Nodes on free edges&quot; )</p>
+<p class="whs3">import salome</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">import geompy</p>
 
-<p class="whs2"># fill groups with elements, 
- corresponding to the criterion</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">print &quot;&quot;</p>
+<p class="whs3">import smesh</p>
 
-<p class="whs1">print &quot;Criterion: 
- Free edges Nb = &quot;, len( aBorders )</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs1">for i in range( 
- len( aBorders ) ):</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;&nbsp;aBorder 
= aBorders[ i ]</p>
+<p class="whs4"># create open shell: 
a box without one plane</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
&quot;Face # &quot;, aBorder.myElemId, &quot; : Edge between nodes (&quot;,</p>
+<p class="whs3">box = geompy.MakeBox(0., 
0., 0., 20., 20., 15.)</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
aBorder.myPnt1, &quot;, &quot;, aBorder.myPnt2, &quot;)&quot;</p>
+<p class="whs3">FaceList = geompy.SubShapeAll(box, 
geompy.ShapeType[&quot;FACE&quot;])</p>
 
-<p class="whs1">&nbsp;&nbsp;</p>
+<p class="whs3">FaceList.remove(FaceList[5])</p>
 
-<p class="whs1">&nbsp;&nbsp;aGroupF.Add( 
- [aBorder.myElemId] )</p>
+<p class="whs3">box = geompy.MakeShell(FaceList)</p>
 
-<p class="whs1">&nbsp;&nbsp;aGroupN.Add( 
[aBorder.myPnt1, aBorder.myPnt2] )</p>
+<p class="whs3">idbox = geompy.addToStudy(box, 
&quot;box&quot;)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs4"># create a mesh</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">tria = smesh.Mesh(box, 
+ &quot;Mesh_Length_2D&quot;)</p>
 
-<h3><a name=bookmark4>Length 2D</a></h3>
+<p class="whs3">algo = tria.Segment()</p>
 
-<p class="whs1">import salome</p>
+<p class="whs3">algo.NumberOfSegments(5)</p>
 
-<p class="whs1">import geompy</p>
+<p class="whs3">algo = tria.Triangle()</p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs3">algo.MaxElementArea(20.)</p>
 
-<p class="whs1">import StdMeshers</p>
+<p class="whs3">tria.Compute()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
- &quot;SMESH&quot;)</p>
+<p class="whs3">mesh = tria.GetMesh()</p>
 
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs3">gen = smesh.smesh</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># create a box without 
one plane</p>
+<p class="whs4"># Criterion : Length 
2D &gt; 5.7</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">length_margin = 
+ 5.7</p>
 
-<p class="whs1">box = geompy.MakeBox(0., 
- 0., 0., 20., 20., 15.)</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">subShapeList = geompy.SubShapeAll(box, 
- geompy.ShapeType[&quot;FACE&quot;])</p>
+<p class="whs3">aFilterMgr = gen.CreateFilterManager()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateLength2D()</p>
 
-<p class="whs1">FaceList &nbsp;= 
- []</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">for i in range( 
- 5 ):</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
 
-<p class="whs1">&nbsp;&nbsp;FaceList.append( 
- subShapeList[ i ] )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate.SetMargin(length_margin)</p>
 
-<p class="whs1">aComp = geompy.MakeCompound( 
- FaceList )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aBox = geompy.Sew( 
- aComp, 1. )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">idbox = geompy.addToStudy( 
- aBox, &quot;box&quot; )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">&nbsp;&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aBox &nbsp;= 
- salome.IDToObject( idbox )</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># create a mesh</p>
+<p class="whs4"># print the result</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">print &quot;Criterion: 
+ Edges length 2D &gt; &quot;, length_margin, &quot; Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">hyp1 = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">j = 1</p>
 
-<p class="whs1">hyp1.SetNumberOfSegments(5)</p>
+<p class="whs3">for i in range(len(anIds)):</p>
 
-<p class="whs1">hyp2 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, 
&quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">&nbsp;&nbsp;if 
j &gt; 20: j = 1; print &quot;&quot;</p>
 
-<p class="whs1">hyp2.SetMaxElementArea(20)</p>
+<p class="whs3">&nbsp;&nbsp;print 
+ anIds[i],</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;j 
+ = j + 1</p>
 
-<p class="whs1">algo1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">&nbsp;&nbsp;pass</p>
 
-<p class="whs1">algo2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">print &quot;&quot;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
+<p class="whs4"># create a group</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE, 
+ &quot;Faces with length 2D &gt; &quot; + `length_margin`)</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
+<p class="whs3">aGroup.Add(anIds)</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
+<p class="whs3">salome.sg.updateObjBrowser(1) 
+ </p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs1">smesh.Compute(mesh,aBox)</p>
+<h3><a name=bookmark5>Borders at Multiconnection 2D</a></h3>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span 
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has 
+ been written using the old approach basing on direct usage of SMESH idl 
+ interface.</B></font></span></B></font></span></p>
 
-<p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to check borders at multiconnection 2D. </p>
 
-<p class="whs1">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">smeshgui.SetName( 
- salome.ObjectToID( mesh ), &quot;Mesh&quot; );</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">import salome</p>
 
-<p class="whs2"># Criterion : Length 2D 
- &gt; 5</p>
+<p class="whs3">import geompy</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateLength2D()</p>
+<p class="whs3">import smesh</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
aFunctor )</p>
+<p class="whs4"># create a compound 
of two glued boxes</p>
 
-<p class="whs1">aPredicate.SetMargin( 
)</p>
+<p class="whs3">box1 = geompy.MakeBox(0., 
0., 0., 20., 20., 15.)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">box2 = geompy.MakeTranslation(box1, 
+ 0., 20., 0)</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">comp = geompy.MakeCompound([box1, 
+ box2])</p>
 
-<p class="whs1">aFilter.SetPredicate( 
aPredicate )</p>
+<p class="whs3">box = geompy.MakeGlueFaces(comp, 
0.000001)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">idbox = geompy.addToStudy(box, 
+ &quot;box&quot;)</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs4"># create a mesh</p>
 
-<p class="whs2"># print the result</p>
+<p class="whs3">tria = smesh.Mesh(box, 
+ &quot;Box compound : 2D triangle mesh&quot;)</p>
 
-<p class="whs1">print &quot;Criterion: 
- Edges length 2D &gt; 5 Nb = &quot;, len( anIds )</p>
+<p class="whs3">algo = tria.Segment()</p>
 
-<p class="whs1">for i in range( 
- len( anIds ) ):</p>
+<p class="whs3">algo.NumberOfSegments(5)</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">algo = tria.Triangle()</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">algo.MaxElementArea(20.)</p>
 
-<p class="whs2"># create a group</p>
+<p class="whs3">tria.Compute()</p>
 
-<p class="whs1">aGroup = mesh.CreateGroup( 
- SMESH.FACE, &quot;Edges with legth 2D &gt; 5&quot; )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aGroup.Add( anIds 
- )</p>
+<p class="whs3">mesh = tria.GetMesh()</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- &nbsp;</p>
+<p class="whs3">gen = smesh.smesh</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<h3><a name=bookmark5>Borders at Multiconnection 2D</a></h3>
+<p class="whs4"># Criterion : MULTI-CONNECTION 
+ 2D = 3</p>
 
-<p class="whs1">import salome</p>
+<p class="whs3">nb_conn = 3</p>
 
-<p class="whs1">import geompy</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs3">aFilterMgr = gen.CreateFilterManager()</p>
 
-<p class="whs1">import StdMeshers</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateMultiConnection2D()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
- &quot;SMESH&quot;)</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateEqualTo()</p>
 
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate.SetMargin(nb_conn)</p>
 
-<p class="whs2"># create a box without 
- one plane</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">box = geompy.MakeBox(0., 
- 0., 0., 20., 20., 15.)</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">subShapeList = geompy.SubShapeAll(box, 
- geompy.ShapeType[&quot;FACE&quot;])</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">FaceList &nbsp;= 
- []</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">for i in range( 
- 5 ):</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;&nbsp;FaceList.append( 
- subShapeList[ i ] )</p>
+<p class="whs4"># print the result</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">print &quot;Criterion: 
+ Borders at multi-connection 2D = &quot;, nb_conn, &quot; Nb = &quot;, 
+ len(anIds)</p>
 
-<p class="whs1">aComp = geompy.MakeCompound( 
- FaceList )</p>
+<p class="whs3">j = 1</p>
 
-<p class="whs1">aBox = geompy.Sew( 
- aComp, 1. )</p>
+<p class="whs3">for i in range(len(anIds)):</p>
 
-<p class="whs1">idbox = geompy.addToStudy( 
aBox, &quot;box&quot; )</p>
+<p class="whs3">&nbsp;&nbsp;if 
j &gt; 20: j = 1; print &quot;&quot;</p>
 
-<p class="whs1">&nbsp;&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;print 
+ anIds[i],</p>
 
-<p class="whs1">aBox &nbsp;= 
salome.IDToObject( idbox )</p>
+<p class="whs3">&nbsp;&nbsp;j 
= j + 1</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;pass</p>
 
-<p class="whs2"># create a mesh</p>
+<p class="whs3">print &quot;&quot;</p>
 
-<p class="whs1">hyp1 = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">hyp1.SetNumberOfSegments(5)</p>
+<p class="whs4"># create a group</p>
 
-<p class="whs1">hyp2 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE
+ &quot;Borders at multi-connection 2D = &quot; + `nb_conn`)</p>
 
-<p class="whs1">hyp2.SetMaxElementArea(20)</p>
+<p class="whs3">aGroup.Add(anIds)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">algo1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
&quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">salome.sg.updateObjBrowser(1) 
+ </p>
 
-<p class="whs1">algo2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<h3><a name=bookmark6>Area</a></h3>
 
-<p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span 
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has 
+ been written using the old approach basing on direct usage of SMESH idl 
+ interface.</B></font></span></B></font></span></p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to check area. </p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs1">smesh.Compute(mesh,aBox)</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>
+<p class="whs3">smesh &nbsp;= 
+ SMESH_mechanic.smesh</p>
 
-<p class="whs1">smeshgui.Init(salome.myStudyId);</p>
+<p class="whs3">mesh &nbsp;&nbsp;= 
+ SMESH_mechanic.mesh</p>
 
-<p class="whs1">smeshgui.SetName( 
- salome.ObjectToID( mesh ), &quot;Mesh&quot; );</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
 
 <p class="whs2">&nbsp;</p>
 
-<p class="whs2"># Criterion : MULTI-CONNECTION 
- 2D = 2</p>
+<p class="whs2"># Criterion : AREA &gt; 
+ 100.</p>
+
+<p class="whs3">area_margin = 100.</p>
+
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateMultiConnection2D()</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateArea()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateEqualTo()</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
- aFunctor )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 2 )</p>
+<p class="whs3">aPredicate.SetMargin(area_margin)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
 <p class="whs2">&nbsp;</p>
 
 <p class="whs2"># print the result</p>
 
-<p class="whs1">print &quot;Criterion: 
Borders at multi-connection 2D = 2 Nb = &quot;, len( anIds )</p>
+<p class="whs3">print &quot;Criterion: 
Area &gt; &quot;, area_margin, &quot; Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">for i in range( 
- len( anIds ) ):</p>
+<p class="whs3">j = 1</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">for i in range(len(anIds)):</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;if 
+ j &gt; 20: j = 1; print &quot;&quot;</p>
+
+<p class="whs3">&nbsp;&nbsp;print 
+ anIds[i],</p>
+
+<p class="whs3">&nbsp;&nbsp;j 
+ = j + 1</p>
+
+<p class="whs3">&nbsp;&nbsp;pass</p>
+
+<p class="whs3">print &quot;&quot;</p>
+
+<p class="whs3">&nbsp;</p>
 
 <p class="whs2"># create a group</p>
 
-<p class="whs1">aGroup = mesh.CreateGroup( 
SMESH.FACE, &quot;Borders at multi-connection 2D = 2&quot; )</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE, 
&quot;Area &gt; &quot; + `area_margin`)</p>
 
-<p class="whs1">aGroup.Add( anIds 
- )</p>
+<p class="whs3">aGroup.Add(anIds)</p>
+
+<p class="whs3">&nbsp;</p>
 
 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
  </p>
 
-<p class="whs2">&nbsp;</p>
+<h3><a name=bookmark7>Taper</a></h3>
 
-<h3><a name=bookmark6>Area</a></h3>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span 
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has 
+ been written using the old approach basing on direct usage of SMESH idl 
+ interface.</B></font></span></B></font></span></p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to check taper. </p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">smesh &nbsp;= 
+<p class="whs3">import SMESH</p>
+
+<p class="whs3">import SMESH_mechanic</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">smesh &nbsp;= 
  SMESH_mechanic.smesh</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
+<p class="whs3">mesh &nbsp;&nbsp;= 
  SMESH_mechanic.mesh</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs4"># Criterion : Taper 
+ &gt; 3e-20</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">taper_margin = 3e-20</p>
 
-<p class="whs2"># Criterion : AREA &gt; 
- 100</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateTaper()</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
- aFunctor )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 100 )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate.SetMargin(taper_margin)</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs2"># print the result</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">print &quot;Criterion: 
- Area &gt; 100 Nb = &quot;, len( anIds )</p>
+<p class="whs4"># print the result</p>
 
-<p class="whs1">for i in range( 
len( anIds ) ):</p>
+<p class="whs3">print &quot;Criterion: 
Taper &gt; &quot;, taper_margin, &quot; Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">j = 1</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">for i in range(len(anIds)):</p>
 
-<p class="whs2"># create a group</p>
+<p class="whs3">&nbsp;&nbsp;if 
+ j &gt; 20: j = 1; print &quot;&quot;</p>
 
-<p class="whs1">aGroup = mesh.CreateGroup( 
SMESH.FACE, &quot;Area &gt; 100&quot; )</p>
+<p class="whs3">&nbsp;&nbsp;print 
anIds[i],</p>
 
-<p class="whs1">aGroup.Add( anIds 
)</p>
+<p class="whs3">&nbsp;&nbsp;j 
= j + 1</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;pass</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs3">print &quot;&quot;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<h3><a name=bookmark7>Taper</a></h3>
+<p class="whs4"># create a group</p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE, 
+ &quot;Taper &gt; &quot; + `taper_margin`)</p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">aGroup.Add(anIds)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">smesh &nbsp;= 
SMESH_mechanic.smesh</p>
+<p class="whs3">salome.sg.updateObjBrowser(1) 
+ </p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<h3><a name=bookmark8>Aspect Ratio</a></h3>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span 
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has 
+ been written using the old approach basing on direct usage of SMESH idl 
+ interface.</B></font></span></B></font></span></p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to check aspect ratio. </p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># Criterion : Taper &gt; 
- 3e-20</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateTaper()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">smesh &nbsp;= 
+ SMESH_mechanic.smesh</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
aFunctor )</p>
+<p class="whs3">mesh &nbsp;&nbsp;= 
SMESH_mechanic.mesh</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 3e-20 )</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs4"># Criterion : ASPECT 
+ RATIO &gt; 1.8</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">ar_margin = 1.8</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateAspectRatio()</p>
 
-<p class="whs2"># print the result</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">print &quot;Criterion: 
- Taper &gt; 3e-20 Nb = &quot;, len( anIds )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
 
-<p class="whs1">for i in range( 
- len( anIds ) ):</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">aPredicate.SetMargin(ar_margin)</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># create a group</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">aGroup = mesh.CreateGroup( 
- SMESH.FACE, &quot;Taper &gt; 3e-20&quot; )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">aGroup.Add( anIds 
- )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs4"># print the result</p>
 
-<h3><a name=bookmark8>Aspect Ratio</a></h3>
+<p class="whs3">print &quot;Criterion: 
+ Aspect Ratio &gt; &quot;, ar_margin, &quot; Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs3">j = 1</p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">for i in range(len(anIds)):</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;if 
+ j &gt; 20: j = 1; print &quot;&quot;</p>
 
-<p class="whs1">smesh &nbsp;= 
SMESH_mechanic.smesh</p>
+<p class="whs3">&nbsp;&nbsp;print 
anIds[i],</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
SMESH_mechanic.mesh</p>
+<p class="whs3">&nbsp;&nbsp;j 
= j + 1</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">&nbsp;&nbsp;pass</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">print &quot;&quot;</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs4"># create a group</p>
 
-<p class="whs2"># Criterion : ASPECT RATIO 
- &gt; 1.4</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE, 
+ &quot;Aspect Ratio &gt; &quot; + `ar_margin`)</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">aGroup.Add(anIds)</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateAspectRatio()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">salome.sg.updateObjBrowser(1) 
+ </p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
- aFunctor )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 1.4 )</p>
+<h3><a name=bookmark9>Minimum Angle</a></h3>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span 
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has 
+ been written using the old approach basing on direct usage of SMESH idl 
+ interface.</B></font></span></B></font></span></p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to check minimum angle. </p>
 
-<p class="whs1">aFilter.SetPredicate( 
aPredicate )</p>
+<p class="whs1"># In the next SALOME version the scripts will 
be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs2"># print the result</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">print &quot;Criterion: 
Aspect Ratio &gt; 1.4 Nb = &quot;, len( anIds )</p>
+<p class="whs3">smesh &nbsp;= 
SMESH_mechanic.smesh</p>
 
-<p class="whs1">for i in range( 
len( anIds ) ):</p>
+<p class="whs3">mesh &nbsp;&nbsp;= 
SMESH_mechanic.mesh</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2"># create a group</p>
+<p class="whs4"># Criterion : MINIMUM 
+ ANGLE &lt; 35.</p>
 
-<p class="whs1">aGroup = mesh.CreateGroup( 
- SMESH.FACE, &quot;Aspect Ratio &gt; 1.4&quot; )</p>
+<p class="whs3">min_angle = 35.</p>
 
-<p class="whs1">aGroup.Add( anIds 
- )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
 
-<p class="whs1">salome.sg.updateObjBrowser(1) 
- </p>
+<p class="whs3">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<h3><a name=bookmark9>Minimum Angle</a></h3>
+<p class="whs3">aPredicate = aFilterMgr.CreateLessThan()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs3">aPredicate.SetMargin(min_angle)</p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">smesh &nbsp;= 
- SMESH_mechanic.smesh</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs4"># print the result</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">print &quot;Criterion: 
+ Minimum Angle &lt; &quot;, min_angle, &quot; Nb = &quot;, len(anIds)</p>
 
-<p class="whs3"># Criterion : MINIMUM 
- ANGLE &lt; 70</p>
+<p class="whs3">j = 1</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">for i in range(len(anIds)):</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
+<p class="whs3">&nbsp;&nbsp;if 
+ j &gt; 20: j = 1; print &quot;&quot;</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>
+<p class="whs3">&nbsp;&nbsp;print 
+ anIds[i],</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
aFunctor )</p>
+<p class="whs3">&nbsp;&nbsp;j 
= j + 1</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 70 )</p>
+<p class="whs3">&nbsp;&nbsp;pass</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">print &quot;&quot;</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs4"># create a group</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE, 
+ &quot;Minimum Angle &lt; &quot; + `min_angle`)</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">aGroup.Add(anIds)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs3"># print the result</p>
+<p class="whs3">salome.sg.updateObjBrowser(1) 
+ </p>
 
-<p class="whs1">print &quot;Criterion: 
- Minimum Angle &lt; 70 Nb = &quot;, len( anIds )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">for i in range( 
- len( anIds ) ):</p>
+<h3><a name=bookmark10>Warping</a></h3>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span 
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has 
+ been written using the old approach basing on direct usage of SMESH idl 
+ interface.</B></font></span></B></font></span></p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to check warping. </p>
 
-<p class="whs3"># create a group</p>
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs1">aGroup = mesh.CreateGroup( 
- SMESH.FACE, &quot;Minimum Angle &lt; 70&quot; )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aGroup.Add( anIds 
- )</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs1">salome.sg.updateObjBrowser(1) 
- </p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">smesh &nbsp;= 
+ SMESH_mechanic.smesh</p>
 
-<h3><a name=bookmark10>Warping</a></h3>
+<p class="whs3">mesh &nbsp;&nbsp;= 
+ SMESH_mechanic.mesh</p>
 
-<p class="whs1">import SMESH</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs4"># Criterion : WARP 
+ ANGLE &gt; 1e-15</p>
 
-<p class="whs1">smesh &nbsp;= 
- SMESH_mechanic.smesh</p>
+<p class="whs3">wa_margin = 1e-15</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateWarping()</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
 
-<p class="whs2"># Criterion : WARP ANGLE 
- &gt; 1e-15</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">aPredicate.SetMargin(wa_margin)</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateWarping()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
- aFunctor )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 1e-15 )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs4"># print the result</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">print &quot;Criterion: 
+ Warp &gt; &quot;, wa_margin, &quot; Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">j = 1</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">for i in range(len(anIds)):</p>
 
-<p class="whs2"># print the result</p>
+<p class="whs3">&nbsp;&nbsp;if 
+ j &gt; 20: j = 1; print &quot;&quot;</p>
 
-<p class="whs1">print &quot;Criterion: 
Warp &gt; 1e-15 Nb = &quot;, len( anIds )</p>
+<p class="whs3">&nbsp;&nbsp;print 
anIds[i],</p>
 
-<p class="whs1">for i in range( 
len( anIds ) ):</p>
+<p class="whs3">&nbsp;&nbsp;j 
= j + 1</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">&nbsp;&nbsp;pass</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">print &quot;&quot;</p>
 
-<p class="whs2"># create a group</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aGroup = mesh.CreateGroup( 
- SMESH.FACE, &quot;Warp &gt; 1e-15&quot; )</p>
+<p class="whs4"># create a group</p>
 
-<p class="whs1">aGroup.Add( anIds 
- )</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE, 
&quot;Warp &gt; &quot; + `wa_margin`)</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
+<p class="whs3">aGroup.Add(anIds)</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">salome.sg.updateObjBrowser(1) 
  </p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
 <h3><a name=bookmark12>Skew</a></h3>
 
-<p class="whs1">import SMESH</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span 
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has 
+ been written using the old approach basing on direct usage of SMESH idl 
+ interface.</B></font></span></B></font></span></p>
+
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to check skew. </p>
+
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">import SMESH_mechanic</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs1">smesh &nbsp;= 
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">smesh &nbsp;= 
  SMESH_mechanic.smesh</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
+<p class="whs3">mesh &nbsp;&nbsp;= 
  SMESH_mechanic.mesh</p>
 
-<p class="whs1">salome = SMESH_mechanic.salome</p>
+<p class="whs3">salome = SMESH_mechanic.salome</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs4"># Criterion : Skew 
+ &gt; 38.</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">skew_margin = 38.</p>
 
-<p class="whs2"># Criterion : Skew &gt; 
- 18</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateSkew()</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateSkew()</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
- aFunctor )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 18 )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate.SetMargin(skew_margin)</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs2"># print the result</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">print &quot;Criterion: 
- Skew &gt; 18 Nb = &quot;, len( anIds )</p>
+<p class="whs4"># print the result</p>
 
-<p class="whs1">for i in range( 
len( anIds ) ):</p>
+<p class="whs3">print &quot;Criterion: 
Skew &gt; &quot;, skew_margin, &quot; Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">j = 1</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">for i in range(len(anIds)):</p>
 
-<p class="whs2"># create a group</p>
+<p class="whs3">&nbsp;&nbsp;if 
+ j &gt; 20: j = 1; print &quot;&quot;</p>
 
-<p class="whs1">aGroup = mesh.CreateGroup( 
SMESH.FACE, &quot;Skew &gt; 18&quot; )</p>
+<p class="whs3">&nbsp;&nbsp;print 
anIds[i],</p>
 
-<p class="whs1">aGroup.Add( anIds 
)</p>
+<p class="whs3">&nbsp;&nbsp;j 
= j + 1</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;pass</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
+<p class="whs3">print &quot;&quot;</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs4"># create a group</p>
+
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.FACE, 
+ &quot;Skew &gt; &quot; + `skew_margin`)</p>
+
+<p class="whs3">aGroup.Add(anIds)</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">salome.sg.updateObjBrowser(1) 
  </p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
 <h3><a name=bookmark11>Aspect Ratio 3D</a></h3>
 
-<p class="whs1">import SMESH</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span 
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has 
+ been written using the old approach basing on direct usage of SMESH idl 
+ interface.</B></font></span></B></font></span></p>
+
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to check aspect ratio 3D. </p>
+
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">import SMESH_mechanic_tetra</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">import SMESH_mechanic_tetra</p>
 
-<p class="whs1">smesh &nbsp;= 
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">smesh &nbsp;= 
  SMESH_mechanic_tetra.smesh</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
+<p class="whs3">mesh &nbsp;&nbsp;= 
  SMESH_mechanic_tetra.mesh</p>
 
-<p class="whs1">salome = SMESH_mechanic_tetra.salome</p>
+<p class="whs3">salome = SMESH_mechanic_tetra.salome</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs4"># Criterion : ASPECT 
+ RATIO 3D &gt; 4.5</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">ar_margin = 4.5</p>
 
-<p class="whs2"># Criterion : ASPECT RATIO 
- 3D &gt; 2.2</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateAspectRatio3D()</p>
+<p class="whs3">aFunctor = aFilterMgr.CreateAspectRatio3D()</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
- aFunctor )</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateMoreThan()</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 2.2 )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aPredicate.SetMargin(ar_margin)</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs2"># print the result</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">print &quot;Criterion: 
- Aspect Ratio 3D &gt; 2.2 Nb = &quot;, len( anIds )</p>
+<p class="whs4"># print the result</p>
 
-<p class="whs1">for i in range( 
len( anIds ) ):</p>
+<p class="whs3">print &quot;Criterion: 
Aspect Ratio 3D &gt; &quot;, ar_margin, &quot; Nb = &quot;, len(anIds)</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
- anIds[ i ]</p>
+<p class="whs3">j = 1</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">for i in range(len(anIds)):</p>
 
-<p class="whs2"># create a group</p>
+<p class="whs3">&nbsp;&nbsp;if 
+ j &gt; 20: j = 1; print &quot;&quot;</p>
 
-<p class="whs1">aGroup = mesh.CreateGroup( 
SMESH.VOLUME, &quot;Aspect Ratio 3D &gt; 2.2&quot; )</p>
+<p class="whs3">&nbsp;&nbsp;print 
anIds[i],</p>
 
-<p class="whs1">aGroup.Add( anIds 
)</p>
+<p class="whs3">&nbsp;&nbsp;j 
= j + 1</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;pass</p>
 
-<p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs3">print &quot;&quot;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
+
+<p class="whs4"># create a group</p>
+
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.VOLUME, 
+ &quot;Aspect Ratio 3D &gt; &quot; + `ar_margin`)</p>
+
+<p class="whs3">aGroup.Add(anIds)</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">salome.sg.updateObjBrowser(1) 
+ </p>
 
 <h3><a name=Volume>Volume</a></h3>
 
-<p class="whs1">import SMESH</p>
+<p class="whs1"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B><span 
+ style="font-weight: bold; color: #ff0000;"><font color=red ><B># Attention! This script has 
+ been written using the old approach basing on direct usage of SMESH idl 
+ interface.</B></font></span></B></font></span></p>
 
-<p class="whs1">import SMESH_mechanic_tetra</p>
+<p class="whs1"># For the moment smesh package doesn't provide 
+ methods to check volume. </p>
+
+<p class="whs1"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs2">&nbsp;</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs1">smesh &nbsp;= 
+<p class="whs3">import SMESH_mechanic_tetra</p>
+
+<p class="whs3">&nbsp;</p>
+
+<p class="whs3">smesh &nbsp;= 
  SMESH_mechanic_tetra.smesh</p>
 
-<p class="whs1">mesh &nbsp;&nbsp;= 
+<p class="whs3">mesh &nbsp;&nbsp;= 
  SMESH_mechanic_tetra.mesh</p>
 
-<p class="whs1">salome = SMESH_mechanic_tetra.salome</p>
+<p class="whs3">salome = SMESH_mechanic_tetra.salome</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs2">&nbsp;</p>
 
-<p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
+<p class="whs2"># Criterion : VOLUME &lt; 
+ 7.</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">volume_margin = 
+ 7.</p>
 
-<p class="whs2"># Criterion : VOLUME &lt; 
- 7</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs2">&nbsp;</p>
+<p class="whs3">aFilterMgr = smesh.CreateFilterManager()</p>
+
+<p class="whs3">aFunctor = aFilterMgr.CreateVolume3D()</p>
 
-<p class="whs1">aFunctor = aFilterMgr.CreateVolume3D()</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>
+<p class="whs3">aPredicate = aFilterMgr.CreateLessThan()</p>
 
-<p class="whs1">aPredicate.SetNumFunctor( 
- aFunctor )</p>
+<p class="whs3">aPredicate.SetNumFunctor(aFunctor)</p>
 
-<p class="whs1">aPredicate.SetMargin( 
- 7 )</p>
+<p class="whs3">aPredicate.SetMargin(volume_margin)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
+<p class="whs3">aFilter = aFilterMgr.CreateFilter()</p>
 
-<p class="whs1">aFilter.SetPredicate( 
- aPredicate )</p>
+<p class="whs3">aFilter.SetPredicate(aPredicate)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs1">anIds = aFilter.GetElementsId( 
- mesh )</p>
+<p class="whs3">anIds = aFilter.GetElementsId(mesh)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs2">&nbsp;</p>
 
 <p class="whs2"># print the result</p>
 
-<p class="whs1">print &quot;&quot;</p>
+<p class="whs3">print &quot;&quot;</p>
+
+<p class="whs3">print &quot;Criterion: 
+ Volume &lt; &quot;, volume_margin, &quot; Nb = &quot;, len(anIds)</p>
+
+<p class="whs3">j = 1</p>
+
+<p class="whs3">for i in range(len(anIds)):</p>
 
-<p class="whs1">print &quot;Criterion: 
Volume &lt; 7 Nb = &quot;, len( anIds )</p>
+<p class="whs3">&nbsp;&nbsp;if 
j &gt; 20: j = 1; print &quot;&quot;</p>
 
-<p class="whs1">for i in range( 
len( anIds ) ):</p>
+<p class="whs3">&nbsp;&nbsp;print 
anIds[i],</p>
 
-<p class="whs1">&nbsp;&nbsp;print 
anIds[ i ]</p>
+<p class="whs3">&nbsp;&nbsp;j 
= j + 1</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;&nbsp;pass</p>
+
+<p class="whs3">print &quot;&quot;</p>
+
+<p class="whs2">&nbsp;</p>
 
 <p class="whs2"># create a group</p>
 
-<p class="whs1">aGroup = mesh.CreateGroup( 
SMESH.VOLUME, &quot;Volume &lt; 7&quot; )</p>
+<p class="whs3">aGroup = mesh.CreateGroup(SMESH.VOLUME, 
&quot;Volume &lt; &quot; + `volume_margin`)</p>
 
-<p class="whs1">aGroup.Add( anIds 
- )</p>
+<p class="whs3">aGroup.Add(anIds)</p>
 
-<p class="whs1">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
  </p>
index 73dbb7053b2d89750393e3b63af00ba478026920..08ce66a7cc6be41ba7419ebdc4320b8bf0098e37 100755 (executable)
@@ -122,6 +122,7 @@ borders_at_multi-connection.htm
 borders_at_multiconnection_2d.htm
 clipping.htm
 constructing_meshes.htm
+convert_to_from_quadratic_mesh.htm
 defining_hypotheses_tui.htm
 deleting_groups.htm
 display_entity.htm
@@ -176,11 +177,14 @@ length.htm
 merge_elements.htm
 mesh.htm
 modifying_meshes.htm
+namespacesmesh.html
+netgen_2d_and_3d_hypotheses.htm
 pattern_mapping.htm
 presentation.htm
 quality_controls.htm
 revolution.htm
 selection_filter_library.htm
+smesh.py_introduction.htm
 transforming_meshes.htm
 transparency.htm
 viewing_meshes.htm
@@ -205,6 +209,9 @@ pics\sewing1.png
 image92.gif
 image51.jpg
 image70.gif
+pics\netgen2d.png
+pics\circle_simple_after.png
+pics\curvi_simple_after.png
 pics\image138.gif
 pics\create_group.png
 pics\edit_mesh_change_value_hyp.png
@@ -224,6 +231,7 @@ image52.jpg
 image82.gif
 image71.gif
 image30.jpg
+pics\extrusion1.png
 pics\distributionwithanalyticdensity.png
 pics\image139.gif
 pics\rotation1.png
@@ -239,6 +247,9 @@ image50.gif
 image94.gif
 image83.gif
 image31.jpg
+pics\circle_angles_after.png
+pics\circle_simple_before.png
+pics\curvi_angles_after.png
 pics\graduatedaxes1.png
 pics\image107.gif
 pics\automaticlength.png
@@ -258,6 +269,7 @@ image76.jpg
 image84.gif
 image32.jpg
 image40.gif
+pics\curvi_simple_before.png
 pics\image108.gif
 pics\aqt.png
 pics\distributionwithtabledensity.png
@@ -270,6 +282,7 @@ image74.gif
 image63.gif
 image22.jpg
 image41.gif
+pics\edge_wire_3d_before.png
 pics\image109.gif
 pics\meshimportmesh.png
 pics\deletegroups.png
@@ -288,6 +301,8 @@ image97.gif
 image78.jpg
 image64.gif
 image23.jpg
+pics\edge_wire_after.png
+pics\edge_wire_before.png
 image151.gif
 pics\cut_groups1.png
 pics\editing_groups2.png
@@ -303,7 +318,6 @@ image152.gif
 pics\cut_groups2.png
 image130.gif
 pics\max_el_area.png
-pics\a-extusionalongapath2.png
 pics\a-viewgeneral.png
 pics\revolution1.png
 pics\addtriangle.png
@@ -314,6 +328,7 @@ image36.jpg
 image33.gif
 image25.jpg
 i_blue.jpg
+image153.gif
 image15.jpg
 image142.gif
 pics\cut_groups3.png
@@ -329,6 +344,8 @@ image56.gif
 image37.jpg
 image67.gif
 image34.gif
+pics\convert.png
+image154.gif
 image143.gif
 image132.gif
 pics\edit_mesh1.png
@@ -343,6 +360,8 @@ image46.gif
 image35.gif
 image27.jpg
 image24.gif
+image155.gif
+pics\mesh_for_extr_along_path.png
 pics\createmesh-inv2.png
 image144.gif
 pics\intersect_groups1.png
@@ -356,6 +375,8 @@ image58.gif
 image36.gif
 image25.gif
 note1.gif
+image156.gif
+pics\edge_wire_3d_after.png
 pics\createmesh-inv3.png
 image145.gif
 pics\intersect_groups2.png
@@ -366,6 +387,7 @@ pics\addedge.png
 image123.gif
 image101.gif
 image37.gif
+pics\straight_after.png
 pics\image96.gif
 image146.gif
 pics\intersect_groups3.png
@@ -376,7 +398,6 @@ pics\a-nbsegments1.png
 pics\patternmapping1.png
 image90.jpg
 image124.gif
-image102.gif
 image49.gif
 image38.gif
 pics\image100.gif
@@ -406,9 +427,9 @@ pics\free_edges.png
 pics\creategroup.png
 image92.jpg
 image126.gif
-image104.gif
 image18.gif
 image70.jpg
+pics\straight_before.png
 pics\createmesh-inv.png
 pics\image102.gif
 pics\image99.gif
@@ -502,6 +523,7 @@ whgdata\whlstf10.htm
 whgdata\whlstf11.htm
 whgdata\whlstf12.htm
 whgdata\whlstf13.htm
+whgdata\whlstf14.htm
 whgdata\whlstg0.htm
 index.htm
 index_csh.htm
diff --git a/doc/salome/gui/SMESH/smesh.py_introduction.htm b/doc/salome/gui/SMESH/smesh.py_introduction.htm
new file mode 100644 (file)
index 0000000..fc3d048
--- /dev/null
@@ -0,0 +1,270 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>smesh.py_introduction</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style type="text/css">\r
+<!--\r
+p.whs1 { margin-top:0pt; margin-bottom:0pt; }\r
+p.whs2 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript">\r
+<!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
+{\r
+  var strNSS = "<style type='text/css'>";\r
+  strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";\r
+  strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";\r
+  strNSS +="</style>";\r
+  document.write(strNSS);\r
+}\r
+//-->\r
+</script>\r
+<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+p.WebHelpNavBar { text-align:right; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.setRelStartPage)\r
+       {\r
+       addTocInfo("MESH module\nIntroduction to MESH module python interface");\r
+addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
+addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
+\r
+       }\r
+\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("index.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(4);\r
+//-->\r
+</script>\r
+<h1>Introduction to MESH module python interface</h1>\r
+\r
+<p class="whs1">Package smesh provides \r
+ a standard API for creation and edition of meshes . </p>\r
+\r
+<p class="whs1">Below you can see an example \r
+ of usage of the package smesh for 3d mesh generation. </p>\r
+\r
+<p class="whs1">&nbsp;&nbsp;</p>\r
+\r
+<p class="whs1">Example of 3d mesh generation \r
+ with NETGEN</p>\r
+\r
+<p class="whs1">from geompy import * </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import \r
+ smesh</span> </p>\r
+\r
+<p class="whs1"># Geometry </p>\r
+\r
+<p class="whs1"># an assembly of a box, \r
+ a cylinder and a truncated cone meshed with tetrahedral. </p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"># Define values </p>\r
+\r
+<p class="whs2">name = &quot;ex21_lamp&quot; \r
+ </p>\r
+\r
+<p class="whs2">cote = 60 </p>\r
+\r
+<p class="whs2">section = 20 </p>\r
+\r
+<p class="whs2">size = 200 </p>\r
+\r
+<p class="whs2">radius_1 = 80 </p>\r
+\r
+<p class="whs2">radius_2 = 40 </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">height \r
+ = 100</span> </p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"># Build a box </p>\r
+\r
+<p class="whs2">box = MakeBox(-cote, \r
+ -cote, -cote, +cote, +cote, +cote) </p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"># Build a cylinder </p>\r
+\r
+<p class="whs2">pt1 = MakeVertex(0, \r
+ 0, cote/3) </p>\r
+\r
+<p class="whs2">di1 = MakeVectorDXDYDZ(0, \r
+ 0, 1) </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">cyl \r
+ = MakeCylinder(pt1, di1, section, size)</span> </p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"># Build a truncated cone \r
+ </p>\r
+\r
+<p class="whs2">pt2 = MakeVertex(0, \r
+ 0, size) </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">cone \r
+ = MakeCone(pt2, di1, radius_1, radius_2, height)</span> </p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"># Fuse </p>\r
+\r
+<p class="whs2">box_cyl = MakeFuse(box, \r
+ cyl) </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">piece \r
+ = MakeFuse(box_cyl, cone)</span> </p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"># Add in study </p>\r
+\r
+<p class="whs2">addToStudy(piece, \r
+ name) </p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"># Create a group of faces \r
+ </p>\r
+\r
+<p class="whs2">group = CreateGroup(piece, \r
+ ShapeType[&quot;FACE&quot;]) </p>\r
+\r
+<p class="whs2">group_name = name \r
+ + &quot;_grp&quot; </p>\r
+\r
+<p class="whs2">addToStudy(group, \r
+ group_name) </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">group.SetName(group_name)</span> \r
+ </p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"># Add faces in the group \r
+ </p>\r
+\r
+<p class="whs2">faces = SubShapeAllIDs(piece, \r
+ ShapeType[&quot;FACE&quot;]) </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">UnionIDs(group, \r
+ faces)</span> </p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"># Create a mesh </p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"># Define a mesh on a geometry \r
+ </p>\r
+\r
+<p class="whs2">tetra = smesh.Mesh(piece, \r
+ name) </p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"># Define 1D hypothesis \r
+ </p>\r
+\r
+<p class="whs2">algo1d = tetra.Segment() \r
+ </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">algo1d.LocalLength(10)</span> \r
+ </p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"># Define 2D hypothesis \r
+ </p>\r
+\r
+<p class="whs2">algo2d = tetra.Triangle() \r
+ </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">algo2d.LengthFromEdges()</span> \r
+ </p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"># Define 3D hypothesis \r
+ </p>\r
+\r
+<p class="whs2">algo3d = tetra.Tetrahedron(smesh.NETGEN) \r
+ </p>\r
+\r
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">algo3d.MaxElementVolume(100)</span> \r
+ </p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"># Compute the mesh </p>\r
+\r
+<p class="whs2">tetra.Compute() \r
+ </p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"># Create a groupe of faces \r
+ </p>\r
+\r
+<p class="whs2">tetra.Group(group) \r
+ </p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
index 5b3964358b44d2a9551d857068cccd5fef2f614b..6a1ccc527cd118d5b9a525d303ea3744defb7379 100644 (file)
@@ -7,6 +7,9 @@
 <!-- Generated by Doxygen 1.4.6 -->
 <h1>Package smesh</h1>
 <p>
+Python package smesh defines several classes, destined for easy and clear mesh creation and edition.
+<p class="whs2"><a href="../smesh.py_introduction.htm">Example.</a></p>
+<p>
 <table border="0" cellpadding="0" cellspacing="0">
 <tr><td></td></tr>
 <tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
index a03fcf220c9cdfbd5d18b19fdf07394c9fedf98c..d69573dea2f9cd700300e485d37316ce16590e3c 100755 (executable)
 h3.whs1 { margin-top:0pt; margin-bottom:0pt; }
 h4.whs2 { margin-top:0pt; margin-bottom:0pt; }
 p.whs3 { font-family:'Lucida Console' , monospace; margin-top:0pt; margin-bottom:0pt; }
-p.whs4 { margin-top:0pt; margin-bottom:0pt; }
+p.whs4 { margin-top:0pt; margin-bottom:0pt; font-weight:bold; color:#ff0000; }
 p.whs5 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
+p.whs6 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
+p.whs7 { margin-top:0pt; margin-bottom:0pt; }
 -->
 </style><script type="text/javascript" language="JavaScript">
 <!--
@@ -23,6 +25,8 @@ if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
   strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
   strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";
   strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";
+  strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
+  strNSS += "p.whs7 {margin-top:1pt;margin-bottom:1pt; }";
   strNSS +="</style>";
   document.write(strNSS);
 }
@@ -97,166 +101,204 @@ if (window.writeIntopicBar)
 
 <p class="whs3">&nbsp;</p>
 
-<p class="whs3">import SMESH</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs3">import SMESH_mechanic</p>
+<p class="whs4"># For the moment smesh package doesn't provide 
+ methods to translate meshes. </p>
 
-<p class="whs3">&nbsp;</p>
+<p class="whs4"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs3">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs5">&nbsp;</p>
+
+<p class="whs5">import SMESH</p>
 
-<p class="whs3">salome = SMESH_mechanic.salome</p>
+<p class="whs5">import SMESH_mechanic</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4"># translate a mesh</p>
+<p class="whs5">mesh = SMESH_mechanic.mesh</p>
 
-<p class="whs3">anEditor = mesh.GetMeshEditor()</p>
+<p class="whs5">anEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs3">point = SMESH.PointStruct(-150, -150, 
- 0)</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs3">vector = SMESH.DirStruct(point) </p>
+<p class="whs6"># define translation 
+ vector</p>
 
-<p class="whs3">anEditor.TranslateObject(mesh, vector
1)</p>
+<p class="whs5">point = SMESH.PointStruct(-150.
-150., 0.)</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">vector = SMESH.DirStruct(point)</p>
 
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs6"># translate a mesh</p>
+
+<p class="whs5">doCopy = 1</p>
+
+<p class="whs5">anEditor.TranslateObject(mesh, 
+ vector, doCopy) </p>
+
+<p class="whs7">&nbsp;</p>
 
 <h4 class="whs2"><a name=bookmark1>Rotation</a></h4>
 
 <p class="whs3">&nbsp;</p>
 
-<p class="whs3">import SMESH</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs3">import SMESH_mechanic</p>
+<p class="whs4"># For the moment smesh package doesn't provide 
+ methods to rotate meshes. </p>
+
+<p class="whs4"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
 <p class="whs3">&nbsp;</p>
 
 <p class="whs3">import math</p>
 
-<p class="whs3">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs3">salome = SMESH_mechanic.salome</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs4"># rotate a mesh </p>
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
 
 <p class="whs3">anEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs3">axisXYZ = SMESH.AxisStruct(0, 0, 0, 5, 
- 5, 20)</p>
+<p class="whs3">&nbsp;</p>
+
+<p class="whs6"># define rotation axis 
+ and angle</p>
 
-<p class="whs3">angle180 = &nbsp;1.5*math.pi</p>
+<p class="whs3">axisXYZ = SMESH.AxisStruct(0., 0., 0., 
+ 5., 5., 20.)</p>
 
-<p class="whs3">anEditor.RotateObject(mesh, axisXYZ, angle180, 
- 1)</p>
+<p class="whs3">angle270 = 1.5 * math.pi</p>
 
 <p class="whs3">&nbsp;</p>
 
-<p class="whs5">salome.sg.updateObjBrowser(1)</p>
+<p class="whs6"># rotate a mesh</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs3">anEditor.RotateObject(mesh, axisXYZ, angle270, 
+ 1) </p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs7">&nbsp;</p>
 
 <h4 class="whs2"><a name=bookmark2>Symmetry</a></h4>
 
 <p class="whs3">&nbsp;</p>
 
-<p class="whs3">import SMESH</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs3">import SMESH_mechanic</p>
+<p class="whs4"># For the moment smesh package doesn't provide 
+ methods to create symmetrical copies of meshes. </p>
+
+<p class="whs4"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
 <p class="whs3">&nbsp;</p>
 
 <p class="whs3">import math</p>
 
-<p class="whs3">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs3">import SMESH</p>
 
-<p class="whs3">salome = SMESH_mechanic.salome</p>
+<p class="whs3">import SMESH_mechanic</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs3">&nbsp;</p>
 
-<p class="whs4"># create a symmetrical 
- copy of the mesh mirrored through a point</p>
+<p class="whs3">mesh = SMESH_mechanic.mesh</p>
 
 <p class="whs3">anEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs3">anEditor.MirrorObject(mesh, SMESH.AxisStruct(0, 
- 0, 0, 0, 0, 0), SMESH.SMESH_MeshEditor.POINT, 1) </p>
-
 <p class="whs3">&nbsp;</p>
 
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs6"># create a symmetrical 
copy of the mesh mirrored through a point</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs3">axis = SMESH.AxisStruct(0, 0, 0, 0, 0, 
+ 0)</p>
+
+<p class="whs3">anEditor.MirrorObject(mesh, axis, SMESH.SMESH_MeshEditor.POINT, 
+ 1) </p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs7">&nbsp;</p>
 
 <h4 class="whs2"><a name=bookmark3>Merging 
  Nodes</a></h4>
 
 <p class="whs3">&nbsp;</p>
 
-<p class="whs3">import SMESH</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs3">import SMESH_mechanic</p>
-
-<p class="whs3">&nbsp;</p>
+<p class="whs4"># For the moment smesh package doesn't provide 
+ methods to merge nodes. </p>
 
-<p class="whs3">smesh &nbsp;= 
SMESH_mechanic.smesh</p>
+<p class="whs4"># In the next SALOME version the scripts will 
be updated to use only the commands from smesh package.</p>
 
-<p class="whs3">mesh &nbsp;&nbsp;= 
- SMESH_mechanic.mesh</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs3">salome = SMESH_mechanic.salome</p>
+<p class="whs5">import SMESH_mechanic</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">mesh = SMESH_mechanic.mesh</p>
 
-<p class="whs4"># merge nodes</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
+<p class="whs5">aMeshEditor = mesh.GetMeshEditor()</p>
 
-<p class="whs3">Tolerance = 25.0</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs3">&nbsp;</p>
+<p class="whs6"># merge nodes</p>
 
-<p class="whs3">GroupsOfNodes = aMeshEditor.FindCoincidentNodes(Tolerance)</p>
+<p class="whs5">Tolerance = 25.0</p>
 
-<p class="whs3">aMeshEditor.MergeNodes(GroupsOfNodes)</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs3">&nbsp;&nbsp;&nbsp;&nbsp;</p>
+<p class="whs5">GroupsOfNodes = 
+ aMeshEditor.FindCoincidentNodes(Tolerance)</p>
 
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
+<p class="whs7"><span style="font-family: 'Lucida Console', monospace;">aMeshEditor.MergeNodes(GroupsOfNodes)</span> 
  </p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs7">&nbsp;</p>
 
 <h4><a name=bookmark8>Merging Elements</a></h4>
 
-<p class="whs5">import geompy</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs5">import smesh</p>
+<p class="whs4"># For the moment smesh package doesn't provide 
+ methods to merge elements. </p>
+
+<p class="whs4"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs6">&nbsp;</p>
 
 <p class="whs5">import salome</p>
 
+<p class="whs5">import geompy</p>
+
+<p class="whs5">import smesh</p>
+
 <p class="whs5">import SMESH</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4"># create a face to be meshed</p>
+<p class="whs6"># create a face to 
+ be meshed</p>
 
 <p class="whs5">px = geompy.MakeVertex(100., 
  0. &nbsp;, 0. 
@@ -293,85 +335,82 @@ if (window.writeIntopicBar)
 <p class="whs5">id_face1 = geompy.addToStudy(face1, 
  &quot;Face1&quot;)</p>
 
-<p class="whs4">&nbsp;</p>
-
-<p class="whs4"># create a 2D mesh on the 
- face</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs5">trias = smesh.Mesh(face1, 
&quot;Face : 2D mesh&quot;)</p>
+<p class="whs6"># create a circle to 
be an extrusion path</p>
 
-<p class="whs5">&nbsp;</p>
+<p class="whs5">px1 = geompy.MakeVertex( 
+ 100., &nbsp;100., 
+ &nbsp;0.)</p>
 
-<p class="whs5">algo = trias.Segment()</p>
+<p class="whs5">py1 = geompy.MakeVertex(-100., 
+ -100., &nbsp;0.)</p>
 
-<p class="whs5">algo.NumberOfSegments(6)</p>
+<p class="whs5">pz1 = geompy.MakeVertex( 
+ &nbsp;&nbsp;0., 
+ &nbsp;&nbsp;&nbsp;0., 
+ 50.)</p>
 
 <p class="whs5">&nbsp;</p>
 
-<p class="whs5">algo = trias.Triangle()</p>
+<p class="whs5">circle = geompy.MakeCircleThreePnt(py1, 
+ pz1, px1)</p>
 
-<p class="whs5">algo.LengthFromEdges()</p>
+<p class="whs5">id_circle = geompy.addToStudy(circle, 
+ &quot;Path&quot;)</p>
 
 <p class="whs5">&nbsp;</p>
 
-<p class="whs5">trias.Compute()</p>
-
-<p class="whs5">&nbsp;</p>
+<p class="whs6"># create a 2D mesh 
+ on the face</p>
 
-<p class="whs5">tri_mesh = trias.GetMesh()</p>
+<p class="whs5">trias = smesh.Mesh(face1, 
+ &quot;Face : 2D mesh&quot;)</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4"># create a path mesh</p>
+<p class="whs5">algo1D = trias.Segment()</p>
 
-<p class="whs5">px1 = geompy.MakeVertex(100., 
- 100. &nbsp;, 
- 0. &nbsp;)</p>
+<p class="whs5">algo1D.NumberOfSegments(6)</p>
 
-<p class="whs5">py1 = geompy.MakeVertex(-100. 
- &nbsp;, -100., 
- 0. &nbsp;)</p>
+<p class="whs5">algo2D = trias.Triangle()</p>
 
-<p class="whs5">pz1 = geompy.MakeVertex(0. 
- &nbsp;, 0. &nbsp;, 
- 50.)</p>
+<p class="whs5">algo2D.LengthFromEdges()</p>
 
 <p class="whs5">&nbsp;</p>
 
-<p class="whs5">circle = geompy.MakeCircleThreePnt(py1, 
- pz1, px1)</p>
+<p class="whs5">trias.Compute()</p>
 
-<p class="whs5">id_circle = geompy.addToStudy(circle, 
- &quot;Path&quot;)</p>
+<p class="whs5">tri_mesh = trias.GetMesh()</p>
 
-<p class="whs5">&nbsp;</p>
+<p class="whs6">&nbsp;</p>
+
+<p class="whs6"># create a path mesh</p>
 
 <p class="whs5">circlemesh = smesh.Mesh(circle, 
  &quot;Path mesh&quot;)</p>
 
-<p class="whs5">&nbsp;</p>
-
 <p class="whs5">algo = circlemesh.Segment()</p>
 
 <p class="whs5">algo.NumberOfSegments(10)</p>
 
-<p class="whs5">&nbsp;</p>
-
 <p class="whs5">circlemesh.Compute()</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs4"># extrusion of the mesh</p>
+<p class="whs6"># extrusion of the 
+ mesh</p>
 
 <p class="whs5">aMeshEditor = tri_mesh.GetMeshEditor()</p>
 
 <p class="whs5">aMeshEditor.ExtrusionAlongPathObject(tri_mesh, 
- circlemesh.GetMesh(), circle, 1, 0, [], 0, SMESH.PointStruct(0, 0, 0))</p>
+ circlemesh.GetMesh(), circle,</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1, 
+ 0, [], 0, SMESH.PointStruct(0, 0, 0))</p>
 
-<p class="whs4"># merge nodes</p>
+<p class="whs6"># merge nodes</p>
 
 <p class="whs5">print &quot;Number 
  of nodes before MergeNodes:&quot;, tri_mesh.NbNodes()</p>
@@ -410,9 +449,9 @@ if (window.writeIntopicBar)
  &nbsp;&nbsp;&nbsp;: 
  &quot;, tri_mesh.NbVolumes()</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs6">&nbsp;</p>
 
-<p class="whs4"># merge elements</p>
+<p class="whs6"># merge elements</p>
 
 <p class="whs5">aMeshEditor.MergeEqualElements()</p>
 
@@ -438,332 +477,328 @@ if (window.writeIntopicBar)
 
 <p class="whs5">&nbsp;</p>
 
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
+<p class="whs5">salome.sg.updateObjBrowser(1) 
  </p>
 
+<p class="whs5">&nbsp;</p>
+
 <h3>Sewing Meshes</h3>
 
 <h4><a name=bookmark4>Sew Meshes Border to Border</a></h4>
 
-<p class="whs5">import salome</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
+
+<p class="whs4"># For the moment smesh package doesn't provide 
+ methods to sew meshes border to border. </p>
+
+<p class="whs4"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs7">&nbsp;</p>
 
 <p class="whs5">import geompy</p>
 
 <p class="whs5">import smesh</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4"># create two faces of a 
- box</p>
+<p class="whs6"># create two faces 
of a box</p>
 
 <p class="whs5">box1 = geompy.MakeBox(0., 
  0., -10., 30., 20., 25.)</p>
 
-<p class="whs5">subShapeList1 = 
- geompy.SubShapeAll(box1, geompy.ShapeType[&quot;FACE&quot;])</p>
+<p class="whs5">facesList1 = geompy.SubShapeAll(box1, 
+ geompy.ShapeType[&quot;FACE&quot;])</p>
+
+<p class="whs5">face1 = facesList1[2]</p>
 
 <p class="whs5">&nbsp;</p>
 
 <p class="whs5">box2 = geompy.MakeBox(0., 
  5., 0., 20., 20., 15.)</p>
 
-<p class="whs5">subShapeList2 = 
- geompy.SubShapeAll(box2, geompy.ShapeType[&quot;FACE&quot;])</p>
+<p class="whs5">facesList2 = geompy.SubShapeAll(box2, 
+ geompy.ShapeType[&quot;FACE&quot;])</p>
 
-<p class="whs5">EdgesList = geompy.SubShapeAll(subShapeList2[ 
- 1 ], geompy.ShapeType[&quot;EDGE&quot;])</p>
+<p class="whs5">face2 = facesList2[1]</p>
 
 <p class="whs5">&nbsp;</p>
 
-<p class="whs5">aComp = geompy.MakeCompound( 
- [subShapeList1[ 2 ], subShapeList2[ 1 ]] )</p>
-
-<p class="whs5">idComp = geompy.addToStudy( 
- aComp, &quot;Two faces&quot; )</p>
+<p class="whs5">edgesList = geompy.SubShapeAll(face2, 
+ geompy.ShapeType[&quot;EDGE&quot;])</p>
 
-<p class="whs5">aCompobj &nbsp;= 
- salome.IDToObject( idComp )</p>
+<p class="whs5">edge1 = edgesList[2]</p>
 
 <p class="whs5">&nbsp;</p>
 
-<p class="whs4"># create a mesh on two 
- faces</p>
-
-<p class="whs4">&nbsp;</p>
+<p class="whs5">aComp = geompy.MakeCompound([face1, 
+ face2])</p>
 
-<p class="whs5">mesh = smesh.Mesh(aCompobj, 
- &quot;Two faces : quadrangle mesh&quot;)</p>
-
-<p class="whs5">algo = mesh.Segment()</p>
+<p class="whs5">geompy.addToStudy(aComp, 
+ &quot;Two faces&quot;)</p>
 
 <p class="whs5">&nbsp;</p>
 
-<p class="whs4"># define &quot;NumberOfSegments&quot; 
- hypothesis to cut an edge in a fixed number of segments</p>
+<p class="whs6"># create a mesh on 
+ two faces</p>
+
+<p class="whs5">mesh = smesh.Mesh(aComp, 
+ &quot;Two faces : quadrangle mesh&quot;)</p>
 
-<p class="whs5">algo.NumberOfSegments(9)</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">algo1D = mesh.Segment()</p>
 
-<p class="whs4"># create a quadrangle 2D 
- algorithm for faces</p>
+<p class="whs5">algo1D.NumberOfSegments(9)</p>
 
-<p class="whs5">mesh.Quadrangle()</p>
+<p class="whs5">algo2D = mesh.Quadrangle()</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4"># create a local hypothesis</p>
+<p class="whs5">algo_local = mesh.Segment(edge1)</p>
 
-<p class="whs5">algo = mesh.Segment(EdgesList[2])</p>
+<p class="whs5">algo_local.Arithmetic1D(1, 
+ 4)</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">algo_local.Propagation()</p>
 
-<p class="whs4"># define &quot;Arithmetic1D&quot; 
- hypothesis to cut an edge in several segments with increasing arithmetic 
- length </p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs5">algo.Arithmetic1D(1, 
- 4)</p>
+<p class="whs5">mesh.Compute()</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4"># define &quot;Propagation&quot; 
- hypothesis that propagates all other hypothesis on all edges on the opposite 
- side in case of quadrangular faces</p>
+<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
 
-<p class="whs5">algo.Propagation()</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs5">mesh.Compute()</p>
+<p class="whs6"># sew border to side</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs6"># FirstNodeIDOnFreeBorder, 
+ SecondNodeIDOnFreeBorder, LastNodeIDOnFreeBorder,</p>
 
-<p class="whs4"># sew free borders</p>
+<p class="whs6"># FirstNodeIDOnSide, 
+ LastNodeIDOnSide,</p>
 
-<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
+<p class="whs6"># CreatePolygons, CreatePolyedrs</p>
 
 <p class="whs5">anEditor.SewBorderToSide(5, 
- 45, 6, 113, 109, 0, 0)</p>
+ 45, 6, 113, 109, 0, 0) </p>
 
-<p class="whs5">&nbsp;</p>
+<h4><a name=bookmark5>Sew Conform Free Borders</a></h4>
 
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs4"># For the moment smesh package doesn't provide 
+ methods to sew conform free borders. </p>
 
-<h4><a name=bookmark5>Sew Conform Free Borders</a></h4>
+<p class="whs4"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
-<p class="whs5">import salome</p>
+<p class="whs5">&nbsp;</p>
 
 <p class="whs5">import geompy</p>
 
 <p class="whs5">import smesh</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4"># create two faces of the 
- box</p>
+<p class="whs6"># create two faces 
of the box</p>
 
 <p class="whs5">box1 = geompy.MakeBox(0., 
  0., -10., 20., 20., 15.)</p>
 
-<p class="whs5">subShapeList1 = 
- geompy.SubShapeAll(box1, geompy.ShapeType[&quot;FACE&quot;])</p>
+<p class="whs5">facesList1 = geompy.SubShapeAll(box1, 
+ geompy.ShapeType[&quot;FACE&quot;])</p>
+
+<p class="whs5">face1 = facesList1[2]</p>
 
 <p class="whs5">&nbsp;</p>
 
 <p class="whs5">box2 = geompy.MakeBox(0., 
  5., 0., 20., 20., 15.)</p>
 
-<p class="whs5">subShapeList2 = 
- geompy.SubShapeAll(box2, geompy.ShapeType[&quot;FACE&quot;])</p>
+<p class="whs5">facesList2 = geompy.SubShapeAll(box2, 
+ geompy.ShapeType[&quot;FACE&quot;])</p>
 
-<p class="whs5">EdgesList = geompy.SubShapeAll(subShapeList2[ 
- 1 ], geompy.ShapeType[&quot;EDGE&quot;])</p>
+<p class="whs5">face2 = facesList2[1]</p>
 
 <p class="whs5">&nbsp;</p>
 
-<p class="whs5">aComp = geompy.MakeCompound( 
- [subShapeList1[ 2 ], subShapeList2[ 1 ]] )</p>
-
-<p class="whs5">idComp = geompy.addToStudy( 
- aComp, &quot;Two faces&quot; )</p>
-
-<p class="whs5">aCompobj &nbsp;= 
- salome.IDToObject( idComp )</p>
-
-<p class="whs4">&nbsp;</p>
-
-<p class="whs4"># create a mesh on two 
- faces</p>
+<p class="whs5">edgesList = geompy.SubShapeAll(face2, 
+ geompy.ShapeType[&quot;EDGE&quot;])</p>
 
-<p class="whs5">mesh = smesh.Mesh(aCompobj, 
- &quot;Two faces : quadrangle mesh&quot;)</p>
+<p class="whs5">edge1 = edgesList[2]</p>
 
-<p class="whs5">algo = mesh.Segment()</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">aComp = geompy.MakeCompound([face1, 
+ face2])</p>
 
-<p class="whs4"># define &quot;NumberOfSegments&quot; 
hypothesis to cut an edge in a fixed number of segments</p>
+<p class="whs5">geompy.addToStudy(aComp, 
&quot;Two faces&quot;)</p>
 
-<p class="whs5">algo.NumberOfSegments(9)</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs6"># create a mesh on 
+ two faces</p>
 
-<p class="whs4"># create a quadrangle 2D 
algorithm for faces</p>
+<p class="whs5">mesh = smesh.Mesh(aComp, 
&quot;Two faces : quadrangle mesh&quot;)</p>
 
-<p class="whs5">mesh.Quadrangle()</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">algo1D = mesh.Segment()</p>
 
-<p class="whs4"># create a local hypothesis</p>
+<p class="whs5">algo1D.NumberOfSegments(9)</p>
 
-<p class="whs5">algo = mesh.Segment(EdgesList[2])</p>
+<p class="whs5">algo2D = mesh.Quadrangle()</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4"># define &quot;Arithmetic1D&quot; 
- hypothesis to cut an edge in several segments with increasing arithmetic 
- length </p>
+<p class="whs5">algo_local = mesh.Segment(edge1)</p>
 
-<p class="whs5">algo.Arithmetic1D(1, 
+<p class="whs5">algo_local.Arithmetic1D(1, 
  4)</p>
 
-<p class="whs4">&nbsp;</p>
-
-<p class="whs4"># define &quot;Propagation&quot; 
- hypothesis that propagate all other hypothesis on all edges on<span style="margin-top: 0pt; margin-bottom: 0pt;"> 
- the opposite side in case of quadrangular faces</span></p>
+<p class="whs5">algo_local.Propagation()</p>
 
-<p class="whs5">algo.Propagation()</p>
+<p class="whs5">&nbsp;</p>
 
 <p class="whs5">mesh.Compute()</p>
 
-<p class="whs4">&nbsp;</p>
-
-<p class="whs4"># sew free borders</p>
+<p class="whs5">&nbsp;</p>
 
 <p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
 
-<p class="whs5">anEditor.SewConformFreeBorders(5, 
- 45, 6, 3, 24)</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs6"># sew conform free 
borders</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs6"># FirstNodeID1, SecondNodeID1, 
+ LastNodeID1, FirstNodeID2, SecondNodeID2</p>
+
+<p class="whs5">anEditor.SewConformFreeBorders(5, 
+ 45, 6, 3, 24) </p>
 
 <h4><a name=bookmark6>Sew Free Borders</a></h4>
 
-<p class="whs5">import salome</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
+
+<p class="whs4"># For the moment smesh package doesn't provide 
+ methods to sew free borders. </p>
+
+<p class="whs4"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
+
+<p class="whs7">&nbsp;</p>
 
 <p class="whs5">import geompy</p>
 
 <p class="whs5">import smesh</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4"># create two faces of the 
- box</p>
+<p class="whs6"># create two faces 
of the box</p>
 
 <p class="whs5">box1 = geompy.MakeBox(0., 
  0., 0., 20., 20., 15.)</p>
 
-<p class="whs5">subShapeList1 = 
- geompy.SubShapeAll(box1, geompy.ShapeType[&quot;FACE&quot;])</p>
+<p class="whs5">facesList1 = geompy.SubShapeAll(box1, 
+ geompy.ShapeType[&quot;FACE&quot;])</p>
+
+<p class="whs5">face1 = facesList1[2]</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">&nbsp;</p>
 
 <p class="whs5">box2 = geompy.MakeBox(0., 
  5., 0., 20., 20., 15.)</p>
 
-<p class="whs5">subShapeList2 = 
- geompy.SubShapeAll(box2, geompy.ShapeType[&quot;FACE&quot;])</p>
+<p class="whs5">facesList2 = geompy.SubShapeAll(box2, 
+ geompy.ShapeType[&quot;FACE&quot;])</p>
 
-<p class="whs5">EdgesList = geompy.SubShapeAll(subShapeList2[ 
- 1 ], geompy.ShapeType[&quot;EDGE&quot;])</p>
+<p class="whs5">face2 = facesList2[1]</p>
 
 <p class="whs5">&nbsp;</p>
 
-<p class="whs5">aComp = geompy.MakeCompound( 
- [subShapeList1[ 2 ], subShapeList2[ 1 ]] )</p>
-
-<p class="whs5">idComp = geompy.addToStudy( 
- aComp, &quot;Two faces&quot; )</p>
+<p class="whs5">edgesList = geompy.SubShapeAll(face2, 
+ geompy.ShapeType[&quot;EDGE&quot;])</p>
 
-<p class="whs5">aCompobj &nbsp;= 
- salome.IDToObject( idComp )</p>
+<p class="whs5">edge1 = edgesList[2]</p>
 
 <p class="whs5">&nbsp;</p>
 
-<p class="whs4"># create a mesh on two 
- faces</p>
-
-<p class="whs5">mesh = smesh.Mesh(aCompobj, 
- &quot;Two faces : quadrangle mesh&quot;)</p>
-
-<p class="whs5">algo = mesh.Segment()</p>
-
-<p class="whs4">&nbsp;</p>
+<p class="whs5">aComp = geompy.MakeCompound([face1, 
+ face2])</p>
 
-<p class="whs4"># define &quot;NumberOfSegments&quot; 
hypothesis to cut an edge in a fixed number of segments</p>
+<p class="whs5">geompy.addToStudy(aComp, 
&quot;Two faces&quot;)</p>
 
-<p class="whs5">algo.NumberOfSegments(4)</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs6"># create a mesh on 
+ two faces</p>
 
-<p class="whs4"># creates a quadrangle 
2D algorithm for faces</p>
+<p class="whs5">mesh = smesh.Mesh(aComp, 
&quot;Two faces : quadrangle mesh&quot;)</p>
 
-<p class="whs5">mesh.Quadrangle()</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">algo1D = mesh.Segment()</p>
 
-<p class="whs4"># create a local hypothesis</p>
+<p class="whs5">algo1D.NumberOfSegments(4)</p>
 
-<p class="whs5">algo = mesh.Segment(EdgesList[2])</p>
+<p class="whs5">algo2D = mesh.Quadrangle()</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4"># define &quot;Arithmetic1D&quot; 
- hypothesis to cut an edge in several segments with &nbsp;increasing 
- arithmetic length</p>
+<p class="whs5">algo_local = mesh.Segment(edge1)</p>
 
-<p class="whs5">algo.Arithmetic1D(1, 
+<p class="whs5">algo_local.Arithmetic1D(1, 
  4)</p>
 
-<p class="whs4">&nbsp;</p>
-
-<p class="whs4"># define &quot;Propagation&quot; 
- hypothesis that propagate all other hypothesis on all edges on<span style="margin-top: 0pt; margin-bottom: 0pt;"> 
- the opposite side in case of quadrangular faces</span></p>
+<p class="whs5">algo_local.Propagation()</p>
 
-<p class="whs5">algo.Propagation()</p>
+<p class="whs5">&nbsp;</p>
 
 <p class="whs5">mesh.Compute()</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4"># sew free borders</p>
+<p class="whs6"># sew free borders</p>
 
-<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
+<p class="whs6"># FirstNodeID1, SecondNodeID1, 
+ LastNodeID1,</p>
 
-<p class="whs5">anEditor.SewFreeBorders(6
21, 5, 1, 12, 3, 0, 0)</p>
+<p class="whs6"># FirstNodeID2, SecondNodeID2
LastNodeID2, CreatePolygons, CreatePolyedrs</p>
 
-<p class="whs5">&nbsp;</p>
-
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
+<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs7"><span style="font-family: 'Lucida Console', monospace;">anEditor.SewFreeBorders(6, 
+ 21, 5, 1, 12, 3, 0, 0)</span> </p>
 
 <h4><a name=bookmark7>Sew Side Elements</a></h4>
 
-<p class="whs5">import salome</p>
+<p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># 
+ Attention! This script has been written using the old approach basing 
+ on direct usage of SMESH idl interface.</B></font></span></p>
+
+<p class="whs4"># For the moment smesh package doesn't provide 
+ methods to sew side elements. </p>
+
+<p class="whs4"># In the next SALOME version the scripts will 
+ be updated to use only the commands from smesh package.</p>
 
 <p class="whs5">import geompy</p>
 
@@ -771,8 +806,7 @@ if (window.writeIntopicBar)
 
 <p class="whs5">&nbsp;</p>
 
-<p class="whs4"># create two faces of the 
- box</p>
+<p class="whs6"># create two boxes</p>
 
 <p class="whs5">box1 = geompy.MakeBox(0., 
  &nbsp;0., 0., 
@@ -781,81 +815,64 @@ if (window.writeIntopicBar)
 <p class="whs5">box2 = geompy.MakeBox(0., 
  15., 0., 20., 25., 10.)</p>
 
+<p class="whs5">&nbsp;</p>
+
 <p class="whs5">EdgesList = geompy.SubShapeAll(box2, 
  geompy.ShapeType[&quot;EDGE&quot;])</p>
 
-<p class="whs4">&nbsp;</p>
-
-<p class="whs5">aComp = geompy.MakeCompound( 
- [box1, box2] )</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs5">idComp = geompy.addToStudy( 
aComp, &quot;Two faces&quot; )</p>
+<p class="whs5">aComp = geompy.MakeCompound([box1, 
box2])</p>
 
-<p class="whs5">aCompobj &nbsp;= 
salome.IDToObject( idComp )</p>
+<p class="whs5">geompy.addToStudy(aComp, 
&quot;Two boxes&quot;)</p>
 
 <p class="whs5">&nbsp;</p>
 
-<p class="whs4"># create a mesh on two 
faces</p>
+<p class="whs6"># create a mesh on 
two boxes</p>
 
-<p class="whs5">mesh = smesh.Mesh(aCompobj
+<p class="whs5">mesh = smesh.Mesh(aComp, 
  &quot;Two faces : quadrangle mesh&quot;)</p>
 
-<p class="whs5">algo = mesh.Segment()</p>
-
-<p class="whs4">&nbsp;</p>
-
-<p class="whs4"># define &quot;NumberOfSegments&quot; 
- hypothesis to cut an edge in a fixed number of segments</p>
-
-<p class="whs5">algo.NumberOfSegments(2)</p>
-
-<p class="whs4">&nbsp;</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4"># create a quadrangle 2D 
- algorithm for faces</p>
+<p class="whs5">algo1D = mesh.Segment()</p>
 
-<p class="whs5">mesh.Quadrangle()</p>
+<p class="whs5">algo1D.NumberOfSegments(2)</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">algo2D = mesh.Quadrangle()</p>
 
-<p class="whs4"># create a local hypothesis</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs5">algo = mesh.Segment(EdgesList[8])</p>
+<p class="whs5">algo_local = mesh.Segment(EdgesList[8])</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">algo_local.NumberOfSegments(4)</p>
 
-<p class="whs4"># define &quot;Arithmetic1D&quot; 
- hypothesis to cut an edge in several segments with increasing arithmetic 
- length </p>
+<p class="whs5">algo_local.Propagation()</p>
 
-<p class="whs5">algo.NumberOfSegments(4)</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs5">mesh.Compute()</p>
 
-<p class="whs4"># define &quot;Propagation&quot; 
- hypothesis that propagates all other hypothesis on all edges on <span 
- style="margin-top: 0pt; margin-bottom: 0pt;">the opposite side in case 
- of quadrangular faces</span></p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs5">algo.Propagation()</p>
+<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
 
-<p class="whs5">mesh.Compute()</p>
+<p class="whs5">&nbsp;</p>
 
-<p class="whs4">&nbsp;</p>
+<p class="whs6"># sew side elements</p>
 
-<p class="whs4"># sew free borders</p>
+<p class="whs6"># IDsOfSide1Elements, 
+ IDsOfSide2Elements,</p>
 
-<p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
+<p class="whs6"># NodeID1OfSide1ToMerge, 
+ NodeID1OfSide2ToMerge, NodeID2OfSide1ToMerge, NodeID2OfSide2ToMerge</p>
 
 <p class="whs5">anEditor.SewSideElements([69, 
  70, 71, 72], [91, 92, 89, 90], 8, 38, 23, 58)</p>
 
-<p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
- </p>
-
 <script type="text/javascript" language="javascript1.2">
 <!--
 if (window.writeIntopicBar)
index 37580f7ac1903c474606bab20f856a9ab1d4f589..743b8912880dfdf1e0c539dc65c8d22b40cfac65 100755 (executable)
@@ -85,121 +85,56 @@ if (window.writeIntopicBar)
 
 <h3>Viewing Mesh Infos</h3>
 
-<p class="whs1">import salome</p>
+<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import 
+ geompy</span></p>
 
-<p class="whs1">import geompy</p>
-
-<p class="whs1">import SMESH</p>
-
-<p class="whs1">import StdMeshers</p>
-
-<p class="whs1">&nbsp;</p>
-
-<p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
- &quot;SMESH&quot;)</p>
-
-<p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
-
-<p class="whs1">&nbsp;</p>
-
-<p class="whs1">box &nbsp;&nbsp;= 
- geompy.MakeBox(0., 0., 0., 20., 20., 20.)</p>
-
-<p class="whs1">idbox = geompy.addToStudy(box, &quot;box&quot;)</p>
+<p class="whs1">import smesh</p>
 
 <p class="whs1">&nbsp;</p>
 
-<p class="whs1">subShapeList = geompy.SubShapeAll(box, 
- geompy.ShapeType[&quot;EDGE&quot;])</p>
+<p class="whs2"># create a box</p>
 
-<p class="whs1">edge &nbsp;&nbsp;= 
subShapeList[0]</p>
+<p class="whs1">box = geompy.MakeBox(0., 0., 0., 20., 
20., 20.)</p>
 
-<p class="whs1">name &nbsp;&nbsp;= 
- geompy.SubShapeName(edge, box)</p>
-
-<p class="whs1">idedge = geompy.addToStudyInFather(box, 
- edge, name)</p>
+<p class="whs1">geompy.addToStudy(box, &quot;box&quot;)</p>
 
 <p class="whs1">&nbsp;</p>
 
-<p class="whs1">box &nbsp;= 
- salome.IDToObject(idbox)</p>
+<p class="whs2"># create a mesh</p>
 
-<p class="whs1">edge = salome.IDToObject(idedge)</p>
+<p class="whs1">tetra = smesh.Mesh(box, &quot;MeshBox&quot;)</p>
 
 <p class="whs1">&nbsp;</p>
 
-<p class="whs1">hyp1 = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs1">hyp1.SetNumberOfSegments(3)</p>
-
-<p class="whs1">hyp2 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs1">hyp2.SetMaxElementArea(10)</p>
-
-<p class="whs1">hyp3 = smesh.CreateHypothesis(&quot;Arithmetic1D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs1">hyp3.SetLength(1,1)</p>
+<p class="whs1">algo1D = tetra.Segment()</p>
 
-<p class="whs1">hyp3.SetLength(6,0)</p>
-
-<p class="whs1">hyp4 = smesh.CreateHypothesis(&quot;Propagation&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs1">algo1D.NumberOfSegments(3)</p>
 
 <p class="whs1">&nbsp;</p>
 
-<p class="whs1">algo1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
-
-<p class="whs1">algo2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
- &quot;libStdMeshersEngine.so&quot;)</p>
+<p class="whs1">algo2D = tetra.Triangle()</p>
 
-<p class="whs1">mesh = smesh.CreateMesh(box)</p>
+<p class="whs1">algo2D.MaxElementArea(10.)</p>
 
 <p class="whs1">&nbsp;</p>
 
-<p class="whs1">mesh.AddHypothesis(box,hyp1)</p>
-
-<p class="whs1">mesh.AddHypothesis(box,hyp2)</p>
-
-<p class="whs1">mesh.AddHypothesis(box,algo1)</p>
-
-<p class="whs1">mesh.AddHypothesis(box,algo2)</p>
-
-<p class="whs1">mesh.AddHypothesis(edge,hyp3)</p>
-
-<p class="whs1">mesh.AddHypothesis(edge,hyp4)</p>
-
-<p class="whs1">mesh.AddHypothesis(edge,algo1)</p>
+<p class="whs1">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>
 
-<p class="whs1">smesh.Compute(mesh,box)</p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)</p>
+<p class="whs1">algo3D.MaxElementVolume(900.)</p>
 
 <p class="whs1">&nbsp;</p>
 
-<p class="whs2"># remove one hypothesis</p>
-
-<p class="whs1">mesh.RemoveHypothesis(edge,hyp4)</p>
+<p class="whs2"># compute the mesh</p>
 
-<p class="whs1">smesh.Compute(mesh,box)</p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1)</p>
+<p class="whs1">tetra.Compute()</p>
 
 <p class="whs1">&nbsp;</p>
 
-<p class="whs2"># change the value 
- of the hypothesis</p>
-
-<p class="whs1">hyp2.SetMaxElementArea(2)</p>
+<p class="whs2"># print informations 
+ about the mesh</p>
 
-<p class="whs1">mesh.AddHypothesis(box,hyp2)</p>
-
-<p class="whs1">smesh.Compute(mesh,box)</p>
+<p class="whs1">mesh = tetra.GetMesh()</p>
 
 <p class="whs1">print &quot;Information about mesh:&quot;</p>
 
@@ -212,36 +147,36 @@ if (window.writeIntopicBar)
 <p class="whs1">print &quot;Number of faces &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 
  &quot;, mesh.NbFaces()</p>
 
-<p class="whs1">print &quot;Number of triangles &nbsp;&nbsp;: 
+<p class="whs1">print &quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;triangles 
+ &nbsp;&nbsp;: 
  &quot;, mesh.NbTriangles()</p>
 
-<p class="whs1">print &quot;Number of quadrangles : &quot;, 
- mesh.NbQuadrangles()</p>
+<p class="whs1">print &quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quadrangles 
: &quot;, mesh.NbQuadrangles()</p>
 
-<p class="whs1">print &quot;Number of polygons &nbsp;&nbsp;&nbsp;: 
+<p class="whs1">print &quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;polygons 
+ &nbsp;&nbsp;&nbsp;: 
  &quot;, mesh.NbPolygons()</p>
 
 <p class="whs1">print &quot;Number of volumes &nbsp;&nbsp;&nbsp;&nbsp;: 
  &quot;, mesh.NbVolumes()</p>
 
-<p class="whs1">print &quot;Number of tetrahedrons: &quot;, 
- mesh.NbTetras()</p>
+<p class="whs1">print &quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tetrahedrons: 
&quot;, mesh.NbTetras()</p>
 
-<p class="whs1">print &quot;Number of hexahedrons : &quot;, 
- mesh.NbHexas()</p>
+<p class="whs1">print &quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hexahedrons 
: &quot;, mesh.NbHexas()</p>
 
-<p class="whs1">print &quot;Number of prisms &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 
+<p class="whs1">print &quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prisms 
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 
  &quot;, mesh.NbPrisms()</p>
 
-<p class="whs1">print &quot;Number of pyramids &nbsp;&nbsp;&nbsp;: 
+<p class="whs1">print &quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pyramids 
+ &nbsp;&nbsp;&nbsp;: 
  &quot;, mesh.NbPyramids()</p>
 
-<p class="whs1">print &quot;Number of polyhedrons : &quot;, 
- mesh.NbPolyhedrons()</p>
-
-<p class="whs1">salome.sg.updateObjBrowser(1) </p>
-
-<p class="whs1">&nbsp;</p>
+<p class="whs1">print &quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;polyhedrons 
+ : &quot;, mesh.NbPolyhedrons() </p>
 
 <script type="text/javascript" language="javascript1.2">
 <!--
index ad8f8d4c02390617c920bfae6dadddd64339d984..bc99598c0fddb92b64ef712c044ba6afadc9d5ae 100755 (executable)
@@ -597,4 +597,4 @@ function window_OnLoad()
 }
 //-->
 </script>
-</html>
\ No newline at end of file
+</html>
index 9e96f979dac0abf130f541dc750a26e3ce735fbb..52d59dff648759dab73982cc56c20165ad614cff 100755 (executable)
@@ -19,6 +19,7 @@ aTE("Borders at multi-connection","borders_at_multi-connection.htm");
 aTE("Borders at multiconnection 2D","borders_at_multiconnection_2d.htm");
 aTE("Clipping","clipping.htm");
 aTE("Constructing Meshes","constructing_meshes.htm");
+aTE("Convert to/from Quadratic Mesh","convert_to_from_quadratic_mesh.htm");
 aTE("Defining hypotheses TUI","defining_hypotheses_tui.htm");
 aTE("Deleting Groups","deleting_groups.htm");
 aTE("Display Entity","display_entity.htm");
@@ -73,11 +74,14 @@ aTE("Length","length.htm");
 aTE("Merge Elements","merge_elements.htm");
 aTE("mesh","mesh.htm");
 aTE("Modifying Meshes","modifying_meshes.htm");
+aTE("SALOME - SMESH - v.version: Package smesh","namespacesmesh.html");
+aTE("Netgen 2D and 3D hypotheses","netgen_2d_and_3d_hypotheses.htm");
 aTE("Pattern mapping","pattern_mapping.htm");
 aTE("Presentation","presentation.htm");
 aTE("Quality Controls","quality_controls.htm");
 aTE("Revolution","revolution.htm");
 aTE("Selection filter library","selection_filter_library.htm");
+aTE("smesh.py_introduction","smesh.py_introduction.htm");
 aTE("Transforming Meshes","transforming_meshes.htm");
 aTE("Transparency","transparency.htm");
 aTE("Viewing Meshes","viewing_meshes.htm");
index d243be45fa95bbde5f0ff5b55f8dc3ed607d5952..6e7f89e4d94a9356adfb19cd892753d030058baa 100755 (executable)
@@ -15,4 +15,4 @@ iTM(0,69,"whftdata0.htm");
 //-->
 </script>
 </body>
-</html>
\ No newline at end of file
+</html>
index edb094244806da0d5087289093011b70e7ff8c30..d3a4c4b0ae4cb619fadab85a306e19403e6999da 100755 (executable)
 </script>
 <script language="javascript">
 <!--
-aWE("0",13,18,5,6,24,7,56,60,63,42,66,68);
-aWE("001",66);
-aWE("0d",13);
-aWE("1",16,1,17,18,19,2,20,22,6,25,7,26,27,28,29,10,11,56,30,31,34,35,60,61,63,38,39,64,42,43,44,46,66,48,49,50,68,69,53);
-aWE("10",6,7,56,60,66,68);
-aWE("100",6,7,56,60,63,66);
-aWE("109",66);
-aWE("11",60);
-aWE("113",66);
-aWE("1135",60);
-aWE("1145",60);
-aWE("1147",60);
-aWE("1159",60);
-aWE("12",60,66);
-aWE("13",60);
-aWE("14",60);
-aWE("15",60,63,66);
-aWE("150",66);
-aWE("16",60);
-aWE("17",60);
-aWE("18",60,63);
-aWE("180",60);
-aWE("19",60);
-aWE("1d",12,13,14,15,18,22,7,10,11,59,36,63,64);
-aWE("1e",60,63);
-aWE("2",16,1,17,19,2,20,22,6,25,7,26,27,28,29,10,11,30,31,35,60,61,63,38,39,64,42,43,44,46,66,48,49,50,68,69,53);
-aWE("20",6,7,56,60,63,66,68);
-aWE("200",6,7,60);
-aWE("21",60,66);
-aWE("23",60,66);
-aWE("2381",60);
-aWE("2382",60);
-aWE("2383",60);
-aWE("2384",60);
-aWE("2385",60);
-aWE("2386",60);
-aWE("2387",60);
-aWE("2388",60);
-aWE("2389",60);
-aWE("2390",60);
-aWE("2391",60);
-aWE("2392",60);
-aWE("2393",60);
-aWE("2394",60);
-aWE("2395",60);
-aWE("2396",60);
-aWE("2397",60);
-aWE("2398",60);
-aWE("2399",60);
-aWE("24",66);
-aWE("240",60);
-aWE("2400",60);
-aWE("2401",60);
-aWE("2402",60);
-aWE("2403",60);
-aWE("2404",60);
-aWE("2405",60);
-aWE("2406",60);
-aWE("2407",60);
-aWE("2408",60);
-aWE("2409",60);
-aWE("2410",60);
-aWE("2411",60);
-aWE("2412",60);
-aWE("2413",60);
-aWE("2414",60);
-aWE("2415",60);
-aWE("2416",60);
-aWE("2417",60);
-aWE("2418",60);
-aWE("2419",60);
-aWE("2420",60);
-aWE("2421",60);
-aWE("2422",60);
-aWE("245",60);
-aWE("246",60);
-aWE("25",66);
-aWE("255",60);
-aWE("2d",12,13,14,15,17,19,4,22,6,7,10,11,32,31,59,35,60,61,63,64,42,66,53);
-aWE("3",13,17,19,20,22,6,25,26,27,10,11,56,30,60,61,63,38,39,64,42,43,44,66,48,49,68,53);
-aWE("30",7,56,60,63,66);
-aWE("300",6,7);
-aWE("3128",60);
-aWE("321",60);
-aWE("3265",60);
-aWE("3402",60);
-aWE("3658",60);
-aWE("38",60,66);
-aWE("39",60);
-aWE("3d",12,13,14,15,0,16,1,19,2,20,22,24,25,7,8,26,27,28,10,11,59,33,63,38,39,64,42,44,48,49,69,52);
-aWE("3e",63);
-aWE("3rd",13);
-aWE("3x3",60);
-aWE("4",13,17,19,22,6,25,7,27,11,30,60,61,63,42,43,46,66,53);
-aWE("40",60);
-aWE("405",60);
-aWE("406",60);
-aWE("45",60,66);
-aWE("47",60);
-aWE("492",60);
-aWE("493",60);
-aWE("5",5,60,63,66);
-aWE("50",7,60,66);
-aWE("502",60);
-aWE("503",60);
-aWE("58",66);
-aWE("5th",13);
-aWE("6",2,6,7,56,60,66,68);
-aWE("60",56,60);
-aWE("642",60);
-aWE("66632",60);
-aWE("69",66);
-aWE("7",6,7,56,60,63);
-aWE("70",7,63,66);
-aWE("700",60);
-aWE("71",66);
-aWE("72",66);
-aWE("73",60);
-aWE("77",60);
-aWE("8",56,60,66);
-aWE("800",6,7);
-aWE("814",60);
-aWE("850",60);
-aWE("859",60);
-aWE("864",60);
-aWE("89",66);
-aWE("9",60,66);
-aWE("90",66);
-aWE("900",6,7);
-aWE("91",66);
-aWE("911",60);
-aWE("92",66);
-aWE("931",60);
-aWE("932",60);
-aWE("95",63);
-aWE("950",60);
-aWE("9999",24);
-aWE("a_mesh",60);
-aWE("aa",60);
-aWE("abl",16,1,52);
-aWE("abord",63);
-aWE("aborder",63);
-aWE("abov",11,60,44);
-aWE("abox",63);
-aWE("absent",50);
-aWE("absolute",67);
-aWE("abut",18);
-aWE("acces",0,65,52);
-aWE("accord",15,17,18,19,2,31,35,61,43,44,46,69,53);
-aWE("account",12,61);
-aWE("acomp",63,66);
-aWE("acompobj",66);
-aWE("actual",36);
-aWE("ad",16,1,20,24,25,56,60,48,50);
-aWE("add",16,1,20,22,6,24,25,7,29,11,56,60,63,65,48);
-aWE("addedg",60);
-aWE("addfac",60);
-aWE("addhypothesi",6,7,56,60,63,68);
-aWE("addition",25,59,60);
-aWE("additional",12,13,22,7,36,61,41,65,44);
-aWE("addnod",60);
-aWE("addobject",56);
-aWE("addpolygonalfac",60);
-aWE("addpolyhedralvolum",60);
-aWE("addtostudy",6,7,56,60,63,66,68);
-aWE("addtostudyinfath",6,7,56,60,68);
-aWE("addvolum",60);
-aWE("adjacent",27,35,36,38,42,48);
-aWE("adjust",44);
-aWE("adjustabl",36);
-aWE("advanc",0,51);
-aWE("afilt",56,63);
-aWE("afiltermgr",56,60,63);
-aWE("afunctor",56,60,63);
-aWE("ageomgroup1",56);
-aWE("ageomgroup2",56);
-aWE("agroup",56,63);
-aWE("agroup1",56);
-aWE("agroup2",56);
-aWE("agroup3",56);
-aWE("agroup4",56);
-aWE("agroup5",56);
-aWE("agroupelemid",56);
-aWE("agroupf",63);
-aWE("agroupmain",56);
-aWE("agroupn",63);
-aWE("agroupr",56);
-aWE("agrouptool",56);
-aWE("ai",18);
-aWE("al",60);
-aWE("algo",6,7,60,66);
-aWE("algo1",6,63,68);
-aWE("algo2",6,63,68);
-aWE("algorithm",12,13,14,15,0,17,22,6,23,7,11,56,32,59,33,61,37,42,66);
-aWE("allow",12,0,1,18,20,23,24,25,30,32,58,34,59,36,61,40,42,44,45,47,48,50,52);
-aWE("along",10,11,60,61,44,52);
-aWE("alternativ",22);
+aWE("_grp",69);
+aWE("0",14,19,5,6,25,8,12,57,61,63,66,43,69,70,72);
+aWE("000001",66);
+aWE("001",70);
+aWE("0d",14);
+aWE("1",17,1,18,19,20,2,21,23,6,7,26,8,27,28,29,30,11,12,57,31,32,35,36,61,64,66,39,40,67,62,43,44,69,45,47,70,49,50,51,73,54);
+aWE("10",6,8,12,57,61,69,70,72);
+aWE("100",6,8,57,66,69,70);
+aWE("109",70);
+aWE("110",61);
+aWE("113",70);
+aWE("12",61,70);
+aWE("13",61);
+aWE("130",61);
+aWE("15",61,66,70);
+aWE("150",8,61,70);
+aWE("17",61);
+aWE("180",61);
+aWE("1d",13,14,15,16,19,23,6,8,11,12,60,61,63,37,66,67,69);
+aWE("1e",61,66);
+aWE("2",17,1,18,20,2,21,23,6,7,26,8,27,28,29,30,11,12,31,32,36,61,64,66,39,40,67,62,43,44,45,47,70,49,50,51,73,54);
+aWE("20",6,8,57,61,66,69,70,72);
+aWE("200",6,8,61,69);
+aWE("21",61,70);
+aWE("23",61,70);
+aWE("24",70);
+aWE("240",61);
+aWE("245",61);
+aWE("246",61);
+aWE("25",70);
+aWE("255",61);
+aWE("2d",13,14,15,16,18,20,4,23,6,8,11,12,57,33,32,60,36,63,64,66,67,43,69,70,54);
+aWE("3",14,18,20,21,23,6,7,26,8,27,28,11,12,57,31,61,63,64,66,39,40,67,62,43,44,69,45,70,49,50,72,54);
+aWE("30",8,61,63,70);
+aWE("300",6);
+aWE("3128",61);
+aWE("321",61);
+aWE("3265",61);
+aWE("3402",61);
+aWE("35",57,66);
+aWE("3658",61);
+aWE("38",61,66,70);
+aWE("39",61);
+aWE("3d",13,14,15,16,0,17,1,20,2,21,23,6,25,26,8,9,27,28,29,11,12,60,63,34,66,39,40,67,43,69,45,49,50,73,53);
+aWE("3e",66);
+aWE("3rd",14);
+aWE("3x3",61);
+aWE("4",14,18,20,23,6,26,8,28,12,31,61,64,66,62,43,44,47,70,54);
+aWE("40",57,61,69);
+aWE("405",61);
+aWE("406",61);
+aWE("45",12,61,70);
+aWE("47",61);
+aWE("492",61);
+aWE("493",61);
+aWE("5",5,6,8,61,66,70);
+aWE("50",8,61,70);
+aWE("502",61);
+aWE("503",61);
+aWE("58",70);
+aWE("5th",14);
+aWE("6",2,6,8,57,61,70);
+aWE("60",57,61,69);
+aWE("66632",61);
+aWE("69",70);
+aWE("7",6,8,57,61,66);
+aWE("70",8,61,70);
+aWE("71",70);
+aWE("72",70);
+aWE("73",61);
+aWE("8",57,61,66,70);
+aWE("80",61,69);
+aWE("800",6);
+aWE("814",61);
+aWE("850",61);
+aWE("859",61);
+aWE("89",70);
+aWE("9",61,70);
+aWE("90",70);
+aWE("900",6,72);
+aWE("91",70);
+aWE("92",70);
+aWE("95",66);
+aWE("9999",25);
+aWE("a_mesh",61);
+aWE("a10",61);
+aWE("a45",61);
+aWE("aa",61);
+aWE("abl",17,1,53);
+aWE("abord",66);
+aWE("aborder",66);
+aWE("abov",61,45);
+aWE("absent",51);
+aWE("absolute",71);
+aWE("abut",19);
+aWE("acces",0,68,53);
+aWE("accord",16,18,19,20,2,32,36,64,44,45,47,73,54);
+aWE("account",13,64);
+aWE("acomp",70);
+aWE("actual",63,37);
+aWE("ad",17,1,21,7,25,26,57,61,49,51);
+aWE("add",17,1,21,23,25,26,8,30,12,57,61,66,68,69,49);
+aWE("addedg",61);
+aWE("addfac",61);
+aWE("addhypothesi",61);
+aWE("addition",26,60,61);
+aWE("additional",13,14,23,8,37,64,42,68,45);
+aWE("addnod",61);
+aWE("addobject",57);
+aWE("addpolygonalfac",61);
+aWE("addpolyhedralvolum",61);
+aWE("addtostudy",6,8,57,61,66,69,70,72);
+aWE("addtostudyinfath",6,8,57,61);
+aWE("addvolum",61);
+aWE("adjacent",28,36,63,37,39,43,49);
+aWE("adjust",45);
+aWE("adjustabl",37);
+aWE("advanc",0,52);
+aWE("afilt",57,66);
+aWE("afiltermgr",57,61,66);
+aWE("afunctor",57,61,66);
+aWE("ageomgroup",57);
+aWE("agroup",57,66);
+aWE("agroup1",57);
+aWE("agroup2",57);
+aWE("agroup3",57);
+aWE("agroup4",57);
+aWE("agroup5",57);
+aWE("agroupelemid",57);
+aWE("agroupf",66);
+aWE("agroupmain",57);
+aWE("agroupn",66);
+aWE("agroupr",57);
+aWE("agrouptool",57);
+aWE("ai",19);
+aWE("al",61);
+aWE("algo",8,66,70);
+aWE("algo_local",6,8,70);
+aWE("algo1d",6,8,57,61,69,70,72);
+aWE("algo2d",6,8,61,69,70,72);
+aWE("algo3d",6,8,69,72);
+aWE("algorithm",13,14,15,16,0,18,23,6,24,8,12,33,60,61,63,34,64,38,43);
+aWE("allow",13,0,1,19,21,24,7,25,26,31,33,59,35,60,63,37,64,41,43,45,46,48,49,51,53);
+aWE("along",11,12,61,64,45,53);
+aWE("alternativ",23);
 aWE("alternative",0,1);
-aWE("alway",44);
-aWE("amesheditor",60,66);
+aWE("alway",45);
+aWE("amesh",6);
+aWE("amesheditor",61,70);
 aWE("amount",3);
-aWE("analytic",18);
-aWE("aneditor",60,63,66);
-aWE("angl",15,5,25,11,59,35,60,63,64,40,43,48,53);
-aWE("angle180",66);
-aWE("angle45",60);
-aWE("angular",11);
-aWE("angularity",11);
-aWE("anid",56,63);
-aWE("anodeid1",60);
-aWE("anodeid2",60);
-aWE("anodeid3",60);
-aWE("anodeid4",60);
-aWE("anoth",60,36);
-aWE("any",13,1,22,24,27,11,56,61,44);
-aWE("ap",14,16,1,17,19,2,20,5,22,24,25,7,8,26,27,29,10,11,31,58,59,35,60,61,37,38,39,64,42,43,44,45,46,48,49,50,69,53);
-aWE("apparent",22);
-aWE("appear",0,16,1,20,22,23,25,26,27,29,10,11,34,61,38,39,64,40,45,47,48,49,50);
-aWE("append",60,63);
-aWE("appli",17,18,19,2,22,23,32,31,35,33,36,37,65,43,44,46,69,53);
-aWE("applicabl",19,65);
-aWE("application",15,61);
-aWE("apply",12,0,22,23,24);
-aWE("applytomeshfac",60);
-aWE("appropriat",22);
-aWE("approximate",18);
-aWE("apredicat",56,63);
-aWE("arc",7,60,66);
-aWE("arcsin",53);
-aWE("area",12,15,17,7,56,32,59,33,63,44,46,52);
-aWE("arithmetic",12,18,6,7,59,66);
-aWE("arithmetic1d",6,7,66,68);
-aWE("around",5,11,64);
-aWE("array_of_nodes_group",66);
-aWE("asmeshgroup1",56);
-aWE("asmeshgroup2",56);
-aWE("aspect",15,19,2,59,63,44);
-aWE("assign",18,22,24,7,37,53);
-aWE("associat",16,28,38);
-aWE("attribut",24);
+aWE("analytic",19);
+aWE("aneditor",61,66,70);
+aWE("angl",16,5,26,12,60,36,61,66,67,41,44,70,49,54);
+aWE("angle270",70);
+aWE("angle45",61);
+aWE("angularity",12);
+aWE("anid",57,66);
+aWE("anoth",37);
+aWE("any",14,1,23,25,28,12,57,64,45);
+aWE("ap",15,17,1,18,20,2,21,5,23,7,25,26,8,9,27,28,30,11,12,32,59,60,36,61,64,38,39,40,67,43,44,45,46,47,49,50,51,73,54);
+aWE("api",69);
+aWE("apparent",23);
+aWE("appear",0,17,1,21,23,24,7,26,27,28,30,11,12,35,64,39,40,67,41,46,48,49,50,51);
+aWE("append",61);
+aWE("appli",18,19,20,2,23,24,33,32,36,37,34,38,68,44,45,47,73,54);
+aWE("applicabl",20,68);
+aWE("application",16,64);
+aWE("apply",13,0,23,24,25);
+aWE("applytomeshfac",61);
+aWE("approach",57,61,66,70);
+aWE("appropriat",23);
+aWE("approximate",19);
+aWE("apredicat",57,66);
+aWE("ar_margin",66);
+aWE("arc",8,70);
+aWE("arcsin",54);
+aWE("area",13,16,18,8,57,33,60,34,66,45,47,53);
+aWE("area_margin",66);
+aWE("arithmetic",13,19,6,8,60);
+aWE("arithmetic1d",6,8,70);
+aWE("around",5,12,67);
+aWE("array_of_nodes_group",70);
+aWE("asmeshgroup1",57);
+aWE("asmeshgroup2",57);
+aWE("aspect",16,20,2,60,66,45);
+aWE("assemb",69);
+aWE("assign",19,23,25,8,38,54);
+aWE("associat",17,29,39);
+aWE("attention",57,61,66,70);
+aWE("attribut",25);
 aWE("auto",5);
-aWE("automatic",12,18,22,59,61);
-aWE("automatical",0,18,20,22,25,27,48);
-aWE("availabl",42,52);
-aWE("averag",12,18,7,32,59,61,53);
-aWE("ax",52);
-aWE("axi",10,64,40,45,52,53);
-aWE("axisstruct",60,66);
-aWE("axisxyz",60,66);
+aWE("automatic",13,19,23,60,64);
+aWE("automatical",0,19,21,23,26,28,49);
+aWE("availabl",43,53);
+aWE("averag",13,19,8,33,60,64,54);
+aWE("ax",53);
+aWE("axi",11,61,67,41,46,70,53,54);
+aWE("axisstruct",61,70);
+aWE("axisxyz",61,70);
 aWE("background",0);
-aWE("bar",15);
-aWE("bas",12,17,7,11,59,53);
-aWE("basi",13,22,23);
-aWE("basic",12,0);
-aWE("becom",61);
-aWE("befor",65,66);
-aWE("begin",18,42);
-aWE("belong",3,4,24,54,55,42,50);
-aWE("below",60);
-aWE("berder",42);
-aWE("bet",19);
-aWE("binary",65);
-aWE("bisect",53);
-aWE("bisector",53);
-aWE("bit",65);
+aWE("bar",16);
+aWE("bas",13,18,8,12,57,60,61,66,70,54);
+aWE("basi",14,23,24);
+aWE("basic",13,0);
+aWE("bb",61);
+aWE("becom",63,64);
+aWE("befor",68,70);
+aWE("begin",19,43);
+aWE("belong",3,4,25,55,56,43,51);
+aWE("below",61,63,69);
+aWE("berder",43);
+aWE("bet",20);
+aWE("binary",68);
+aWE("bisect",54);
+aWE("bisector",54);
+aWE("bit",68);
 aWE("black",0);
-aWE("block",6,7);
 aWE("blu",3);
-aWE("bmp",0,52);
-aWE("bog",18);
-aWE("boolean",50);
-aWE("bord",42,66);
-aWE("border",15,3,4,54,55,59,63,42,66);
-aWE("both",0,11,44,50);
-aWE("bottom",60,41);
-aWE("bound",13,61);
-aWE("boundari",61);
-aWE("boundary",12,24,61,42,44);
-aWE("box",14,16,1,18,20,22,6,23,25,7,26,27,29,10,11,56,30,58,34,61,63,38,39,64,40,41,65,42,44,45,66,47,48,49,50,51,68);
-aWE("box_1",60);
-aWE("box_id",6,7);
-aWE("box1",66);
-aWE("box2",66);
-aWE("broken",1,36);
-aWE("brown",24);
-aWE("brows",0,16,1,21,22,23,24,8,29,62,38,39,65,51);
-aWE("build",7,10,32,60,36,61,64);
-aWE("built",19,23,61,44);
-aWE("button",16,1,17,19,2,20,5,22,23,24,25,8,26,27,29,10,11,30,31,35,61,37,38,39,64,40,65,42,43,44,45,46,47,48,49,50,51,69,52,53);
-aWE("cad",13);
-aWE("cal",61);
-aWE("calculat",15,19,2,32,46);
-aWE("calculation",12,17,31,35);
-aWE("careful",38);
-aWE("cas",16,22,6,7,27,60,61,66,51);
-aWE("cel",24,38,49);
-aWE("cent",11,44,52);
-aWE("centroid",44);
-aWE("centroidal",44);
-aWE("centroidal_smooth",60);
-aWE("certain",24,61);
-aWE("chang",0,18,20,6,27,60,36,37,68);
-aWE("characteristic",15);
-aWE("characteriz",13);
-aWE("check",24,42,52);
-aWE("checkbox",16,65,47);
-aWE("choic",12,22,61);
-aWE("choos",16,1,17,19,2,20,21,24,25,8,26,27,9,28,10,11,30,31,34,35,61,38,39,64,40,41,65,42,43,45,46,47,48,49,69,53);
-aWE("chosen",19,25,32,33,48);
-aWE("circl",11,60,66);
-aWE("circlemesh",60,66);
-aWE("clear",65);
-aWE("click",0,16,1,17,19,2,20,5,21,22,23,24,25,8,26,27,28,29,10,11,30,31,35,61,62,37,38,39,64,41,65,42,43,44,46,48,49,50,51,69,52,53);
+aWE("bmp",0,53);
+aWE("bog",19);
+aWE("boolean",61,51);
+aWE("bord",43,70);
+aWE("border",16,3,4,55,56,60,66,43,70);
+aWE("both",0,12,45,51);
+aWE("bottom",61,42);
+aWE("bound",14,64);
+aWE("boundari",64);
+aWE("boundary",13,25,64,43,45);
+aWE("box",17,1,19,21,23,6,24,7,26,8,27,28,30,11,12,57,31,59,35,63,64,66,39,40,67,41,42,68,43,69,45,46,70,48,49,50,51,52,72);
+aWE("box_1",61);
+aWE("box_cyl",69);
+aWE("box1",66,70);
+aWE("box2",66,70);
+aWE("broken",1,37);
+aWE("brown",25);
+aWE("brows",0,17,1,22,23,24,25,9,30,65,39,40,68,52);
+aWE("build",8,11,33,61,63,37,64,67,69);
+aWE("built",20,24,12,64,45);
+aWE("button",17,1,18,20,2,21,5,23,24,7,25,26,9,27,28,30,11,12,31,32,36,64,38,39,40,67,41,68,43,44,45,46,47,48,49,50,51,52,73,53,54);
+aWE("cad",14);
+aWE("cal",64);
+aWE("calculat",16,20,2,33,47);
+aWE("calculation",13,18,32,36);
+aWE("careful",39);
+aWE("cas",17,23,6,8,28,12,64,52);
+aWE("cc",61);
+aWE("cel",25,63,39,50);
+aWE("cent",12,45,53);
+aWE("central",12);
+aWE("centroid",45);
+aWE("centroidal",45);
+aWE("centroidal_smooth",61);
+aWE("certain",25,64);
+aWE("chang",0,19,21,6,28,61,37,38);
+aWE("characteristic",16);
+aWE("characteriz",14);
+aWE("check",25,63,66,43,53);
+aWE("checkbox",17,63,68,48);
+aWE("choic",13,23,64);
+aWE("choos",17,1,18,20,2,21,22,7,25,26,9,27,28,10,29,11,12,31,32,35,36,64,39,40,67,41,42,68,43,44,46,47,48,49,50,73,54);
+aWE("chosen",20,26,33,34,49);
+aWE("circl",12,70);
+aWE("circlemesh",70);
+aWE("circular",61);
+aWE("clas",62);
+aWE("clear",62,68);
+aWE("click",0,17,1,18,20,2,21,5,22,23,24,7,25,26,9,27,28,29,30,11,12,31,32,36,64,65,38,39,40,67,42,68,43,44,45,47,49,50,51,52,73,53,54);
 aWE("clip",0,5);
-aWE("clos",13,19,8,42);
-aWE("co",60,42);
-aWE("coars",18);
-aWE("coincid",58);
-aWE("coincident",58,34);
-aWE("color",15,0,17,19,2,24,31,35,43,46,69,52,53);
-aWE("combin",9,31,62,65);
-aWE("common",26,65,49);
-aWE("compar",18,42);
-aWE("complete",58);
-aWE("complex",1);
-aWE("component",59,41);
-aWE("compos",12,13,14,15,0,18,2,28,32,33,43);
-aWE("compound",6,7);
-aWE("comput",0,18,22,6,7,56,60,61,63,42,66,68);
-aWE("computation",22,23,7,56,60);
-aWE("concept",36);
-aWE("condition",12,24);
-aWE("confirm",20,25,29,38,44,48,50);
-aWE("confirmation",24);
-aWE("conform",12,36,42,66);
-aWE("conformity",19);
-aWE("connect",18,25,44);
-aWE("connection",13,15,3,4,59,63);
-aWE("connectivity",61);
-aWE("consid",19,22);
-aWE("consider",13,19,2,42);
-aWE("consist",15,1,17,18,19,3,4,21,22,23,24,54,55,56,32,31,35,33,46);
-aWE("consol",51);
-aWE("constant",18);
-aWE("construct",18,21,22,6,23,37);
-aWE("construction",18,22,6,23);
-aWE("contain",13,14,20,22,23,24,25,30,32,61,44,48);
-aWE("content",8,52);
-aWE("continu",44);
-aWE("contour",13,42);
-aWE("contrast",48);
-aWE("control",15,0,17,19,2,3,4,25,54,55,57,31,59,35,63,43,46,48,69,53);
-aWE("converg",44);
-aWE("conversion",18);
-aWE("coordinat",13,16,27,61,52);
-aWE("copy",40,65,45,66,47);
-aWE("corn",1,53);
-aWE("corner",25,44,53);
-aWE("correspond",13,15,30,60,61,63,65,42,47);
-aWE("cosal",60);
-aWE("could",13,16);
-aWE("count",42);
-aWE("counterclockwis",61);
-aWE("cours",22);
-aWE("creat",13,14,0,16,1,18,5,22,6,23,24,7,29,56,34,59,60,36,61,63,37,40,65,45,66,47,50,53);
-aWE("createanddisplaygo",7);
-aWE("createarea",56,63);
-aWE("createaspectratio",63);
-aWE("createaspectratio3d",63);
-aWE("createequalto",56,63);
-aWE("createfilt",56,63);
-aWE("createfiltermanag",56,60,63);
-aWE("createfreeborder",63);
-aWE("createfreeedg",63);
-aWE("creategroup",56,60,63);
-aWE("creategroupfromgeom",56);
-aWE("createhypothesi",6,7,56,60,63,68);
-aWE("createlength",63);
-aWE("createlength2d",63);
-aWE("createlessthan",56,63);
-aWE("createmesh",6,7,56,60,63,68);
-aWE("createminimumangl",60,63);
-aWE("createmorethan",56,63);
-aWE("createmulticonnection",63);
-aWE("createmulticonnection2d",63);
-aWE("createskew",63);
-aWE("createtap",63);
-aWE("createvolume3d",63);
-aWE("createwarp",63);
-aWE("creation",13,36,61,37,50);
-aWE("criteria",59,65);
-aWE("criterion",17,19,2,24,25,56,57,31,35,63,65,43,46,48,69,53);
-aWE("cros",0,5,53);
-aWE("cubic",14);
-aWE("current",20,22,25,37,65,42,48);
-aWE("curv",13,18,11);
-aWE("curvilinear",18,11);
-aWE("cut",18,6,25,7,56,60,66,50);
-aWE("cutgroup",56);
-aWE("cylind",60);
-aWE("d",18);
-aWE("deal",13);
-aWE("def",60);
-aWE("default",0,22,11,62,65,67,52);
-aWE("defin",13,14,1,18,19,5,22,6,23,24,7,11,60,36,61,42,66,52);
-aWE("definit",13,15,18,20,21,24,25,59,37,38,48);
-aWE("definition",0,18,32,33);
-aWE("deflection",12,18,7,59);
-aWE("deflection1d",7);
-aWE("deform",52);
-aWE("degre",19,5);
-aWE("delet",8,55,60,38,65);
-aWE("deletediag",60);
-aWE("deletion",38,49);
-aWE("density",18);
-aWE("depend",12,13,22,32,33);
-aWE("describ",13,61);
-aWE("description",61);
-aWE("desirabl",34);
-aWE("desktop",41);
-aWE("destin",13,15,59);
-aWE("detail",12,0);
-aWE("detect",34);
-aWE("dh",60);
-aWE("diagonal",25,26,60,46);
-aWE("dialog",14,16,1,18,20,22,23,25,26,27,29,10,11,30,58,34,61,38,39,64,40,42,44,45,47,48,49,50);
-aWE("diamet",19);
-aWE("dif",1);
-aWE("differ",18);
-aWE("differenc",11,42);
-aWE("different",12,16,24,37,65,42);
-aWE("dimension",13,2,22,10,64,51);
-aWE("direct",13,42,44);
-aWE("direction",61,53);
-aWE("dirstruct",60,66);
-aWE("discretisation",6,7);
-aWE("discretiz",10,64);
-aWE("discretization",13,14);
-aWE("displac",27);
-aWE("display",15,0,1,17,19,2,3,20,22,23,24,25,7,27,9,28,54,31,35,62,43,44,46,48,51,69,52,53);
-aWE("distanc",18,5,61,52,53);
-aWE("distinguish",24);
-aWE("distortion",44);
-aWE("distribution",18);
-aWE("divid",18);
-aWE("do",16);
-aWE("domain",61);
-aWE("don",13,22,36,52);
+aWE("clos",14,20,9,12,61,43);
+aWE("co",61,43);
+aWE("coars",19,7,63);
+aWE("coincid",59);
+aWE("coincident",12,59,35);
+aWE("color",16,0,18,20,2,25,32,36,44,47,73,53,54);
+aWE("combin",10,32,65,68);
+aWE("command",57,61,66,70);
+aWE("common",27,68,50);
+aWE("comp",66);
+aWE("compar",19,43);
+aWE("complete",59);
+aWE("complex",1,12);
+aWE("component",60,42);
+aWE("compos",13,14,15,16,0,19,2,29,33,34,44);
+aWE("compound",66);
+aWE("comput",0,19,23,6,8,57,61,64,66,43,69,70,72);
+aWE("computation",23,24,8,61);
+aWE("con",69);
+aWE("concept",37);
+aWE("condition",13,25);
+aWE("confirm",21,26,30,39,45,49,51);
+aWE("confirmation",25);
+aWE("conform",13,37,43,70);
+aWE("conformity",20);
+aWE("connect",19,26,45);
+aWE("connection",14,16,3,4,60,66);
+aWE("connectivity",64);
+aWE("consid",20,23);
+aWE("consider",14,20,2,43);
+aWE("consist",16,1,18,19,20,3,4,22,23,24,25,12,55,56,57,33,32,36,34,47);
+aWE("consol",52);
+aWE("constant",19);
+aWE("construct",15,19,22,23,6,24,38);
+aWE("construction",19,23,6,24);
+aWE("contain",14,15,21,23,24,25,26,12,31,33,64,45,49);
+aWE("content",9,53);
+aWE("continu",45);
+aWE("contour",14,43);
+aWE("contrast",49);
+aWE("control",16,0,18,20,2,3,4,26,55,56,58,32,60,36,66,44,47,49,73,54);
+aWE("converg",45);
+aWE("conversion",19,7);
+aWE("convert",7);
+aWE("coordinat",14,17,28,64,53);
+aWE("copi",70);
+aWE("copy",41,68,46,70,48);
+aWE("corn",1,54);
+aWE("corner",26,12,45,54);
+aWE("correspond",14,16,31,64,66,68,43,48);
+aWE("cos_bot",61);
+aWE("cos_top",61);
+aWE("cosal",61);
+aWE("cot",69);
+aWE("could",14,17);
+aWE("count",43);
+aWE("counterclockwis",64);
+aWE("cours",23);
+aWE("cover",12);
+aWE("creat",14,0,17,1,19,5,23,6,24,25,8,30,57,35,60,61,63,37,64,66,38,41,68,69,46,70,48,51,72,54);
+aWE("createarea",57,66);
+aWE("createaspectratio",66);
+aWE("createaspectratio3d",66);
+aWE("createemptymesh",61);
+aWE("createequalto",57,66);
+aWE("createfilt",57,66);
+aWE("createfiltermanag",57,61,66);
+aWE("createfreeborder",66);
+aWE("createfreeedg",66);
+aWE("creategroup",57,61,66,69);
+aWE("creategroupfromgeom",61);
+aWE("createhypothesi",61);
+aWE("createlength",66);
+aWE("createlength2d",66);
+aWE("createlessthan",57,66);
+aWE("createminimumangl",61,66);
+aWE("createmorethan",57,66);
+aWE("createmulticonnection",66);
+aWE("createmulticonnection2d",66);
+aWE("createpolyedr",70);
+aWE("createpolygon",70);
+aWE("createskew",66);
+aWE("createtap",66);
+aWE("createvolume3d",66);
+aWE("createwarp",66);
+aWE("creation",14,37,64,38,62,69,51);
+aWE("criteria",60,68);
+aWE("criterion",18,20,2,25,26,57,58,32,36,66,68,44,47,49,73,54);
+aWE("cros",0,5,54);
+aWE("cubic",15);
+aWE("current",21,23,26,63,38,68,43,49);
+aWE("curv",14,19,12,61);
+aWE("curvilinear",19,12);
+aWE("custom",63);
+aWE("cut",19,6,26,8,57,61,51);
+aWE("cutgroup",57);
+aWE("cyl",8,69);
+aWE("cylind",8,69);
+aWE("d",19);
+aWE("data",62);
+aWE("dd",61);
+aWE("deal",14);
+aWE("def",6,61,62);
+aWE("default",0,23,12,57,63,65,68,71,53);
+aWE("defin",14,15,1,19,20,5,23,6,24,25,8,12,61,63,37,64,62,43,69,70,53);
+aWE("definit",14,16,19,21,22,25,26,60,38,39,49);
+aWE("definition",0,19,6,12,33,63,34);
+aWE("deflection",13,19,8,60);
+aWE("deflection1d",8);
+aWE("deform",53);
+aWE("degre",20,5);
+aWE("delet",9,56,61,39,68);
+aWE("deletediag",61);
+aWE("deletion",39,50);
+aWE("density",19);
+aWE("depend",13,14,23,33,34);
+aWE("describ",14,15,64);
+aWE("description",64);
+aWE("desirabl",35);
+aWE("desktop",42);
+aWE("destin",14,16,60,62);
+aWE("detail",13,15,0);
+aWE("detalization",63);
+aWE("detect",35);
+aWE("dh",61);
+aWE("di1",69);
+aWE("diagonal",26,27,61,47);
+aWE("dialog",17,1,19,21,23,24,7,26,27,28,30,11,12,31,59,35,64,39,40,67,41,43,45,46,48,49,50,51);
+aWE("diamet",20);
+aWE("dif",1,63);
+aWE("differ",19);
+aWE("differenc",12,43);
+aWE("different",13,17,25,12,38,68,43);
+aWE("digit",12);
+aWE("dimension",14,2,23,11,63,67,52);
+aWE("direct",14,6,57,61,66,43,45,70);
+aWE("direction",12,64,54);
+aWE("dirstruct",61,70);
+aWE("discretiz",11,67);
+aWE("discretization",14,15);
+aWE("displac",28);
+aWE("display",16,0,1,18,20,2,3,21,23,24,25,26,28,10,29,55,32,36,65,44,45,47,49,52,73,53,54);
+aWE("distanc",19,5,64,53,54);
+aWE("distinguish",25);
+aWE("distortion",45);
+aWE("distribution",19);
+aWE("divid",19);
+aWE("do",17);
+aWE("docopy",70);
+aWE("documentation",62);
+aWE("doesn",57,61,66,70);
+aWE("domain",64);
+aWE("don",14,23,12,61,37,53);
 aWE("doubl",1);
-aWE("downward",52);
-aWE("dr",60);
-aWE("drag",52);
-aWE("drawn",52);
-aWE("dump",0,52);
-aWE("dx",60);
-aWE("dy",60);
-aWE("e",19,22,23,25,61,42,48);
-aWE("easi",21);
-aWE("edg",12,13,14,15,0,16,1,18,19,3,4,21,22,6,24,25,7,26,27,9,11,54,55,56,57,32,31,59,60,36,61,63,65,42,44,66,48,49,68,53);
-aWE("edgeslist",66);
-aWE("edgex111",6,7);
-aWE("edgex112",6,7);
-aWE("edgex121",6,7);
-aWE("edgex122",6,7);
-aWE("edgey11",6,7);
-aWE("edgey12",6,7);
-aWE("edgey21",6,7);
-aWE("edgey22",6,7);
-aWE("edgez111",6,7);
-aWE("edgez121",6,7);
-aWE("edgez211",6,7);
-aWE("edgez221",6,7);
-aWE("edit",6,8,29,56,34,37);
-aWE("effect",48);
-aWE("eith",61,42);
-aWE("element",12,13,14,15,0,16,1,17,18,19,2,4,20,21,24,25,7,8,26,27,28,29,10,11,55,56,32,31,58,59,35,60,33,36,61,63,38,39,64,40,65,42,43,44,45,46,66,47,48,50,51,69,53);
-aWE("els",7,56,60,61);
-aWE("enabl",65);
-aWE("encapsulat",23);
-aWE("encounter",61);
-aWE("end",12,18,7,59,36,65,42,47);
-aWE("enough",42);
-aWE("ent",24,26,27,30,49);
-aWE("entiti",13,14);
-aWE("entity",13,0,9,65);
-aWE("equal",18,32,61,65,42,44);
-aWE("equidistant",18);
-aWE("equilateral",19);
+aWE("downward",53);
+aWE("dr",61);
+aWE("drag",53);
+aWE("drawn",53);
+aWE("dump",0,53);
+aWE("duplicat",12);
+aWE("dx",61);
+aWE("dy",61);
+aWE("e",20,23,24,26,12,63,64,43,49);
+aWE("e_arc",8);
+aWE("e_straight",8);
+aWE("e1",61);
+aWE("easi",22);
+aWE("easy",62);
+aWE("edg",13,14,15,16,0,17,1,19,20,3,4,22,23,6,25,26,8,27,28,10,12,55,56,57,58,33,32,60,61,63,37,64,66,68,43,45,70,49,50,72,54);
+aWE("edge_",61);
+aWE("edge_bezierrr",61);
+aWE("edge_bezierrr_mesh",61);
+aWE("edge_circl",61);
+aWE("edge_circle_mesh",61);
+aWE("edge_straight",61);
+aWE("edge_straight_mesh",61);
+aWE("edge1",70);
+aWE("edgeslist",70);
+aWE("edgex",6,8);
+aWE("edit",6,9,30,57,35,38);
+aWE("edition",62,69);
+aWE("editor_1",61);
+aWE("editor_2",61);
+aWE("editor_3",61);
+aWE("editor_4",61);
+aWE("editor_5",61);
+aWE("editor_6",61);
+aWE("editor_7",61);
+aWE("ee_1",61);
+aWE("ee_2",61);
+aWE("ee_3",61);
+aWE("ee_4",61);
+aWE("ee_5",61);
+aWE("ee_6",61);
+aWE("ee_7",61);
+aWE("effect",49);
+aWE("eith",64,43);
+aWE("element",13,14,15,16,0,17,1,18,19,20,2,4,21,22,7,25,26,8,9,27,28,29,30,11,12,56,57,33,32,59,60,36,61,63,37,34,64,66,39,40,67,41,68,43,44,45,46,47,70,48,49,51,52,73,54);
+aWE("els",6,8,61,64);
+aWE("empty",61);
+aWE("enabl",68);
+aWE("encapsulat",24);
+aWE("encounter",64);
+aWE("end",13,19,8,60,37,68,43,48);
+aWE("enough",43);
+aWE("ent",25,27,28,31,50);
+aWE("entiti",14,15);
+aWE("entity",14,0,10,68);
+aWE("equal",19,33,64,68,43,45);
+aWE("equidistant",19);
+aWE("equilateral",20);
 aWE("eras",0);
-aWE("etc",15,2,25,48);
-aWE("even",22,32);
-aWE("eventual",61);
-aWE("every",53);
-aWE("everyth",22);
-aWE("exampl",13,2,22,24,61,50);
-aWE("exce",18);
-aWE("exceed",44);
-aWE("except",42,52);
-aWE("exist",12,20,24,25,29,61,65,48);
-aWE("existenc",22);
-aWE("exponent",18);
-aWE("export",0,6,30,59,52);
-aWE("exportation",30);
+aWE("error",61);
+aWE("etc",16,2,26,49);
+aWE("even",23,33,63);
+aWE("eventual",64);
+aWE("every",54);
+aWE("everyth",23);
+aWE("ex21_lamp",69);
+aWE("examin",12);
+aWE("exampl",14,2,23,6,25,12,64,62,69,51);
+aWE("exce",19);
+aWE("exceed",45);
+aWE("except",43,53);
+aWE("exist",13,21,25,26,30,64,68,49);
+aWE("existenc",23);
+aWE("explod",61);
+aWE("exponent",19);
+aWE("export",0,6,31,60,53);
+aWE("exportation",31);
 aWE("exportm",6);
-aWE("extend",52,53);
-aWE("extreme",18);
+aWE("extend",53,54);
+aWE("external",12);
+aWE("extreme",19);
 aWE("extremiti",5);
-aWE("extrud",10,11,60,64);
-aWE("extrusion",10,11,60,66);
-aWE("extrusionalongpathobject",60,66);
-aWE("extrusionsweepobject",60);
-aWE("f",18,7);
-aWE("fac",12,13,14,0,16,18,2,3,21,22,6,23,24,7,9,54,56,32,59,60,36,61,63,65,42,66,51,68,53);
-aWE("face_1",60);
-aWE("face_2",60);
-aWE("face1",7,60,66);
-aWE("facelist",63);
-aWE("facesrotat",60);
-aWE("facessmooth",60);
-aWE("facestritoquad",60);
-aWE("facex11",6,7);
-aWE("facex21",6,7);
-aWE("facey111",6,7);
-aWE("facey121",6,7);
-aWE("facez11",6,7);
-aWE("facez12",6,7);
-aWE("factor",18,25);
-aWE("factoryserv",6,7,56,60,63,68);
-aWE("fail",60);
-aWE("far",42);
-aWE("fashion",11);
-aWE("fast",44);
-aWE("featur",24);
-aWE("field",16,1,20,24,26,27,39,65,42,44,48,49);
-aWE("fifth",42);
-aWE("fil",30,61,65);
-aWE("fill",63,39,42);
-aWE("filt",20,24,25,65,48);
-aWE("filter",24,65);
-aWE("fin",18);
-aWE("find",30,61,42);
-aWE("findcoincidentnod",66);
-aWE("findorloadcomponent",6,7,56,60,63,68);
-aWE("finenes",18);
-aWE("first",1,18,22,56,60,36,61,42);
-aWE("fit",52);
-aWE("fiv",60);
-aWE("fix",13,6,7,44,66);
-aWE("flag",61);
-aWE("fold",22,23);
-aWE("follow",12,13,14,16,1,2,20,22,23,24,25,26,27,28,29,10,11,34,61,38,39,64,40,42,44,45,47,48,49,50,51);
-aWE("font",52);
-aWE("form",1,26,29,61,42);
-aWE("format",0,30,59,52);
-aWE("formula",18,19,2);
-aWE("four",13,19,53);
-aWE("fourth",60);
-aWE("fram",52);
-aWE("fre",13,15,54,55,59,63,42,44,66);
-aWE("function",13);
-aWE("functionaliti",52);
-aWE("functionality",22,30,58,34,42,52);
-aWE("futur",18);
-aWE("g",23);
-aWE("gaus",52);
-aWE("generat",12,13,15,18,22,59,36,61);
-aWE("generation",10,61,64);
-aWE("geom",13,7,59,60);
-aWE("geometric",13,15,7);
-aWE("geometrical",12,13,14,18,22,23,24,32,59,33,61,37,40,44,45,47,51);
-aWE("geometry",23,24,56,60,44);
-aWE("geompy",6,7,56,60,63,66,68);
-aWE("get",0,5,22,7,11,61,51);
-aWE("getalgorithm",60);
-aWE("getborder",63);
-aWE("getelementsid",56,63);
-aWE("geterrorcod",60);
-aWE("getid",6);
-aWE("getlistofid",56);
-aWE("getmaxelementarea",6,7);
-aWE("getmaxelementvolum",6,7);
-aWE("getmesh",60,66);
-aWE("getmesheditor",60,63,66);
-aWE("getnam",6,7);
-aWE("getnumberofsegment",6,7);
-aWE("getpattern",60);
-aWE("gg",7);
-aWE("giv",65,51);
-aWE("given",18,32,42);
-aWE("global",52);
-aWE("go",60);
-aWE("good",44);
-aWE("got",61);
-aWE("graduat",52);
+aWE("extrud",11,12,61,67);
+aWE("extrusion",11,12,61,70);
+aWE("extrusionalongpath",61);
+aWE("extrusionalongpathobject",70);
+aWE("extrusionsweepobject",61);
+aWE("exy",8);
+aWE("f",19,8);
+aWE("f1",61);
+aWE("f2",61);
+aWE("f3",61);
+aWE("f4",61);
+aWE("f5",61);
+aWE("fac",13,14,15,0,17,19,2,3,22,23,6,24,25,8,10,12,55,57,33,60,61,63,37,64,66,68,43,69,70,52,72,54);
+aWE("face_1",61);
+aWE("face_2",61);
+aWE("face1",8,70);
+aWE("face2",70);
+aWE("facelist",66);
+aWE("faceslist1",70);
+aWE("faceslist2",70);
+aWE("facesrotat",61);
+aWE("factor",19,26);
+aWE("factoryserv",62);
+aWE("fail",61);
+aWE("far",43);
+aWE("fashion",12);
+aWE("fast",45);
+aWE("featur",25);
+aWE("ff",61);
+aWE("ff_1",61);
+aWE("ff_2",61);
+aWE("ff_3",61);
+aWE("ff_4",61);
+aWE("ff_5",61);
+aWE("ff_6",61);
+aWE("ff_7",61);
+aWE("field",17,1,21,25,27,28,40,68,43,45,49,50);
+aWE("fifth",43);
+aWE("fil",6,31,64,68);
+aWE("fill",66,40,43);
+aWE("filt",21,25,26,68,49);
+aWE("filter",25,68);
+aWE("fin",19,63);
+aWE("find",31,64,43);
+aWE("findcoincidentnod",70);
+aWE("findorloadcomponent",62);
+aWE("finenes",19,63);
+aWE("first",1,19,23,6,12,57,61,37,64,43);
+aWE("firstnodeid1",70);
+aWE("firstnodeid2",70);
+aWE("firstnodeidonfreebord",70);
+aWE("firstnodeidonsid",70);
+aWE("fit",53);
+aWE("fiv",61);
+aWE("fix",14,6,8,45);
+aWE("flag",64);
+aWE("fold",23,24);
+aWE("follow",13,14,15,17,1,2,21,23,24,7,25,26,27,28,29,30,11,12,35,61,64,39,40,67,41,43,45,46,48,49,50,51,52);
+aWE("font",53);
+aWE("form",1,27,30,64,43);
+aWE("format",0,31,60,53);
+aWE("formula",19,20,2);
+aWE("four",14,20,54);
+aWE("fourth",61);
+aWE("fram",53);
+aWE("fre",14,16,55,56,60,66,43,45,70);
+aWE("function",14,62);
+aWE("functionaliti",53);
+aWE("functionality",23,7,31,59,35,43,53);
+aWE("fus",69);
+aWE("futur",19);
+aWE("g",24);
+aWE("gaus",53);
+aWE("gen",61,66);
+aWE("generat",13,14,16,19,23,60,37,64);
+aWE("generation",6,11,64,67,69);
+aWE("geom",14,60);
+aWE("geometric",14,16,8);
+aWE("geometrical",13,14,15,19,23,24,25,33,60,34,64,38,41,45,46,48,52);
+aWE("geometry",24,7,25,57,61,69,45);
+aWE("geompy",6,8,57,61,66,69,70,72);
+aWE("get",0,5,23,8,12,57,64,52);
+aWE("getborder",66);
+aWE("getedgenearpoint",6,8);
+aWE("getelementsid",57,66);
+aWE("geterrorcod",61);
+aWE("getlistofid",57);
+aWE("getmesh",6,61,66,70,72);
+aWE("getmesheditor",61,66,70);
+aWE("getnam",62);
+aWE("getpattern",61);
+aWE("ghs3d",62);
+aWE("giv",68,52);
+aWE("given",19,33,61,43);
+aWE("global",8,53);
+aWE("glu",66);
+aWE("good",6,45);
+aWE("got",64);
+aWE("graduat",53);
 aWE("graphical",0);
-aWE("great",18,52);
-aWE("greatest",19,2);
-aWE("green",24);
-aWE("group",20,21,24,25,8,29,11,56,34,59,60,63,65,44,47,48,50,51);
-aWE("group1",50);
-aWE("group12",50);
-aWE("group12a",50);
-aWE("group12b",50);
-aWE("group2",50);
-aWE("grouprotat",60);
-aWE("groupsmooth",60);
-aWE("groupsofnod",66);
-aWE("grouptritoquad",60);
-aWE("h",53);
-aWE("half",19,53);
+aWE("great",19,53);
+aWE("greatest",20,2);
+aWE("green",25,12);
+aWE("group",21,22,25,26,9,30,12,57,35,60,61,66,68,69,45,48,49,51,52);
+aWE("group_nam",69);
+aWE("group1",51);
+aWE("group12",51);
+aWE("group12a",51);
+aWE("group12b",51);
+aWE("group2",51);
+aWE("grouprotat",61);
+aWE("groupsmooth",61);
+aWE("groupsofnod",70);
+aWE("grouptri",61);
+aWE("growth",63);
+aWE("h",54);
+aWE("half",20,54);
 aWE("halv",5);
-aWE("hav",19,32,36,61);
-aWE("hedron",60);
-aWE("height",53);
-aWE("helical",11);
-aWE("help",15);
-aWE("henc",61);
-aWE("her",61);
-aWE("hexa",6,7);
-aWE("hexa_3d",7);
-aWE("hexa3d",7);
-aWE("hexagon",11);
-aWE("hexahedral",14,6,7);
-aWE("hexahedralization",22);
-aWE("hexahedrical",6,7);
-aWE("hexahedron",13,14,16,2,7,60,33,68);
-aWE("hh",60);
-aWE("hid",0,52);
-aWE("high",13);
-aWE("highlight",3,4,20,24,25,54,55,48);
-aWE("hmax",19);
-aWE("hol",55);
-aWE("hold",61);
-aWE("how",11,37);
-aWE("hyp",23);
-aWE("hyp1",6,63,68);
-aWE("hyp2",6,63,68);
-aWE("hyp3",6,68);
-aWE("hyp4",6,68);
-aWE("hyparea",6,7);
-aWE("hypnbseg",6,7,56);
-aWE("hypothes",12,0,18,22,23,7,56,32,59,36,37);
-aWE("hypothesi",12,18,22,6,7,56,32,33,36,37,66,68);
-aWE("hypvolum",6,7);
-aWE("i",19,22,25,56,60,61,63,42,48);
-aWE("icon",29,38,41);
-aWE("id",0,18,20,24,25,26,27,28,10,11,64,42,44,48,49);
-aWE("id_arc",7);
-aWE("id_circl",60,66);
-aWE("id_fac",7);
-aWE("id_face1",7,60,66);
-aWE("idbox",6,7,56,63,68);
-aWE("idcomp",66);
-aWE("idea",11);
-aWE("idedg",6,68);
-aWE("idfac",56);
-aWE("idtoobject",6,63,66,68);
-aWE("if",13,16,5,22,6,23,7,10,11,56,32,60,36,61,37,38,64,65,42,44,48,52);
-aWE("ii",60);
-aWE("imag",0,11,52);
-aWE("imp",13);
-aWE("import",6,7,56,30,59,60,63,66,68);
-aWE("importation",30);
-aWE("importcomponentgui",6,7,63);
-aWE("includ",13,51);
-aWE("increas",6,7,66);
-aWE("index",24,61);
-aWE("indic",61);
-aWE("indicat",53);
-aWE("info",0,51,68);
-aWE("information",13,0,29,51,68);
-aWE("init",6,7,63);
-aWE("init_geom",60);
-aWE("initial",11,65,45,50);
-aWE("initializ",6,7,56);
-aWE("input",1,18);
-aWE("inscrib",19);
-aWE("insert",65,42);
-aWE("instead",36,61);
-aWE("intact",8);
-aWE("integ",24);
-aWE("intend",42);
-aWE("interest",13);
-aWE("intermediat",42);
-aWE("internal",61);
-aWE("intersect",61,50);
-aWE("intersectgroup",56);
-aWE("intersection",56,61,50);
-aWE("introduc",12,24,36);
-aWE("introduction",59);
-aWE("invers",13,26,60);
-aWE("inversediag",60);
-aWE("inversion",26,60);
-aWE("invisibl",67);
-aWE("isdon",60);
-aWE("iso",61);
-aWE("isolin",61);
-aWE("isometric",52);
-aWE("isplanarfac",7,60,66);
-aWE("item",16,1,20,21,25,26,27,29,10,11,30,34,61,39,64,40,42,44,45,47,48,49,50);
-aWE("iteration",11,44);
-aWE("iterativ",44);
-aWE("join",43);
-aWE("jpeg",0,52);
-aWE("jpg",0,52);
-aWE("just",1,61,38);
-aWE("k",18,19);
-aWE("keep",11,44,45);
-aWE("key",61);
-aWE("keyboard",25);
-aWE("know",61);
-aWE("ko",60);
-aWE("l",53);
-aWE("label",52);
-aWE("laplacian",44);
-aWE("last",1,18,36,42);
-aWE("lastnodeid",60);
-aWE("lay",10,61,64);
-aWE("lcc",6,7,56,60,63,68);
-aWE("learn",51);
-aWE("least",61,44);
-aWE("leav",22,8);
-aWE("left",0,11,61,52);
-aWE("legth",63);
-aWE("len",56,63);
-aWE("length",12,15,18,19,6,7,57,32,31,59,63,42,66,52,53);
-aWE("lengthfromedg",7,60,66);
-aWE("les",65,42,44);
-aWE("let",11);
-aWE("level",12,16);
-aWE("libnetgenengin",7);
-aWE("library",24,65);
-aWE("libstdmeshersengin",6,7,56,60,63,68);
-aWE("lik",16,2,28,42);
-aWE("limit",61,42,44);
-aWE("lin",13,1,18,10,36,61,64,43);
-aWE("link",42);
-aWE("list",0,16,20,24,25,8,11,65,48);
-aWE("lk",18);
-aWE("ll",52);
-aWE("load",61,65);
-aWE("loadfromfac",60);
-aWE("local",6,23,7,59,36,66);
-aWE("locallength",7);
-aWE("locat",61,42);
-aWE("location",18,27,30,44);
-aWE("lock",25,44,52);
-aWE("longest",19);
-aWE("look",28,61,65);
-aWE("low",13,18);
-aWE("ly",61);
-aWE("main",20,25,8,11,36,61,65,48,50);
-aWE("makearc",7,60,66);
-aWE("makebox",6,7,56,63,66,68);
-aWE("makeboxdxdydz",60);
-aWE("makecirclethreepnt",60,66);
-aWE("makecompound",6,7,63,66);
-aWE("makecylinderrh",7,60);
-aWE("makeedg",6,7);
-aWE("makefac",7,60,66);
-aWE("makehexa",6,7);
-aWE("makemesh",60);
-aWE("makepolygon",60);
-aWE("makequad",6,7);
-aWE("makesketch",7);
-aWE("makevector",7,60,66);
-aWE("makevertex",6,7,60,66);
-aWE("makewir",7,60,66);
-aWE("manag",12,16);
-aWE("manual",24,61);
-aWE("map",32,60,61);
-aWE("mark",52);
-aWE("mas",11);
-aWE("math",60,66);
-aWE("max",12,7,32,59,33,44);
-aWE("max_element_area",60);
-aWE("maxelementarea",6,7,60,63,68);
-aWE("maxelementarea_500",6);
-aWE("maxelementarea_800",7);
-aWE("maxelementvolum",6,7);
-aWE("maxelementvolume_500",6);
-aWE("maxelementvolume_900",7);
-aWE("maximum",18,7,32,33,43,44,51);
-aWE("mean",13);
-aWE("meaningful",13);
-aWE("measur",53);
-aWE("meet",25,48);
-aWE("mefisto_2d",6,7,63,68);
-aWE("mefisto2d",6,7);
-aWE("menu",16,1,18,20,5,21,22,23,24,25,8,26,27,28,29,10,11,30,34,36,61,38,39,64,40,41,65,42,44,45,47,48,49,50,51);
-aWE("merg",58,34,42,66);
-aWE("mergeequalelement",66);
-aWE("mergenod",66);
-aWE("mesh",12,13,14,15,0,16,1,17,18,19,2,3,4,20,5,21,22,6,23,24,25,7,8,26,27,28,29,10,11,54,55,56,30,32,31,58,34,59,35,60,33,36,61,62,63,37,38,39,64,40,41,65,42,43,44,45,46,66,47,48,49,50,51,68,69,52,53);
-aWE("mesh_1",22,60);
-aWE("mesh_2",60);
-aWE("mesh_borders_at_multi",63);
-aWE("mesh_freebord",63);
-aWE("meshbox",6,7);
-aWE("mesheditor",60);
+aWE("hasangl",61);
+aWE("hasrefpoint",61);
+aWE("hav",20,33,37,64);
+aWE("hedron",61);
+aWE("height",69,54);
+aWE("helical",12);
+aWE("help",16);
+aWE("henc",64);
+aWE("her",64);
+aWE("hexa",8);
+aWE("hexahedral",15,6,8);
+aWE("hexahedralization",23);
+aWE("hexahedrical",8);
+aWE("hexahedron",14,15,17,2,8,61,34,72);
+aWE("hh",61);
+aWE("hid",0,53);
+aWE("high",14);
+aWE("highlight",3,4,21,25,26,55,56,49);
+aWE("hmax",20);
+aWE("hol",56,61);
+aWE("hold",64);
+aWE("homogeneou",63);
+aWE("how",15,12,63,38);
+aWE("hyp",24);
+aWE("hyp1",6);
+aWE("hyp1d",61);
+aWE("hyp2",6);
+aWE("hyp3",6);
+aWE("hyp4",6);
+aWE("hypothes",13,0,19,23,6,24,8,33,60,61,63,37,38);
+aWE("hypothesi",13,19,23,6,8,33,61,37,34,38,69);
+aWE("i",15,20,23,26,12,57,61,63,64,66,43,49);
+aWE("icon",30,39,42);
+aWE("id",0,19,21,25,26,27,28,29,11,12,57,61,67,43,45,49,50);
+aWE("id_circl",70);
+aWE("id_fac",8);
+aWE("id_face1",70);
+aWE("idbox",6,66);
+aWE("idea",12);
+aWE("idl",6,57,61,66,70);
+aWE("idsofelement",61);
+aWE("idsoffixednod",61);
+aWE("idsofside1element",70);
+aWE("idsofside2element",70);
+aWE("if",14,17,5,23,6,24,7,8,11,12,57,33,61,63,37,64,66,38,39,67,68,43,45,49,53);
+aWE("ii",61);
+aWE("imag",0,12,53);
+aWE("imp",14);
+aWE("import",6,8,57,31,60,61,66,69,70,72);
+aWE("importation",31);
+aWE("importcomponentgui",61);
+aWE("includ",14,52);
+aWE("increas",6,8);
+aWE("index",25,64);
+aWE("indic",64);
+aWE("indicat",54);
+aWE("info",0,52,72);
+aWE("information",14,0,6,7,30,52,72);
+aWE("init",61);
+aWE("initial",12,61,68,46,51);
+aWE("input",1,19);
+aWE("inscrib",20);
+aWE("insert",68,43);
+aWE("instead",6,37,64);
+aWE("int",62);
+aWE("intact",9);
+aWE("integ",25);
+aWE("intend",43);
+aWE("interest",14);
+aWE("interfac",6,57,61,66,69,70);
+aWE("intermediat",43);
+aWE("internal",64);
+aWE("intersect",64,51);
+aWE("intersectgroup",57);
+aWE("intersection",57,64,51);
+aWE("introduc",13,25,37);
+aWE("introduction",60,69);
+aWE("invers",14,27,61);
+aWE("inversediag",61);
+aWE("inversion",27,61);
+aWE("invisibl",71);
+aWE("is3d",8);
+aWE("isdon",61);
+aWE("iso",64);
+aWE("isolin",64);
+aWE("isometric",53);
+aWE("isplanarfac",8,70);
+aWE("item",17,1,21,22,7,26,27,28,30,11,12,31,35,64,40,67,41,43,45,46,48,49,50,51);
+aWE("iteration",12,45);
+aWE("iterativ",45);
+aWE("iv",61);
+aWE("j",15,57,66);
+aWE("join",44);
+aWE("jpeg",0,53);
+aWE("jpg",0,53);
+aWE("just",1,64,39);
+aWE("k",15,19,20);
+aWE("keep",12,45,46);
+aWE("key",64);
+aWE("keyboard",26);
+aWE("know",64);
+aWE("ko",61);
+aWE("l",54);
+aWE("label",53);
+aWE("laplacian",45);
+aWE("last",1,19,12,37,43);
+aWE("lastnodeid1",70);
+aWE("lastnodeid2",70);
+aWE("lastnodeidonfreebord",70);
+aWE("lastnodeidonsid",70);
+aWE("lay",11,64,67);
+aWE("lcc",62);
+aWE("learn",52);
+aWE("least",64,45);
+aWE("leav",23,9);
+aWE("left",0,12,64,53);
+aWE("len",57,61,66);
+aWE("length",13,16,19,20,6,8,58,33,32,60,66,43,53,54);
+aWE("length_margin",66);
+aWE("lengthfromedg",8,69,70);
+aWE("les",68,43,45);
+aWE("level",13,17,63);
+aWE("library",25,68);
+aWE("libstdmeshersengin",61);
+aWE("lik",17,2,29,43);
+aWE("limit",64,43,45);
+aWE("lin",14,1,19,11,37,64,67,44);
+aWE("linear",12,63);
+aWE("link",43);
+aWE("list",0,17,21,25,26,9,12,68,49);
+aWE("lk",19);
+aWE("ll",53);
+aWE("load",64,68);
+aWE("loadfromfac",61);
+aWE("local",6,24,8,60,37);
+aWE("locallength",8,69);
+aWE("locat",64,43);
+aWE("location",19,28,31,45);
+aWE("lock",26,45,53);
+aWE("longest",20);
+aWE("look",29,12,64,68);
+aWE("low",14,19,63);
+aWE("ly",64);
+aWE("main",21,26,9,12,37,64,68,49,51);
+aWE("makearc",8,70);
+aWE("makebezi",61);
+aWE("makebox",6,57,66,69,70,72);
+aWE("makeboxdxdydz",6,8,61);
+aWE("makecirclethreepnt",61,70);
+aWE("makecompound",66,70);
+aWE("makecon",69);
+aWE("makecylind",69);
+aWE("makecylinderrh",8);
+aWE("makeedg",8,61);
+aWE("makefac",8,70);
+aWE("makefus",69);
+aWE("makegluefac",66);
+aWE("makemesh",61);
+aWE("makepolygon",61);
+aWE("makepolylin",61);
+aWE("makequadmesh2",61);
+aWE("makeshell",66);
+aWE("makesketch",8);
+aWE("maketranslation",66);
+aWE("makevector",8,70);
+aWE("makevectordxdydz",69);
+aWE("makevertex",6,8,61,69,70);
+aWE("makewir",8,70);
+aWE("manag",13,17);
+aWE("manual",25,63,64);
+aWE("map",15,33,61,64);
+aWE("mark",53);
+aWE("mas",12);
+aWE("math",61,70);
+aWE("max",13,8,33,60,63,34,45);
+aWE("maxaspectratio",61);
+aWE("maxelementarea",6,8,61,66,72);
+aWE("maxelementvolum",6,8,69,72);
+aWE("maximum",19,8,33,63,34,44,45,52);
+aWE("maxnbofiteration",61);
+aWE("mean",14,63);
+aWE("meaningful",14);
+aWE("measur",54);
+aWE("medium",7);
+aWE("meet",26,49);
+aWE("mefisto",15,8);
+aWE("menu",17,1,19,21,5,22,23,24,7,25,26,9,27,28,29,30,11,12,31,35,37,64,39,40,67,41,42,68,43,45,46,48,49,50,51,52);
+aWE("merg",59,35,43,70);
+aWE("mergeequalelement",70);
+aWE("mergenod",70);
+aWE("mesh",13,14,15,16,0,17,1,18,19,20,2,3,4,21,5,22,23,6,24,7,25,26,8,9,27,28,29,30,11,12,55,56,57,31,33,32,59,35,60,36,61,63,37,34,64,65,66,38,39,40,67,41,42,62,68,43,44,69,45,46,47,70,48,49,50,51,52,72,73,53,54);
+aWE("mesh_1",23,61);
+aWE("mesh_2",61);
+aWE("mesh_borders_at_multi",66);
+aWE("mesh_free_border",66);
+aWE("mesh_length_1d",66);
+aWE("mesh_length_2d",66);
+aWE("mesh_nam",61);
+aWE("mesh1d",61);
+aWE("mesh1d_tool",61);
+aWE("meshbox",6,72);
+aWE("mesheditor",61);
 aWE("meshm",6);
-aWE("method",60,44);
-aWE("middl",1,36);
-aWE("minimum",15,18,25,59,35,63,42,48);
-aWE("mirror",66);
-aWE("mirrorobject",66);
-aWE("mod",0,18,62);
-aWE("model",13,59);
-aWE("modification",13,16,1,20,25,26,27,29,10,11,34,59,61,38,39,64,40,42,44,45,47,48,49);
-aWE("modify",20,25,29,60,48);
-aWE("modul",13,14,1,18,24,59,60,41,52);
-aWE("mous",0,24,52);
-aWE("mov",27,60);
-aWE("movenod",60);
-aWE("multi",15,3,4,59,63);
-aWE("multiconnection",63);
-aWE("must",22,11,61,65,42);
-aWE("myelemid",63);
-aWE("mypnt1",63);
-aWE("mypnt2",63);
-aWE("mystudy",6,60,63,68);
-aWE("mystudyid",6,7,63);
-aWE("n",61,42);
-aWE("nam",22,6,23,24,29,56,30,65,50,68,52);
-aWE("nb",56,63);
-aWE("nb_segments_1",60);
-aWE("nb_vert",60);
-aWE("nbedg",66,68);
-aWE("nbfac",68);
-aWE("nbhexa",68);
-aWE("nbnod",60,66,68);
-aWE("nbpolygon",68);
-aWE("nbpolyhedron",68);
-aWE("nbprism",68);
-aWE("nbpyramid",68);
-aWE("nbquadrangl",66,68);
-aWE("nbtetra",68);
-aWE("nbtriangl",66,68);
-aWE("nbvolum",66,68);
-aWE("ne",22);
-aWE("necessary",16);
-aWE("negativ",18);
-aWE("neighbor",26,49);
-aWE("netgen",14);
-aWE("netgen_3d",7);
-aWE("netgen3d",7);
-aWE("netgenplugin",7);
-aWE("new",0,5,22,23,24,27,61,37,65,50);
-aWE("next",18,61);
-aWE("nod",13,0,16,1,17,18,19,20,21,24,27,28,10,32,34,59,60,61,62,63,38,39,64,65,42,43,44,46,66,51,68,53);
-aWE("nodal",61,44);
-aWE("node_id",60);
-aWE("node_start_id",60);
-aWE("non",22);
-aWE("normal",45,53);
-aWE("normalisation",19);
-aWE("not",16,19,22,24,8);
-aWE("noth",24);
-aWE("notic",13);
-aWE("now",5,22,11,60);
-aWE("numb",12,13,1,18,6,24,7,10,32,59,61,64,42,44,66,51,68,52);
-aWE("number",0,1,28);
-aWE("numberofsegment",6,7,56,60,63,66,68);
-aWE("numberofsegments_10",6);
-aWE("numberofsegments_7",7);
-aWE("numeric",25);
-aWE("numerical",12);
-aWE("obey",42);
-aWE("object",12,14,0,16,1,18,5,21,22,23,24,25,7,8,29,30,32,60,33,61,62,37,38,39,40,47,48,51,69,52);
-aWE("objecttoid",6,7,63);
-aWE("objet",24);
-aWE("obliqu",11);
-aWE("obtain",16);
-aWE("offset",52);
-aWE("ok",16,1,20,5,25,8,26,27,29,10,11,30,60,38,39,64,42,44,48,49,50);
-aWE("on",13,1,18,22,23,25,8,26,10,54,55,58,36,61,63,37,38,64,65,42,44,45,47,48,50,68);
-aWE("onc",48);
-aWE("onto",36,61);
-aWE("oo",19);
-aWE("opaqu",67);
-aWE("operat",12);
-aWE("operation",14,16,17,18,19,2,3,4,20,23,24,25,8,26,27,29,10,11,54,55,30,57,32,31,58,34,59,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,69,53);
-aWE("opposit",12,5,6,25,7,32,36,42,43,66);
-aWE("option",13,0,18,45,47);
-aWE("optional",22,11);
-aWE("ord",13,20,61);
-aWE("ordinary",1,36);
-aWE("orientat",52);
-aWE("orientation",20,5,25,60,48);
-aWE("origin",53);
-aWE("other",48);
-aWE("otherwis",22,32);
-aWE("our",22);
-aWE("out",52);
-aWE("outlin",55);
-aWE("outsid",61);
-aWE("own",13);
-aWE("pag",24,29);
-aWE("pair",18);
-aWE("pan",52);
-aWE("paramet",13,18,2,65,42);
-aWE("parameter",12,0,5,11,40,42,52);
-aWE("parametric",13,61);
-aWE("parent",23);
-aWE("part",42,44,52);
-aWE("particular",60);
-aWE("particularity",13);
-aWE("pas",60);
-aWE("path",11,60,65,66);
-aWE("pattern",60,61);
-aWE("pattern_nam",61);
+aWE("method",57,61,66,45,70);
+aWE("middl",1,12,37);
+aWE("min_angl",66);
+aWE("minimum",16,19,26,60,36,63,66,43,49);
+aWE("mirror",70);
+aWE("mirrorobject",70);
+aWE("mod",0,19,65);
+aWE("model",14,60);
+aWE("modification",14,17,1,21,7,26,27,28,30,11,12,35,60,64,39,40,67,41,43,45,46,48,49,50);
+aWE("modify",21,26,30,61,49);
+aWE("modul",14,15,1,19,6,25,60,61,42,69,53);
+aWE("moment",57,61,66,70);
+aWE("mous",0,25,53);
+aWE("mov",28,61);
+aWE("movenod",61);
+aWE("much",63);
+aWE("multi",16,3,4,60,66);
+aWE("multiconnection",66);
+aWE("must",23,12,64,68,43);
+aWE("myelemid",66);
+aWE("mypnt1",66);
+aWE("mypnt2",66);
+aWE("mystudyid",61);
+aWE("n",64,43);
+aWE("n1",61);
+aWE("n10",61);
+aWE("n11",61);
+aWE("n12",61);
+aWE("n2",61);
+aWE("n23_param",8);
+aWE("n3",61);
+aWE("n4",61);
+aWE("n5",61);
+aWE("n6",61);
+aWE("n7",61);
+aWE("n8",61);
+aWE("n9",61);
+aWE("na",61);
+aWE("nam",23,6,24,25,30,57,31,61,63,62,68,69,51,53);
+aWE("nb",57,61,63,66);
+aWE("nb_conn",66);
+aWE("nb_segments_3",61);
+aWE("nb_segments_7",61);
+aWE("nb_segments_8",61);
+aWE("nb_vert",61);
+aWE("nbedg",6,70,72);
+aWE("nbfac",6,72);
+aWE("nbhexa",72);
+aWE("nbnod",6,70,72);
+aWE("nbpolygon",72);
+aWE("nbpolyhedron",72);
+aWE("nbprism",72);
+aWE("nbpyramid",72);
+aWE("nbquadrangl",70,72);
+aWE("nbtetra",72);
+aWE("nbtriangl",70,72);
+aWE("nbvolum",6,70,72);
+aWE("nc",61);
+aWE("nd",61);
+aWE("ndiagonal",61);
+aWE("ne",23);
+aWE("necessary",17);
+aWE("negativ",19);
+aWE("neighbor",27,50);
+aWE("netgen",15,6,8,63,62,69,72);
+aWE("netgen_2d3d",8);
+aWE("new",0,5,23,24,25,28,61,64,38,68,51);
+aWE("new_id",61);
+aWE("next",19,57,61,64,66,70);
+aWE("nid",61);
+aWE("nid1",61);
+aWE("nid2",61);
+aWE("nid3",61);
+aWE("nid4",61);
+aWE("no_nam",62);
+aWE("nod",14,0,17,1,18,19,20,21,22,6,7,25,28,29,11,12,33,35,60,61,63,64,65,66,39,40,67,68,43,44,45,47,70,52,72,54);
+aWE("nodal",64,45);
+aWE("node_id",61);
+aWE("nodeid1ofside1tomerg",70);
+aWE("nodeid1ofside2tomerg",70);
+aWE("nodeid2ofside1tomerg",70);
+aWE("nodeid2ofside2tomerg",70);
+aWE("nodestart",61);
+aWE("non",23);
+aWE("nonam",62);
+aWE("normal",46,54);
+aWE("normalisation",20);
+aWE("not",17,20,23,25,9,12);
+aWE("noth",25);
+aWE("notic",14);
+aWE("now",5,23);
+aWE("nsmooth",61);
+aWE("numb",13,14,1,19,6,25,8,11,33,60,63,64,67,43,45,70,52,72,53);
+aWE("number",0,1,29,12);
+aWE("numberofsegment",6,8,57,61,66,70,72);
+aWE("numeric",26);
+aWE("numerical",13);
+aWE("nunit",61);
+aWE("obey",43);
+aWE("obj",62);
+aWE("object",13,15,0,17,1,19,5,22,23,24,7,25,26,9,30,31,33,61,63,34,64,65,38,39,40,41,48,49,52,73,53);
+aWE("objecttoid",61);
+aWE("objet",25);
+aWE("obtain",17,66);
+aWE("offset",53);
+aWE("ok",17,1,21,5,7,26,9,27,28,30,11,12,31,61,39,40,67,43,45,49,50,51);
+aWE("old",57,61,66,70);
+aWE("on",14,1,19,23,6,24,26,8,9,27,11,12,55,56,59,61,37,64,66,38,39,67,68,43,45,46,48,49,51);
+aWE("onc",49);
+aWE("onto",37,64);
+aWE("oo",20);
+aWE("opaqu",71);
+aWE("open",66);
+aWE("operat",13);
+aWE("operation",15,17,18,19,20,2,3,4,21,24,25,26,9,27,28,30,11,12,55,56,31,58,33,32,59,35,60,36,37,34,64,38,39,40,67,41,43,44,45,46,47,48,49,50,51,73,54);
+aWE("opposit",13,5,6,26,8,33,37,43,44);
+aWE("optimiz",63);
+aWE("option",14,0,19,46,48);
+aWE("optional",23,12);
+aWE("ord",14,21,63,64);
+aWE("ordinary",1,37);
+aWE("orientat",53);
+aWE("orientation",21,5,26,61,49);
+aWE("origin",54);
+aWE("other",49);
+aWE("otherwis",23,33);
+aWE("our",23);
+aWE("out",53);
+aWE("outlin",56);
+aWE("outsid",64);
+aWE("own",14);
+aWE("p5",6,8);
+aWE("packag",6,57,61,66,62,69,70);
+aWE("pag",15,25,30);
+aWE("pair",19);
+aWE("pan",53);
+aWE("paramet",14,19,2,68,43);
+aWE("parameter",13,0,5,8,12,63,41,43,53);
+aWE("parametric",14,64);
+aWE("parent",24);
+aWE("part",61,43,45,53);
+aWE("particularity",14);
+aWE("pas",6,57,61,66);
+aWE("path",12,61,68,70);
+aWE("pathmesh",61);
+aWE("pathshap",61);
+aWE("pattern",61,64);
+aWE("pattern_nam",64);
+aWE("pentagonal",61);
 aWE("pentahedron",2);
-aWE("perform",59,39,42,45,50);
-aWE("perimet",19);
-aWE("pi",60,66);
-aWE("pictur",3,24,11,54,55,58);
-aWE("plac",42,52);
-aWE("plan",5,63,45,53);
-aWE("planar",53);
-aWE("platform",24,41);
-aWE("pleas",8);
-aWE("plot",18);
-aWE("plu",10,64);
-aWE("png",0,52);
-aWE("point",13,1,18,7,11,60,36,61,64,40,42,45,66,47,52,53);
-aWE("point111",6,7);
-aWE("point112",6,7);
-aWE("point121",6,7);
-aWE("point122",6,7);
-aWE("point211",6,7);
-aWE("point212",6,7);
-aWE("point221",6,7);
-aWE("point222",6,7);
-aWE("pointstruct",60,66);
-aWE("polygon",16,60,68);
-aWE("polygonal",60);
-aWE("polyhedral",16,60);
-aWE("polyhedron",16,60,68);
-aWE("pop",8,28);
-aWE("position",13,61,52);
-aWE("posses",36);
-aWE("possibility",65);
-aWE("possibl",12,2,24,61);
-aWE("post",52);
-aWE("powerful",65);
-aWE("precision",16);
-aWE("preferenc",12,32,59,62);
-aWE("prefix",65);
-aWE("preproces",24);
-aWE("pres",16,1,11,38,52);
-aWE("present",13,0,50);
-aWE("presentation",15,0,52);
-aWE("preserv",61);
-aWE("preset",12);
-aWE("preview",16,5,25,61,65);
-aWE("previou",18,48);
-aWE("previous",23,24,59,61);
-aWE("principl",11);
-aWE("print",6,7,56,60,63,66,68);
-aWE("prism",68);
-aWE("pro",52);
-aWE("problem",6,7,56);
-aWE("proce",22,8);
-aWE("procedur",44);
-aWE("proceed",37);
-aWE("proces",44);
-aWE("produc",13,10,64,44);
-aWE("product",53);
-aWE("program",22);
-aWE("progression",18);
-aWE("project",61);
-aWE("projection",61,53);
-aWE("prompt",18);
-aWE("propagat",6,7,36,66);
-aWE("propagation",12,6,7,36,66,68);
-aWE("properti",52);
-aWE("provid",0,16,25);
-aWE("pseudo",26);
-aWE("pul",44);
-aWE("px",7,60,66);
-aWE("px1",60,66);
-aWE("py",7,60,66);
-aWE("py1",60,66);
-aWE("pyramid",68);
-aWE("pyramidal",14);
-aWE("python",51);
-aWE("pz",7,60,66);
-aWE("pz1",60,66);
+aWE("per",63);
+aWE("perform",60,61,40,43,46,51);
+aWE("perimet",20);
+aWE("pi",61,70);
+aWE("pictur",3,25,12,55,56,59);
+aWE("piec",69);
+aWE("plac",7,43,53);
+aWE("plan",5,66,46,54);
+aWE("planar",61,54);
+aWE("platform",25,42);
+aWE("pleas",9,12);
+aWE("plot",19);
+aWE("plu",11,67);
+aWE("png",0,53);
+aWE("point",14,1,19,12,61,37,64,67,41,43,46,70,48,53,54);
+aWE("pointstruct",61,70);
+aWE("polygon",17,61,72);
+aWE("polygonal",61);
+aWE("polyhedral",17,61);
+aWE("polyhedron",17,61,72);
+aWE("polylin",12);
+aWE("pop",9,29);
+aWE("position",14,64,53);
+aWE("posses",63,37);
+aWE("possibility",68);
+aWE("possibl",13,2,25,63,64);
+aWE("post",53);
+aWE("powerful",68);
+aWE("precision",17);
+aWE("preferenc",13,33,60,65);
+aWE("prefix",68);
+aWE("preproces",25);
+aWE("pres",17,1,12,39,53);
+aWE("present",14,0,63,51);
+aWE("presentation",16,0,53);
+aWE("preserv",64);
+aWE("preset",13);
+aWE("preview",17,5,26,64,68);
+aWE("previou",19,12,49);
+aWE("previous",24,25,60,64);
+aWE("principl",12);
+aWE("print",6,8,57,61,66,70,72);
+aWE("printmeshinfo",6);
+aWE("prism",72);
+aWE("pro",53);
+aWE("problem",6,8);
+aWE("proce",23,9);
+aWE("procedur",45);
+aWE("proceed",12,38);
+aWE("proces",45);
+aWE("produc",14,7,11,61,67,45);
+aWE("product",54);
+aWE("program",23);
+aWE("progression",19);
+aWE("project",64);
+aWE("projection",64,54);
+aWE("prompt",19);
+aWE("propagat",6,8,37);
+aWE("propagation",13,6,8,37,70);
+aWE("properti",53);
+aWE("prov",63);
+aWE("provid",0,17,26,57,61,66,69,70);
+aWE("pseudo",27);
+aWE("pt1",69);
+aWE("pt2",69);
+aWE("pul",45);
+aWE("put",8);
+aWE("px",8,70);
+aWE("px1",70);
+aWE("py",8,70);
+aWE("py1",70);
+aWE("pyramid",72);
+aWE("pyramidal",15);
+aWE("python",6,62,69,52);
+aWE("pz",8,70);
+aWE("pz1",70);
+aWE("q1",61);
 aWE("qi",2);
-aWE("qk",19,2);
-aWE("quad",60,53);
-aWE("quad2d",7,56);
-aWE("quadrangl",12,13,14,16,17,19,2,6,25,7,26,10,32,31,59,35,60,64,43,66,68);
-aWE("quadrangle_2d",7,56);
-aWE("quadrangular",14,6,7,32,36,66);
-aWE("quadratic",12,1,36);
-aWE("quadtotri",60);
-aWE("quality",15,0,17,18,19,2,3,4,25,54,55,57,31,59,35,63,43,46,48,69,53);
-aWE("quantity",12);
-aWE("r1",60);
-aWE("radio",20,24,25,40,42,45,48);
-aWE("radiu",19,60);
-aWE("rang",18,24,56,60,63);
-aWE("ratio",15,19,2,59,63,44,46,53);
-aWE("ready",22);
+aWE("qk",20,2);
+aWE("quad",54);
+aWE("quad_1",61);
+aWE("quad_2",61);
+aWE("quad_3",61);
+aWE("quad_4",61);
+aWE("quad_5",61);
+aWE("quad_6",61);
+aWE("quad_7",61);
+aWE("quadra",6,57);
+aWE("quadrangl",13,14,15,17,18,20,2,6,26,8,27,11,12,57,33,32,60,36,61,63,67,44,70,72);
+aWE("quadrangular",15,6,8,33,37);
+aWE("quadratic",13,1,7,63,37);
+aWE("quadtotri",61);
+aWE("quality",16,0,18,19,20,2,3,4,26,55,56,58,32,60,36,66,44,47,49,73,54);
+aWE("quantity",13);
+aWE("r1",61);
+aWE("radio",21,25,26,41,43,46,49);
+aWE("radiu",20,61,63);
+aWE("radius",63);
+aWE("radius_1",69);
+aWE("radius_2",69);
+aWE("rang",19,25,57,61,63,66);
+aWE("rat",63);
+aWE("ratio",16,20,2,60,66,45,47,54);
+aWE("ready",23);
 aWE("recent",0);
-aWE("red",55);
-aWE("redefin",0,52);
-aWE("reduc",44);
-aWE("reevaluat",44);
-aWE("refer",61);
-aWE("referenc",13,15,22,23);
-aWE("refin",12);
-aWE("reflect",61,43,69);
+aWE("red",56);
+aWE("redefin",0,53);
+aWE("reduc",45);
+aWE("reevaluat",45);
+aWE("refer",64);
+aWE("referenc",14,16,23,24);
+aWE("refin",13);
+aWE("reflect",64,44,73);
+aWE("refpoint",61);
 aWE("refresh",0);
-aWE("regular",19);
-aWE("regular_1d",6,7,56,63,68);
-aWE("regular1d",6,7,56);
-aWE("relat",41);
-aWE("relation",13);
-aWE("relationship",13);
-aWE("remot",52);
-aWE("remov",20,6,24,25,8,29,11,56,60,38,65,48,68);
-aWE("removal",59);
-aWE("removeelement",60,63);
-aWE("removehypothesi",6,68);
-aWE("removenod",60);
-aWE("renumb",39);
-aWE("renumber",60,39);
-aWE("renumbernod",60);
-aWE("reorient",20,60);
-aWE("replac",42);
-aWE("represent",12,13,18,2,62,46,52);
-aWE("representation",13);
-aWE("requir",26,27,49);
-aWE("reset",52);
-aWE("resiz",52);
-aWE("respect",11);
+aWE("regular",20,6,8,63,62);
+aWE("regular_1d",61);
+aWE("relat",42);
+aWE("relation",14);
+aWE("relationship",14);
+aWE("remot",53);
+aWE("remov",21,6,25,26,9,30,12,57,61,66,39,68,49);
+aWE("removal",60);
+aWE("removeelement",61,66);
+aWE("removehypothesi",6);
+aWE("removenod",61);
+aWE("renumb",61,40);
+aWE("renumber",61,40);
+aWE("renumbernod",61);
+aWE("reorient",21,61);
+aWE("replac",43);
+aWE("represent",13,14,19,2,65,47,53);
+aWE("representation",14);
+aWE("requir",27,28,63,50);
+aWE("res",61);
+aWE("reset",53);
+aWE("resiz",53);
+aWE("respect",12);
 aWE("respectiv",1);
-aWE("rest",61,42);
-aWE("restor",52);
-aWE("restrict",13);
-aWE("result",12,16,11,56,63,44,50);
-aWE("ret",6,7,56);
-aWE("retriev",13);
-aWE("return",57,60);
-aWE("reveal",19);
-aWE("revers",1,61);
-aWE("revert",20);
-aWE("revolution",10,60,64);
-aWE("revolv",64);
-aWE("right",0,21,8,27,28,11,62);
-aWE("rotat",10,11,60,64,40,66,52);
-aWE("rotateobject",66);
-aWE("rotation",5,11,64,40,66,52);
-aWE("rotationsweepobject",60);
-aWE("rough",12);
-aWE("rr",60);
-aWE("rul",18,36,42);
-aWE("run",41);
-aWE("s",11);
-aWE("salom",6,24,7,56,59,60,63,41,66,68);
-aWE("sam",13,0,18,19,2,22,23,7,11,36,37,65,42,50);
-aWE("sampl",14,16,17,18,19,2,3,4,20,22,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,69,53);
-aWE("sav",65);
-aWE("scal",18,52);
-aWE("scalar",15);
-aWE("scen",52);
-aWE("script",14,16,17,18,19,2,3,4,20,22,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,51,69,53);
-aWE("se",14,16,17,18,19,2,3,4,20,5,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,69,52,53);
-aWE("seam",61);
-aWE("search",30,65);
-aWE("second",16,60,42);
-aWE("section",0,5,22,61);
-aWE("segment",12,18,6,7,32,59,60,66);
-aWE("select",12,14,0,16,1,18,20,21,22,23,24,25,8,26,27,29,10,11,30,34,36,61,62,38,39,64,40,41,65,42,44,45,47,48,49,50,51,52);
-aWE("selectabl",58);
-aWE("selection",16,1,20,24,25,8,65,48);
-aWE("sens",13);
-aWE("separat",46);
-aWE("sequenc",42);
-aWE("set",13,14,16,18,20,5,22,24,7,27,11,32,59,60,33,61,62,65,42,44,67,48);
-aWE("setcurrentstudy",6,60,63,68);
-aWE("setdisplaymod",7);
-aWE("setlength",6,68);
-aWE("setmargin",56,63);
-aWE("setmaxelementarea",6,7,63,68);
-aWE("setmaxelementvolum",6,7);
-aWE("setmesh",63);
-aWE("setnam",6,7,63);
-aWE("setnumberofsegment",6,7,56,60,63,68);
-aWE("setnumfunctor",56,63);
-aWE("setpredicat",56,63);
-aWE("setting",22);
-aWE("settransparency",7);
-aWE("sew",63,42,66);
-aWE("sewbordertosid",66);
-aWE("sewconformfreeborder",66);
-aWE("sewfreeborder",66);
-aWE("sewsideelement",66);
-aWE("sg",6,7,56,60,63,66,68);
-aWE("shad",0,62,67);
-aWE("shall",20,26,27,34,61,64,40,45,47,48,49);
-aWE("shap",12,13,11,61,44);
-aWE("shape_mesh",60);
-aWE("shapetyp",6,7,56,60,63,66,68);
-aWE("shift",16,1,25,38,44);
-aWE("shortest",53);
-aWE("should",18,24,10,11,61,64,40,65,42,44,50);
-aWE("show",18,5,11,65,52);
-aWE("shown",15,44);
-aWE("shrink",62);
-aWE("sid",6,7,35,42,43,66);
-aWE("simp",22,36);
-aWE("simpl",13,16,61);
-aWE("simplex",19,2);
-aWE("sin",60);
-aWE("siz",0,44);
-aWE("sk",19,2);
-aWE("sketch",7);
-aWE("sketcher",7);
-aWE("sketcher1",7);
-aWE("sketcher2",7);
-aWE("skew",15,25,59,63,43,48);
-aWE("slid",67);
-aWE("small",52);
-aWE("smesh",6,7,56,60,63,42,66,68);
-aWE("smesh_mechanic",56,60,63,66);
-aWE("smesh_mechanic_tetra",63);
-aWE("smesh_mesheditor",60,66);
-aWE("smeshgroup1",56);
-aWE("smeshgroup2",56);
-aWE("smeshgui",6,7,63);
-aWE("smooth",60,44);
-aWE("smoothobject",60);
-aWE("smp",61);
-aWE("so",12,18,19,6,7,56,60,61,63,42,46,68);
-aWE("solid",6,7,59);
-aWE("somewhat",16);
-aWE("sort",20,24,25,48);
-aWE("sourc",65);
-aWE("spac",13,61,40,47);
-aWE("specifi",18,3,61,38,42,44);
-aWE("specific",21,65);
-aWE("specify",16,1,25,10,11,61,38,64,40,65,44,45,47,50);
-aWE("spher",18,19,22);
-aWE("split",14,18,2,5,42);
-aWE("sqrt",60);
-aWE("standalon",24,56,65);
-aWE("standard",0,30,51);
-aWE("start",12,18,5,7,11,59,41,42,47);
-aWE("startendlength",7);
-aWE("statu",60);
-aWE("stdmesher",6,7,56,60,63,68);
-aWE("step",10,64);
-aWE("stor",61,65);
-aWE("straight",1,7,36);
-aWE("stretch",52);
-aWE("strict",52);
-aWE("structur",22,23);
-aWE("study",6,7,56,65);
-aWE("stuf",52);
-aWE("sub",30,34,60,61,40,42,45,47);
-aWE("submenu",16,9,38,39);
-aWE("submesh",12,20,21,6,23,24,25,10,11,37,64,44,47,48,51);
-aWE("subshapeall",6,7,56,60,63,66,68);
-aWE("subshapelist",6,56,63,68);
-aWE("subshapelist1",66);
-aWE("subshapelist2",66);
-aWE("subshapenam",6,56,68);
-aWE("succed",7,56);
+aWE("rest",64,43);
+aWE("restor",53);
+aWE("restrict",14);
+aWE("result",13,17,12,57,66,45,51);
+aWE("ret",6,8);
+aWE("retriev",14);
+aWE("return",58,61);
+aWE("reveal",20);
+aWE("revers",1,64);
+aWE("revert",21);
+aWE("revolution",11,61,67);
+aWE("revolv",61,67);
+aWE("right",0,22,9,28,29,12,65);
+aWE("rotat",11,12,61,67,41,70,53);
+aWE("rotateobject",70);
+aWE("rotation",5,67,41,70,53);
+aWE("rotationsweepobject",61);
+aWE("rough",13);
+aWE("rr",61);
+aWE("rul",19,37,43);
+aWE("run",42);
+aWE("salom",25,8,57,60,61,66,42,62,70);
+aWE("sam",14,0,19,20,2,23,24,8,12,37,38,68,43,51);
+aWE("sampl",15,17,18,19,20,2,3,4,21,23,24,25,26,27,28,30,11,12,55,56,31,58,33,32,59,35,36,37,34,64,38,39,40,67,41,43,44,45,46,47,48,49,50,51,73,54);
+aWE("sav",68);
+aWE("scal",19,53);
+aWE("scalar",16);
+aWE("scen",53);
+aWE("script",15,17,18,19,20,2,3,4,21,23,6,24,25,26,27,28,30,11,12,55,56,57,31,58,33,32,59,35,36,61,37,34,64,66,38,39,40,67,41,43,44,45,46,47,70,48,49,50,51,52,73,54);
+aWE("se",15,17,18,19,20,2,3,4,21,5,6,24,7,25,26,27,28,30,11,12,55,56,31,58,33,32,59,35,36,37,34,64,38,39,40,67,41,43,44,69,45,46,47,48,49,50,51,73,53,54);
+aWE("seam",64);
+aWE("search",31,68);
+aWE("second",17,61,63,43);
+aWE("secondnodeid1",70);
+aWE("secondnodeid2",70);
+aWE("secondnodeidonfreebord",70);
+aWE("section",0,5,23,64,69);
+aWE("seg",63);
+aWE("segment",13,19,6,8,57,33,60,61,63,66,69,70,72);
+aWE("select",13,0,17,1,19,21,22,23,6,24,7,25,26,9,27,28,30,11,12,31,35,61,63,37,64,65,39,40,67,41,42,68,43,45,46,48,49,50,51,52,53);
+aWE("selectabl",59);
+aWE("selection",17,1,21,25,26,9,68,49);
+aWE("sens",14);
+aWE("separat",47);
+aWE("sequenc",43);
+aWE("set",14,15,17,19,21,5,23,25,8,28,12,33,60,61,63,34,64,65,68,43,45,71,49);
+aWE("setmargin",57,66);
+aWE("setmaxelementarea",6);
+aWE("setmesh",66);
+aWE("setnam",61,62,69);
+aWE("setnumberofsegment",61);
+aWE("setnumfunctor",57,66);
+aWE("setpredicat",57,66);
+aWE("setting",23);
+aWE("seven",12,61);
+aWE("sew",12,43,70);
+aWE("sewbordertosid",70);
+aWE("sewconformfreeborder",70);
+aWE("sewfreeborder",70);
+aWE("sewsideelement",70);
+aWE("sg",57,61,66,70);
+aWE("shad",0,65,71);
+aWE("shall",21,27,28,35,64,67,41,46,48,49,50);
+aWE("shap",13,14,12,61,64,45);
+aWE("shape_mesh",61);
+aWE("shape1d",61);
+aWE("shapetyp",6,8,57,61,66,69,70);
+aWE("shell",66);
+aWE("shift",17,1,26,39,45);
+aWE("shortest",54);
+aWE("should",19,7,25,11,12,64,67,41,68,43,45,51);
+aWE("show",19,5,12,68,53);
+aWE("shown",16,45);
+aWE("shrink",65);
+aWE("sid",6,8,36,63,43,44,70);
+aWE("simp",23,37);
+aWE("simpl",14,17,12,64);
+aWE("simplex",20,2);
+aWE("sin",61);
+aWE("sin_bot",61);
+aWE("sin_top",61);
+aWE("six",12,61);
+aWE("siz",0,63,69,45);
+aWE("sk",20,2);
+aWE("sketch",8);
+aWE("sketcher",8);
+aWE("sketcher1",8);
+aWE("sketcher2",8);
+aWE("skew",16,26,60,66,44,49);
+aWE("skew_margin",66);
+aWE("slid",71);
+aWE("small",53);
+aWE("smesh",6,8,57,61,66,62,43,69,70,72);
+aWE("smesh_mechanic",57,61,66,70);
+aWE("smesh_mechanic_tetra",66);
+aWE("smesh_mesheditor",61,70);
+aWE("smeshgroup1",57);
+aWE("smeshgui",61);
+aWE("smooth",61,45);
+aWE("smoothobject",61);
+aWE("smp",64);
+aWE("so",13,19,20,12,61,64,43,47);
+aWE("solid",8,60);
+aWE("somewhat",17);
+aWE("soon",6);
+aWE("sort",21,25,26,49);
+aWE("sourc",68);
+aWE("spac",14,64,41,48);
+aWE("specifi",19,3,64,39,43,45);
+aWE("specific",22,68);
+aWE("specify",17,1,26,11,12,64,39,67,41,68,45,46,48,51);
+aWE("spher",19,20,23);
+aWE("split",15,19,2,5,63,43);
+aWE("sqrt",61);
+aWE("standalon",25,57,68);
+aWE("standard",0,7,31,69,52);
+aWE("start",13,19,5,8,12,60,42,43,48);
+aWE("startendlength",8);
+aWE("static",62);
+aWE("statu",61);
+aWE("step",11,67);
+aWE("stor",64,68);
+aWE("str",62);
+aWE("straight",1,8,12,61,37);
+aWE("stretch",53);
+aWE("strict",53);
+aWE("structur",23,24,61,62);
+aWE("study",8,57,68,69);
+aWE("stuf",53);
+aWE("styl",6);
+aWE("sub",6,8,12,31,35,64,41,43,46,48);
+aWE("submenu",17,10,39,40);
+aWE("submesh",13,21,22,6,24,25,26,11,12,38,67,45,48,49,52);
+aWE("subshapeall",6,8,57,61,66,70);
+aWE("subshapeallid",69);
+aWE("subshapeallsort",61);
+aWE("subshapelist",6,57);
+aWE("subshapenam",6);
+aWE("succed",8);
 aWE("sum",2);
-aWE("supplement",36);
-aWE("supplementary",25);
-aWE("surfac",13,19,2,10,61,64,42);
-aWE("surround",13,44);
-aWE("sweep",60);
-aWE("swept",10,64);
+aWE("supplement",37);
+aWE("supplementary",26);
+aWE("surfac",14,20,2,11,12,64,67,43);
+aWE("surround",14,45);
+aWE("swept",11,67);
 aWE("switch",1);
-aWE("symmetrical",45,66);
-aWE("symmetry",45,66);
-aWE("syntax",65);
-aWE("t",13,18,2,22,36,61,62,52);
-aWE("tabl",1,18);
-aWE("tak",19,48);
-aWE("taken",12,21,24,7,61);
-aWE("tap",15,24,59,63,46);
-aWE("techniqu",44);
-aWE("tetra3d",7);
-aWE("tetrahedral",14);
-aWE("tetrahedralization",22);
-aWE("tetrahedron",13,14,16,2,7,60,33,68);
-aWE("th",61,42);
-aWE("them",12,16,1,18,2,24,8,9,10,11,34,38,64,42,44,52);
-aWE("thos",25,48);
-aWE("thre",13,1,19,7,60,36,42,45);
-aWE("threshold",65);
-aWE("tick",52);
+aWE("symmetrical",46,70);
+aWE("symmetry",46,70);
+aWE("syntax",68);
+aWE("t",14,19,2,23,57,61,37,64,65,66,70,53);
+aWE("t1",61);
+aWE("tabl",1,19);
+aWE("tak",20,49);
+aWE("taken",13,22,25,8,64);
+aWE("tap",16,25,60,66,47);
+aWE("taper_margin",66);
+aWE("techniqu",45);
+aWE("tetra",6,8,69,72);
+aWE("tetrahedral",15,8,63,69);
+aWE("tetrahedralization",23);
+aWE("tetrahedrical",8);
+aWE("tetrahedron",14,15,17,2,6,8,61,34,69,72);
+aWE("tetran",8);
+aWE("th",64,43);
+aWE("them",13,17,1,19,2,25,9,10,11,12,35,63,39,67,43,45,53);
+aWE("themesh",6);
+aWE("third",12);
+aWE("thos",26,49);
+aWE("thre",14,1,20,61,63,37,43,46);
+aWE("threshold",68);
+aWE("tick",53);
 aWE("tim",0);
 aWE("tmp",6);
-aWE("togeth",32);
-aWE("toggl",16,65,47);
-aWE("toleranc",34,64,65,66);
-aWE("tool",65,50);
-aWE("toolbar",19,2,20,22,23,25,26,27,29,10,11,31,61,38,39,64,41,43,44,46,48,49,51,69,52,53);
-aWE("top",60);
-aWE("topological",13,42);
-aWE("topology",13);
-aWE("total",51);
-aWE("toward",44);
-aWE("transform",27,66);
-aWE("transformation",34,40,42,45,47);
-aWE("translat",66,47);
-aWE("translateobject",66);
-aWE("translation",66,47);
-aWE("transparency",0,67);
-aWE("transparent",67);
-aWE("tri_mesh",66);
-aWE("tria",7,60,66);
-aWE("tria_mesh",7);
-aWE("triangl",13,14,16,1,17,19,7,26,10,32,31,58,35,60,64,43,46,66,48,49,68,52);
-aWE("triangle_mefisto",60);
-aWE("triangular",14,32);
-aWE("triangulation",7);
-aWE("trihedron",52);
-aWE("tritoquad",60);
-aWE("try",22);
-aWE("tt",7);
-aWE("tui",14,16,17,18,19,2,3,4,20,22,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,51,69,53);
-aWE("two",13,16,5,24,25,7,26,11,56,35,60,61,42,46,66,47,49,50,51);
-aWE("typ",13,16,18,19,2,21,22,24,10,11,38,64,65,42,51);
-aWE("typical",44);
-aWE("u",13,42);
-aWE("unary",65);
-aWE("unassign",37);
-aWE("uniform",44);
-aWE("union",56,48,49,50);
-aWE("uniongroup",56);
-aWE("unit",60,42,48,49,50);
-aWE("unles",36);
-aWE("unv",30);
-aWE("up",18,8,28);
-aWE("updat",0,41,44);
-aWE("updateobjbrows",6,7,56,60,63,66,68);
-aWE("upload",65);
-aWE("us",13,14,18,3,5,22,23,24,10,32,34,61,64,65,42,44,67,50,52);
-aWE("usag",15);
-aWE("useful",0,16,24,11);
-aWE("usual",42,44);
-aWE("v",13);
-aWE("valu",12,15,18,19,2,22,6,11,57,35,36,37,65,43,68);
-aWE("vari",19);
+aWE("togeth",33);
+aWE("toggl",17,68,48);
+aWE("toleranc",35,67,68,70);
+aWE("tool",68,51);
+aWE("toolbar",20,2,21,23,24,7,26,27,28,30,11,12,32,64,39,40,67,42,44,45,47,49,50,52,73,53,54);
+aWE("top",61);
+aWE("topological",14,43);
+aWE("topology",14);
+aWE("toru",7);
+aWE("total",52);
+aWE("toward",45);
+aWE("transform",28,70);
+aWE("transformation",35,41,43,46,48);
+aWE("translat",70,48);
+aWE("translateobject",70);
+aWE("translation",70,48);
+aWE("transparency",0,71);
+aWE("transparent",71);
+aWE("transtorm",7);
+aWE("tri_mesh",70);
+aWE("tria",6,8,66,70);
+aWE("tria_mesh",8);
+aWE("triangl",14,15,17,1,18,20,6,8,27,11,33,32,59,36,61,63,66,67,44,69,47,70,49,50,72,53);
+aWE("triangular",15,33);
+aWE("triangulation",8);
+aWE("trihedron",53);
+aWE("tritoquad",61);
+aWE("truncat",69);
+aWE("try",23,63);
+aWE("tt",8,61);
+aWE("tui",15,17,18,19,20,2,3,4,21,23,24,25,26,27,28,30,11,12,55,56,31,58,33,32,59,35,36,37,34,64,38,39,40,67,41,43,44,45,46,47,48,49,50,51,52,73,54);
+aWE("tupl",62);
+aWE("two",14,17,5,25,26,8,27,12,57,36,61,63,64,66,43,47,70,48,50,51,52);
+aWE("typ",14,17,19,20,2,22,23,25,11,12,39,67,68,43,52);
+aWE("typical",45);
+aWE("u",14,43);
+aWE("unary",68);
+aWE("unassign",38);
+aWE("uniform",45);
+aWE("union",57,49,50,51);
+aWE("uniongroup",57);
+aWE("unionid",69);
+aWE("unit",61,43,49,50,51);
+aWE("unles",37);
+aWE("unv",31);
+aWE("up",19,9,29);
+aWE("updat",0,6,57,61,66,42,45,70);
+aWE("updateobjbrows",57,61,66,70);
+aWE("upload",68);
+aWE("us",14,15,19,3,5,23,24,25,11,12,57,33,35,61,63,64,66,67,68,43,45,70,71,51,53);
+aWE("usag",16,6,57,61,66,69,70);
+aWE("useful",0,17,25,12,63);
+aWE("usual",43,45);
+aWE("v",14);
+aWE("valu",13,16,19,20,2,23,6,12,58,36,37,38,68,44,69);
+aWE("vari",20);
+aWE("variabl",62);
 aWE("variou",0);
-aWE("ve",16);
-aWE("vector",7,10,11,60,64,40,45,66,47,53);
-aWE("vertex",13,61);
-aWE("vertic",6,7,61);
-aWE("very",16,11);
-aWE("via",65,51,52);
-aWE("view",0,16,1,17,19,2,20,5,24,25,8,26,27,28,10,11,31,35,38,39,64,65,42,43,44,46,48,49,51,68,69,52,53);
-aWE("visibl",52);
-aWE("visual",15);
-aWE("visualiz",52);
+aWE("ve",17);
+aWE("vector",11,12,61,67,41,46,70,48,54);
+aWE("versa",7);
+aWE("version",57,61,66,70);
+aWE("vert",61);
+aWE("vertex",14,64);
+aWE("vertex_",61);
+aWE("vertic",61,64);
+aWE("very",17,12,63);
+aWE("via",68,52,53);
+aWE("vic",7);
+aWE("vid",61);
+aWE("view",0,17,1,18,20,2,21,5,25,26,9,27,28,29,11,12,32,36,39,40,67,68,43,44,45,47,49,50,52,72,73,53,54);
+aWE("visibl",53);
+aWE("visual",16);
+aWE("visualiz",53);
 aWE("vk",2);
-aWE("volum",12,13,14,15,16,2,21,24,7,9,59,60,33,63,65,66,51,68,69);
-aWE("vtk",0,52);
-aWE("vxy",7,60,66);
-aWE("walk",61);
-aWE("warp",15,25,59,63,48,53);
-aWE("way",13,16,22,23,24,11,61,37,50);
-aWE("weight",44);
-aWE("well",61);
-aWE("wheth",65);
-aWE("whil",38);
-aWE("whit",54);
-aWE("whol",2,10,11,60,64,65,44,47);
-aWE("whos",20,24,25,36,48);
-aWE("will",12,13,0,16,1,17,18,19,2,20,21,22,23,24,25,8,27,28,29,10,11,30,32,31,58,35,60,33,36,61,38,39,64,41,65,42,43,44,46,67,48,50,51,69,53);
+aWE("volum",13,14,15,16,17,2,22,6,25,8,10,12,60,61,34,66,68,70,52,72,73);
+aWE("volume_margin",66);
+aWE("vtk",0,53);
+aWE("vxy",8,70);
+aWE("wa_margin",66);
+aWE("walk",64);
+aWE("warp",16,26,60,66,49,54);
+aWE("way",14,17,23,24,25,12,64,38,51);
+aWE("weight",45);
+aWE("well",64);
+aWE("wheth",68);
+aWE("whil",39);
+aWE("whit",12,55);
+aWE("whol",2,11,12,67,68,45,48);
+aWE("whos",21,25,26,37,49);
+aWE("will",13,14,0,17,1,18,19,20,2,21,22,23,6,24,7,25,26,9,28,29,30,11,12,57,31,33,32,59,36,61,63,37,34,64,66,39,40,67,42,68,43,44,45,47,70,71,49,51,52,73,54);
 aWE("window",5);
-aWE("wir",14,6,7,11,32,60,66);
-aWE("wire_discretisation",60);
-aWE("wirefram",0,11,62);
-aWE("wish",22,8,30,52);
-aWE("within",18,61,42);
-aWE("without",1,63);
-aWE("word",18);
-aWE("work",1,11);
-aWE("worst",19);
-aWE("would",16,42);
-aWE("ww",7);
-aWE("x",13,5,53);
-aWE("x0",60);
-aWE("y",13,5);
-aWE("y0",60);
-aWE("your",12,13,15,0,16,1,17,18,19,2,20,5,21,22,23,24,27,28,29,30,32,31,34,35,33,61,62,37,38,39,40,65,43,44,45,46,47,51,69,53);
-aWE("z",13,5);
-aWE("z0",60);
-aWE("zero",61);
-aWE("zoom",52);
+aWE("wir",15,8,12,33,61,63,70);
+aWE("wire_discretisation",61);
+aWE("wire_polylin",61);
+aWE("wire_polyline_edg",61);
+aWE("wire_polyline_mesh",61);
+aWE("wirefram",0,65);
+aWE("wish",23,7,9,31,53);
+aWE("within",19,64,43);
+aWE("without",1,12,66);
+aWE("word",19);
+aWE("work",1,12,63);
+aWE("worst",20);
+aWE("would",17,43);
+aWE("written",57,61,66,70);
+aWE("ww",8);
+aWE("x",14,5,54);
+aWE("x0",61);
+aWE("y",14,5);
+aWE("y0",61);
+aWE("your",13,14,16,0,17,1,18,19,20,2,21,5,22,23,24,25,28,29,30,31,33,32,35,36,34,64,65,38,39,40,41,68,44,45,46,47,48,52,73,54);
+aWE("z",14,5);
+aWE("z0",61);
+aWE("zero",64);
+aWE("zoom",53);
 
 //-->
 </script>
index 6ff50b0a23222a93f2c82cbfb9fcdf19f6070dd3..358d650ef9e363869490bca2bdb4e5592963f192 100755 (executable)
@@ -8,19 +8,21 @@
 <script language="javascript" src="whtdata.js"></script>
 <script language="javascript">
 <!--
- aTE(1,78,"MESH module");
+ aTE(1,81,"MESH module");
    aTE(2,0,"Introduction to Mesh","mesh.htm");
    aTE(2,0,"Running MESH module","files/running_smesh_module.htm");
-   aTE(1,12,"Creating meshes");
+   aTE(2,0,"Introduction to MESH module python interface","smesh.py_introduction.htm");
+   aTE(1,13,"Creating meshes");
      aTE(2,0,"About meshes","files/about_meshes.htm");
      aTE(2,0,"Importing and exporting meshes","files/importing_and_exporting_meshes.htm");
      aTE(2,0,"Constructing meshes","files/constructing_meshes.htm");
      aTE(2,0,"Defining meshing algorithms","files/about_meshing_algorithms.htm");
-     aTE(1,5,"Defining hypotheses");
+     aTE(1,6,"Defining hypotheses");
        aTE(2,0,"About Hypotheses","files/about_hypotheses.htm");
        aTE(2,0,"1D Meshing Hypotheses","files/arithmetic_1d.htm");
        aTE(2,0,"2D Meshing Hypotheses","files/max._element_area_hypothesis.htm");
        aTE(2,0,"Max Element Volume hypothesis","files/max._element_volume_hypothsis.htm");
+       aTE(2,0,"Netgen 2D and 3D hypotheses","netgen_2d_and_3d_hypotheses.htm");
        aTE(2,0,"Additional Hypotheses","files/non_conform_mesh_allowed_hypothesis.htm");
      aTE(2,0,"Constructing submeshes","files/constructing_submeshes.htm");
      aTE(2,0,"Editing Meshes","files/reassigning_hypotheses_and_algorithms.htm");
@@ -56,7 +58,7 @@
      aTE(2,0,"Constructing groups of specific elements","files/constructing_groups_of_specific_elements.htm");
      aTE(2,0,"Deleting Groups","deleting_groups.htm");
      aTE(2,0,"Selection filter library","selection_filter_library.htm");
-   aTE(1,22,"Modifying meshes");
+   aTE(1,23,"Modifying meshes");
      aTE(2,0,"Adding nodes and elements","files/adding_nodes_and_elements.htm");
      aTE(2,0,"Adding quadratic elements","adding_quadratic_nodes_and_elements.htm");
      aTE(2,0,"Removing nodes and elements","files/removing_nodes_and_elements.htm");
      aTE(2,0,"Extrusion along a path","extrusion_along_a_path.htm");
      aTE(2,0,"Revolution","revolution.htm");
      aTE(2,0,"Pattern mapping","pattern_mapping.htm");
-   aTE(2,0,"Access to Mesh module functionality from Python (using smesh.py)","smeshpy_doc/namespacesmesh.html");
+     aTE(2,0,"Convert to/from Quadratic Mesh","convert_to_from_quadratic_mesh.htm");
+ aTE(2,0,"Python interface smesh.py" ,"smeshpy_doc/namespacesmesh.html");
    aTE(1,7,"TUI Scripts");
      aTE(2,0,"Creating Meshes","constructing_meshes.htm");
-     aTE(2,0,"Defining Hypotheses","defining_hypotheses_tui.htm");
      aTE(2,0,"Viewing Meshes","viewing_meshes.htm");
+     aTE(2,0,"Defining Hypotheses","defining_hypotheses_tui.htm");
      aTE(2,0,"Quality Controls","quality_controls.htm");
      aTE(2,0,"Grouping Elements","grouping_elements.htm");
      aTE(2,0,"Modifying Meshes","modifying_meshes.htm");
index e01bedde668f4d56f0d4f66ee82cba60a2f1aa27..0f8f90ab6c9ca2fd3f403b5115b73d98a33e1593 100755 (executable)
@@ -133,4 +133,4 @@ else
 //-->
 </script>
 </body>
-</html>
\ No newline at end of file
+</html>
index fd900d80121254b1bbf75fff2b6d2a457e12b7d9..feed15b4a6e4f0f506a222843d17fd8131640a53 100755 (executable)
@@ -62,7 +62,7 @@ img {vertial-align:middle;}
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../revolution.htm"><img src="../whd_toc3.gif" border="0" align="absmiddle"> Revolution</a></nobr><br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../pattern_mapping.htm"><img src="../whd_toc3.gif" border="0" align="absmiddle"> Pattern mapping</a></nobr><br>
 &nbsp;&nbsp;&nbsp;<nobr><a name="9"></a><a href="whlstt9.htm#9" target="_self" title="closed book"><img src="../whd_toc1.gif" border="0" align="absmiddle"> TUI Scripts</a></nobr><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../smeshpy_doc/namespacesmesh.html"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Access to Mesh module functionality from Python (using smesh.py)</a></nobr><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../smeshpy_doc/namespacesmesh.html"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Python interface smesh.py</a></nobr><br>
 </p>
 
 </td></tr>
index eb0cc3d363f335660097b12e11a6519be6c21fb0..cdeb27add6c69c949f8308a90412cb3a10914cb8 100755 (executable)
@@ -46,6 +46,7 @@ img {vertial-align:middle;}
 &nbsp;&nbsp;&nbsp;<nobr><a name="6"></a><a href="whlstt6.htm#6" target="_self" title="closed book"><img src="../whd_toc1.gif" border="0" align="absmiddle"> Grouping elements</a></nobr><br>
 &nbsp;&nbsp;&nbsp;<nobr><a name="7"></a><a href="whlstt7.htm#7" target="_self" title="closed book"><img src="../whd_toc1.gif" border="0" align="absmiddle"> Modifying meshes</a></nobr><br>
 &nbsp;&nbsp;&nbsp;<nobr><a name="9"></a><a href="whlstt1.htm#9" target="_self"><img src="../whd_toc2.gif" border="0" align="absmiddle"> TUI Scripts</a></nobr><br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../smesh_py_introduction.htm"><img src="../whd_toc3.gif" border="0" align="absmiddle"> Introduction to MESH module python interface</a></nobr><br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../constructing_meshes.htm"><img src="../whd_toc3.gif" border="0" align="absmiddle"> Creating Meshes</a></nobr><br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../defining_hypotheses_tui.htm"><img src="../whd_toc3.gif" border="0" align="absmiddle"> Defining Hypotheses</a></nobr><br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<nobr><a href="../viewing_meshes.htm"><img src="../whd_toc3.gif" border="0" align="absmiddle"> Viewing Meshes</a></nobr><br>
index ad8862182ecdbbc4fb8da13bd70e5546ad612c65..d412744b016710553c6d53f58264869efea3643e 100755 (executable)
@@ -88,4 +88,4 @@ else
 //-->
 </script>
 </body>
-</html>
\ No newline at end of file
+</html>
index d7da2cabcb304b1779c87d75c2deefbd79e97af5..2b71c7972e87d0965611d6a653d32b22a8a352b6 100755 (executable)
@@ -22,4 +22,4 @@ window.onload=window_Onload;
 </head>
 
 <frameset id="whPfset" cols="260,*"><noframes><p>Your browser does not support frames. We recommend that you update your browser to a version that supports frames.</p><p>To view the Help system without frames click on this<a href="whgdata/whnvp30.htm">hyperlink.</a></p></noframes><frame src="whgdata/whnvp30.htm" title="navigation pane" name="navigation pane" scrolling="no"><frame src="mesh.htm" title="topic pane" name="bsscright" scrolling="yes"></frameset>
-</html>
\ No newline at end of file
+</html>
index b79fae0147f3f4568eb85b357d585dc79a3bebfb..1d279bbc323288249739142b9dca47807b4658e1 100755 (executable)
                        <indent attr="9pt" />
                </glossary>
        </paneskin>
-</resource>
\ No newline at end of file
+</resource>
index 484f54777f4a38caf54021b7ae9d1282e3dadf18..0ad872aaee05a426621f59864ac3058855ddd8c6 100755 (executable)
@@ -17,4 +17,4 @@
 <tr><td> Authoring Tool Name </td><td>RoboHelp X5</td></tr>
 <table>
 </body>
-</html>
\ No newline at end of file
+</html>
index d06481fca10bc9c5e6b2fffee449a57d94225c4d..c3469d79fe159d096c3c894a95721260e7994951 100755 (executable)
@@ -226,4 +226,4 @@ writeStyle();
 
 </body>
 
-</html>
\ No newline at end of file
+</html>
index 69a40758d98a00cddf05aa87f3cf0d7cf3e2bfe3..2fc6ef910a498191238ab72f06594da1e988d417 100755 (executable)
@@ -429,4 +429,4 @@ function isAPane(sPaneName)
                return true;
        else
                return false;
-}
\ No newline at end of file
+}
index 5c1b6d723a311019edd0e18f45f8c5a1bc6a93bf..e94f97f2567879f6ddab108b1e581fb1ab57d59d 100755 (executable)
@@ -46,4 +46,4 @@ TocInitPage();
 //-->
 </script>
 </body>
-</html>
\ No newline at end of file
+</html>
index e9d9cd19a9b006aa996f3632e48c43eedf17743d..52198a574fffc44772acb2e9c997750050824a67 100755 (executable)
@@ -722,4 +722,4 @@ setButtonFont("hide","","","","","","");
        gbWhTopic=true;
 }
 else
-       document.location.reload();
\ No newline at end of file
+       document.location.reload();
index 3c5f6ca5db7db102c3e2febc788327e65c6ce464..577efce7f67fdcccb4f720e0a1f2ce5d65e4b8ff 100755 (executable)
@@ -7,6 +7,7 @@
 <topic name="Borders at multiconnection 2D" url="borders_at_multiconnection_2d.htm" />
 <topic name="Clipping" url="clipping.htm" />
 <topic name="Constructing Meshes" url="constructing_meshes.htm" />
+<topic name="Convert to/from Quadratic Mesh" url="convert_to_from_quadratic_mesh.htm" />
 <topic name="Defining hypotheses TUI" url="defining_hypotheses_tui.htm" />
 <topic name="Deleting Groups" url="deleting_groups.htm" />
 <topic name="Display Entity" url="display_entity.htm" />
 <topic name="Merge Elements" url="merge_elements.htm" />
 <topic name="mesh" url="mesh.htm" />
 <topic name="Modifying Meshes" url="modifying_meshes.htm" />
+<topic name="SALOME - SMESH - v.version: Package smesh" url="namespacesmesh.html" />
+<topic name="Netgen 2D and 3D hypotheses" url="netgen_2d_and_3d_hypotheses.htm" />
 <topic name="Pattern mapping" url="pattern_mapping.htm" />
 <topic name="Presentation" url="presentation.htm" />
 <topic name="Quality Controls" url="quality_controls.htm" />
 <topic name="Revolution" url="revolution.htm" />
 <topic name="Selection filter library" url="selection_filter_library.htm" />
+<topic name="smesh.py_introduction" url="smesh.py_introduction.htm" />
 <topic name="Transforming Meshes" url="transforming_meshes.htm" />
 <topic name="Transparency" url="transparency.htm" />
 <topic name="Viewing Meshes" url="viewing_meshes.htm" />
index 023ab7c77a53ae18093608009d556b1cfda8f33e..89269fc272f0c8505a9b629195461e29fcd09140 100755 (executable)
@@ -1,7 +1,7 @@
 <?xml version='1.0' encoding='windows-1252' ?>
 <fts>
-<chunkinfo url="whfwdata0.xml" first="0" last="zoom"/>
+<chunkinfo url="whfwdata0.xml" first="_grp" last="zoom"/>
 
-<tchunkinfo first="0" last="69" url="whftdata0.xml" />
+<tchunkinfo first="0" last="73" url="whftdata0.xml" />
 
 </fts>
index bf8dac36b90bf0549889cff9139c4a6f87ad7a12..edc9103367a5c486a7096438ea29be2859ba73fd 100755 (executable)
 <?xml version='1.0' encoding='windows-1252' ?>
 <ftswdata>
-<key name="0"> 13,18,5,6,24,7,56,60,63,42,66,68, </key>
-<key name="001"> 66, </key>
-<key name="0d"> 13, </key>
-<key name="1"> 16,1,17,18,19,2,20,22,6,25,7,26,27,28,29,10,11,56,30,31,34,35,60,61,63,38,39,64,42,43,44,46,66,48,49,50,68,69,53, </key>
-<key name="10"> 6,7,56,60,66,68, </key>
-<key name="100"> 6,7,56,60,63,66, </key>
-<key name="109"> 66, </key>
-<key name="11"> 60, </key>
-<key name="113"> 66, </key>
-<key name="1135"> 60, </key>
-<key name="1145"> 60, </key>
-<key name="1147"> 60, </key>
-<key name="1159"> 60, </key>
-<key name="12"> 60,66, </key>
-<key name="13"> 60, </key>
-<key name="14"> 60, </key>
-<key name="15"> 60,63,66, </key>
-<key name="150"> 66, </key>
-<key name="16"> 60, </key>
-<key name="17"> 60, </key>
-<key name="18"> 60,63, </key>
-<key name="180"> 60, </key>
-<key name="19"> 60, </key>
-<key name="1d"> 12,13,14,15,18,22,7,10,11,59,36,63,64, </key>
-<key name="1e"> 60,63, </key>
-<key name="2"> 16,1,17,19,2,20,22,6,25,7,26,27,28,29,10,11,30,31,35,60,61,63,38,39,64,42,43,44,46,66,48,49,50,68,69,53, </key>
-<key name="20"> 6,7,56,60,63,66,68, </key>
-<key name="200"> 6,7,60, </key>
-<key name="21"> 60,66, </key>
-<key name="23"> 60,66, </key>
-<key name="2381"> 60, </key>
-<key name="2382"> 60, </key>
-<key name="2383"> 60, </key>
-<key name="2384"> 60, </key>
-<key name="2385"> 60, </key>
-<key name="2386"> 60, </key>
-<key name="2387"> 60, </key>
-<key name="2388"> 60, </key>
-<key name="2389"> 60, </key>
-<key name="2390"> 60, </key>
-<key name="2391"> 60, </key>
-<key name="2392"> 60, </key>
-<key name="2393"> 60, </key>
-<key name="2394"> 60, </key>
-<key name="2395"> 60, </key>
-<key name="2396"> 60, </key>
-<key name="2397"> 60, </key>
-<key name="2398"> 60, </key>
-<key name="2399"> 60, </key>
-<key name="24"> 66, </key>
-<key name="240"> 60, </key>
-<key name="2400"> 60, </key>
-<key name="2401"> 60, </key>
-<key name="2402"> 60, </key>
-<key name="2403"> 60, </key>
-<key name="2404"> 60, </key>
-<key name="2405"> 60, </key>
-<key name="2406"> 60, </key>
-<key name="2407"> 60, </key>
-<key name="2408"> 60, </key>
-<key name="2409"> 60, </key>
-<key name="2410"> 60, </key>
-<key name="2411"> 60, </key>
-<key name="2412"> 60, </key>
-<key name="2413"> 60, </key>
-<key name="2414"> 60, </key>
-<key name="2415"> 60, </key>
-<key name="2416"> 60, </key>
-<key name="2417"> 60, </key>
-<key name="2418"> 60, </key>
-<key name="2419"> 60, </key>
-<key name="2420"> 60, </key>
-<key name="2421"> 60, </key>
-<key name="2422"> 60, </key>
-<key name="245"> 60, </key>
-<key name="246"> 60, </key>
-<key name="25"> 66, </key>
-<key name="255"> 60, </key>
-<key name="2d"> 12,13,14,15,17,19,4,22,6,7,10,11,32,31,59,35,60,61,63,64,42,66,53, </key>
-<key name="3"> 13,17,19,20,22,6,25,26,27,10,11,56,30,60,61,63,38,39,64,42,43,44,66,48,49,68,53, </key>
-<key name="30"> 7,56,60,63,66, </key>
-<key name="300"> 6,7, </key>
-<key name="3128"> 60, </key>
-<key name="321"> 60, </key>
-<key name="3265"> 60, </key>
-<key name="3402"> 60, </key>
-<key name="3658"> 60, </key>
-<key name="38"> 60,66, </key>
-<key name="39"> 60, </key>
-<key name="3d"> 12,13,14,15,0,16,1,19,2,20,22,24,25,7,8,26,27,28,10,11,59,33,63,38,39,64,42,44,48,49,69,52, </key>
-<key name="3e"> 63, </key>
-<key name="3rd"> 13, </key>
-<key name="3x3"> 60, </key>
-<key name="4"> 13,17,19,22,6,25,7,27,11,30,60,61,63,42,43,46,66,53, </key>
-<key name="40"> 60, </key>
-<key name="405"> 60, </key>
-<key name="406"> 60, </key>
-<key name="45"> 60,66, </key>
-<key name="47"> 60, </key>
-<key name="492"> 60, </key>
-<key name="493"> 60, </key>
-<key name="5"> 5,60,63,66, </key>
-<key name="50"> 7,60,66, </key>
-<key name="502"> 60, </key>
-<key name="503"> 60, </key>
-<key name="58"> 66, </key>
-<key name="5th"> 13, </key>
-<key name="6"> 2,6,7,56,60,66,68, </key>
-<key name="60"> 56,60, </key>
-<key name="642"> 60, </key>
-<key name="66632"> 60, </key>
-<key name="69"> 66, </key>
-<key name="7"> 6,7,56,60,63, </key>
-<key name="70"> 7,63,66, </key>
-<key name="700"> 60, </key>
-<key name="71"> 66, </key>
-<key name="72"> 66, </key>
-<key name="73"> 60, </key>
-<key name="77"> 60, </key>
-<key name="8"> 56,60,66, </key>
-<key name="800"> 6,7, </key>
-<key name="814"> 60, </key>
-<key name="850"> 60, </key>
-<key name="859"> 60, </key>
-<key name="864"> 60, </key>
-<key name="89"> 66, </key>
-<key name="9"> 60,66, </key>
-<key name="90"> 66, </key>
-<key name="900"> 6,7, </key>
-<key name="91"> 66, </key>
-<key name="911"> 60, </key>
-<key name="92"> 66, </key>
-<key name="931"> 60, </key>
-<key name="932"> 60, </key>
-<key name="95"> 63, </key>
-<key name="950"> 60, </key>
-<key name="9999"> 24, </key>
-<key name="a_mesh"> 60, </key>
-<key name="aa"> 60, </key>
-<key name="abl"> 16,1,52, </key>
-<key name="abord"> 63, </key>
-<key name="aborder"> 63, </key>
-<key name="abov"> 11,60,44, </key>
-<key name="abox"> 63, </key>
-<key name="absent"> 50, </key>
-<key name="absolute"> 67, </key>
-<key name="abut"> 18, </key>
-<key name="acces"> 0,65,52, </key>
-<key name="accord"> 15,17,18,19,2,31,35,61,43,44,46,69,53, </key>
-<key name="account"> 12,61, </key>
-<key name="acomp"> 63,66, </key>
-<key name="acompobj"> 66, </key>
-<key name="actual"> 36, </key>
-<key name="ad"> 16,1,20,24,25,56,60,48,50, </key>
-<key name="add"> 16,1,20,22,6,24,25,7,29,11,56,60,63,65,48, </key>
-<key name="addedg"> 60, </key>
-<key name="addfac"> 60, </key>
-<key name="addhypothesi"> 6,7,56,60,63,68, </key>
-<key name="addition"> 25,59,60, </key>
-<key name="additional"> 12,13,22,7,36,61,41,65,44, </key>
-<key name="addnod"> 60, </key>
-<key name="addobject"> 56, </key>
-<key name="addpolygonalfac"> 60, </key>
-<key name="addpolyhedralvolum"> 60, </key>
-<key name="addtostudy"> 6,7,56,60,63,66,68, </key>
-<key name="addtostudyinfath"> 6,7,56,60,68, </key>
-<key name="addvolum"> 60, </key>
-<key name="adjacent"> 27,35,36,38,42,48, </key>
-<key name="adjust"> 44, </key>
-<key name="adjustabl"> 36, </key>
-<key name="advanc"> 0,51, </key>
-<key name="afilt"> 56,63, </key>
-<key name="afiltermgr"> 56,60,63, </key>
-<key name="afunctor"> 56,60,63, </key>
-<key name="ageomgroup1"> 56, </key>
-<key name="ageomgroup2"> 56, </key>
-<key name="agroup"> 56,63, </key>
-<key name="agroup1"> 56, </key>
-<key name="agroup2"> 56, </key>
-<key name="agroup3"> 56, </key>
-<key name="agroup4"> 56, </key>
-<key name="agroup5"> 56, </key>
-<key name="agroupelemid"> 56, </key>
-<key name="agroupf"> 63, </key>
-<key name="agroupmain"> 56, </key>
-<key name="agroupn"> 63, </key>
-<key name="agroupr"> 56, </key>
-<key name="agrouptool"> 56, </key>
-<key name="ai"> 18, </key>
-<key name="al"> 60, </key>
-<key name="algo"> 6,7,60,66, </key>
-<key name="algo1"> 6,63,68, </key>
-<key name="algo2"> 6,63,68, </key>
-<key name="algorithm"> 12,13,14,15,0,17,22,6,23,7,11,56,32,59,33,61,37,42,66, </key>
-<key name="allow"> 12,0,1,18,20,23,24,25,30,32,58,34,59,36,61,40,42,44,45,47,48,50,52, </key>
-<key name="along"> 10,11,60,61,44,52, </key>
-<key name="alternativ"> 22, </key>
+<key name="_grp"> 69, </key>
+<key name="0"> 14,19,5,6,25,8,12,57,61,63,66,43,69,70,72, </key>
+<key name="000001"> 66, </key>
+<key name="001"> 70, </key>
+<key name="0d"> 14, </key>
+<key name="1"> 17,1,18,19,20,2,21,23,6,7,26,8,27,28,29,30,11,12,57,31,32,35,36,61,64,66,39,40,67,62,43,44,69,45,47,70,49,50,51,73,54, </key>
+<key name="10"> 6,8,12,57,61,69,70,72, </key>
+<key name="100"> 6,8,57,66,69,70, </key>
+<key name="109"> 70, </key>
+<key name="110"> 61, </key>
+<key name="113"> 70, </key>
+<key name="12"> 61,70, </key>
+<key name="13"> 61, </key>
+<key name="130"> 61, </key>
+<key name="15"> 61,66,70, </key>
+<key name="150"> 8,61,70, </key>
+<key name="17"> 61, </key>
+<key name="180"> 61, </key>
+<key name="1d"> 13,14,15,16,19,23,6,8,11,12,60,61,63,37,66,67,69, </key>
+<key name="1e"> 61,66, </key>
+<key name="2"> 17,1,18,20,2,21,23,6,7,26,8,27,28,29,30,11,12,31,32,36,61,64,66,39,40,67,62,43,44,45,47,70,49,50,51,73,54, </key>
+<key name="20"> 6,8,57,61,66,69,70,72, </key>
+<key name="200"> 6,8,61,69, </key>
+<key name="21"> 61,70, </key>
+<key name="23"> 61,70, </key>
+<key name="24"> 70, </key>
+<key name="240"> 61, </key>
+<key name="245"> 61, </key>
+<key name="246"> 61, </key>
+<key name="25"> 70, </key>
+<key name="255"> 61, </key>
+<key name="2d"> 13,14,15,16,18,20,4,23,6,8,11,12,57,33,32,60,36,63,64,66,67,43,69,70,54, </key>
+<key name="3"> 14,18,20,21,23,6,7,26,8,27,28,11,12,57,31,61,63,64,66,39,40,67,62,43,44,69,45,70,49,50,72,54, </key>
+<key name="30"> 8,61,63,70, </key>
+<key name="300"> 6, </key>
+<key name="3128"> 61, </key>
+<key name="321"> 61, </key>
+<key name="3265"> 61, </key>
+<key name="3402"> 61, </key>
+<key name="35"> 57,66, </key>
+<key name="3658"> 61, </key>
+<key name="38"> 61,66,70, </key>
+<key name="39"> 61, </key>
+<key name="3d"> 13,14,15,16,0,17,1,20,2,21,23,6,25,26,8,9,27,28,29,11,12,60,63,34,66,39,40,67,43,69,45,49,50,73,53, </key>
+<key name="3e"> 66, </key>
+<key name="3rd"> 14, </key>
+<key name="3x3"> 61, </key>
+<key name="4"> 14,18,20,23,6,26,8,28,12,31,61,64,66,62,43,44,47,70,54, </key>
+<key name="40"> 57,61,69, </key>
+<key name="405"> 61, </key>
+<key name="406"> 61, </key>
+<key name="45"> 12,61,70, </key>
+<key name="47"> 61, </key>
+<key name="492"> 61, </key>
+<key name="493"> 61, </key>
+<key name="5"> 5,6,8,61,66,70, </key>
+<key name="50"> 8,61,70, </key>
+<key name="502"> 61, </key>
+<key name="503"> 61, </key>
+<key name="58"> 70, </key>
+<key name="5th"> 14, </key>
+<key name="6"> 2,6,8,57,61,70, </key>
+<key name="60"> 57,61,69, </key>
+<key name="66632"> 61, </key>
+<key name="69"> 70, </key>
+<key name="7"> 6,8,57,61,66, </key>
+<key name="70"> 8,61,70, </key>
+<key name="71"> 70, </key>
+<key name="72"> 70, </key>
+<key name="73"> 61, </key>
+<key name="8"> 57,61,66,70, </key>
+<key name="80"> 61,69, </key>
+<key name="800"> 6, </key>
+<key name="814"> 61, </key>
+<key name="850"> 61, </key>
+<key name="859"> 61, </key>
+<key name="89"> 70, </key>
+<key name="9"> 61,70, </key>
+<key name="90"> 70, </key>
+<key name="900"> 6,72, </key>
+<key name="91"> 70, </key>
+<key name="92"> 70, </key>
+<key name="95"> 66, </key>
+<key name="9999"> 25, </key>
+<key name="a_mesh"> 61, </key>
+<key name="a10"> 61, </key>
+<key name="a45"> 61, </key>
+<key name="aa"> 61, </key>
+<key name="abl"> 17,1,53, </key>
+<key name="abord"> 66, </key>
+<key name="aborder"> 66, </key>
+<key name="abov"> 61,45, </key>
+<key name="absent"> 51, </key>
+<key name="absolute"> 71, </key>
+<key name="abut"> 19, </key>
+<key name="acces"> 0,68,53, </key>
+<key name="accord"> 16,18,19,20,2,32,36,64,44,45,47,73,54, </key>
+<key name="account"> 13,64, </key>
+<key name="acomp"> 70, </key>
+<key name="actual"> 63,37, </key>
+<key name="ad"> 17,1,21,7,25,26,57,61,49,51, </key>
+<key name="add"> 17,1,21,23,25,26,8,30,12,57,61,66,68,69,49, </key>
+<key name="addedg"> 61, </key>
+<key name="addfac"> 61, </key>
+<key name="addhypothesi"> 61, </key>
+<key name="addition"> 26,60,61, </key>
+<key name="additional"> 13,14,23,8,37,64,42,68,45, </key>
+<key name="addnod"> 61, </key>
+<key name="addobject"> 57, </key>
+<key name="addpolygonalfac"> 61, </key>
+<key name="addpolyhedralvolum"> 61, </key>
+<key name="addtostudy"> 6,8,57,61,66,69,70,72, </key>
+<key name="addtostudyinfath"> 6,8,57,61, </key>
+<key name="addvolum"> 61, </key>
+<key name="adjacent"> 28,36,63,37,39,43,49, </key>
+<key name="adjust"> 45, </key>
+<key name="adjustabl"> 37, </key>
+<key name="advanc"> 0,52, </key>
+<key name="afilt"> 57,66, </key>
+<key name="afiltermgr"> 57,61,66, </key>
+<key name="afunctor"> 57,61,66, </key>
+<key name="ageomgroup"> 57, </key>
+<key name="agroup"> 57,66, </key>
+<key name="agroup1"> 57, </key>
+<key name="agroup2"> 57, </key>
+<key name="agroup3"> 57, </key>
+<key name="agroup4"> 57, </key>
+<key name="agroup5"> 57, </key>
+<key name="agroupelemid"> 57, </key>
+<key name="agroupf"> 66, </key>
+<key name="agroupmain"> 57, </key>
+<key name="agroupn"> 66, </key>
+<key name="agroupr"> 57, </key>
+<key name="agrouptool"> 57, </key>
+<key name="ai"> 19, </key>
+<key name="al"> 61, </key>
+<key name="algo"> 8,66,70, </key>
+<key name="algo_local"> 6,8,70, </key>
+<key name="algo1d"> 6,8,57,61,69,70,72, </key>
+<key name="algo2d"> 6,8,61,69,70,72, </key>
+<key name="algo3d"> 6,8,69,72, </key>
+<key name="algorithm"> 13,14,15,16,0,18,23,6,24,8,12,33,60,61,63,34,64,38,43, </key>
+<key name="allow"> 13,0,1,19,21,24,7,25,26,31,33,59,35,60,63,37,64,41,43,45,46,48,49,51,53, </key>
+<key name="along"> 11,12,61,64,45,53, </key>
+<key name="alternativ"> 23, </key>
 <key name="alternative"> 0,1, </key>
-<key name="alway"> 44, </key>
-<key name="amesheditor"> 60,66, </key>
+<key name="alway"> 45, </key>
+<key name="amesh"> 6, </key>
+<key name="amesheditor"> 61,70, </key>
 <key name="amount"> 3, </key>
-<key name="analytic"> 18, </key>
-<key name="aneditor"> 60,63,66, </key>
-<key name="angl"> 15,5,25,11,59,35,60,63,64,40,43,48,53, </key>
-<key name="angle180"> 66, </key>
-<key name="angle45"> 60, </key>
-<key name="angular"> 11, </key>
-<key name="angularity"> 11, </key>
-<key name="anid"> 56,63, </key>
-<key name="anodeid1"> 60, </key>
-<key name="anodeid2"> 60, </key>
-<key name="anodeid3"> 60, </key>
-<key name="anodeid4"> 60, </key>
-<key name="anoth"> 60,36, </key>
-<key name="any"> 13,1,22,24,27,11,56,61,44, </key>
-<key name="ap"> 14,16,1,17,19,2,20,5,22,24,25,7,8,26,27,29,10,11,31,58,59,35,60,61,37,38,39,64,42,43,44,45,46,48,49,50,69,53, </key>
-<key name="apparent"> 22, </key>
-<key name="appear"> 0,16,1,20,22,23,25,26,27,29,10,11,34,61,38,39,64,40,45,47,48,49,50, </key>
-<key name="append"> 60,63, </key>
-<key name="appli"> 17,18,19,2,22,23,32,31,35,33,36,37,65,43,44,46,69,53, </key>
-<key name="applicabl"> 19,65, </key>
-<key name="application"> 15,61, </key>
-<key name="apply"> 12,0,22,23,24, </key>
-<key name="applytomeshfac"> 60, </key>
-<key name="appropriat"> 22, </key>
-<key name="approximate"> 18, </key>
-<key name="apredicat"> 56,63, </key>
-<key name="arc"> 7,60,66, </key>
-<key name="arcsin"> 53, </key>
-<key name="area"> 12,15,17,7,56,32,59,33,63,44,46,52, </key>
-<key name="arithmetic"> 12,18,6,7,59,66, </key>
-<key name="arithmetic1d"> 6,7,66,68, </key>
-<key name="around"> 5,11,64, </key>
-<key name="array_of_nodes_group"> 66, </key>
-<key name="asmeshgroup1"> 56, </key>
-<key name="asmeshgroup2"> 56, </key>
-<key name="aspect"> 15,19,2,59,63,44, </key>
-<key name="assign"> 18,22,24,7,37,53, </key>
-<key name="associat"> 16,28,38, </key>
-<key name="attribut"> 24, </key>
+<key name="analytic"> 19, </key>
+<key name="aneditor"> 61,66,70, </key>
+<key name="angl"> 16,5,26,12,60,36,61,66,67,41,44,70,49,54, </key>
+<key name="angle270"> 70, </key>
+<key name="angle45"> 61, </key>
+<key name="angularity"> 12, </key>
+<key name="anid"> 57,66, </key>
+<key name="anoth"> 37, </key>
+<key name="any"> 14,1,23,25,28,12,57,64,45, </key>
+<key name="ap"> 15,17,1,18,20,2,21,5,23,7,25,26,8,9,27,28,30,11,12,32,59,60,36,61,64,38,39,40,67,43,44,45,46,47,49,50,51,73,54, </key>
+<key name="api"> 69, </key>
+<key name="apparent"> 23, </key>
+<key name="appear"> 0,17,1,21,23,24,7,26,27,28,30,11,12,35,64,39,40,67,41,46,48,49,50,51, </key>
+<key name="append"> 61, </key>
+<key name="appli"> 18,19,20,2,23,24,33,32,36,37,34,38,68,44,45,47,73,54, </key>
+<key name="applicabl"> 20,68, </key>
+<key name="application"> 16,64, </key>
+<key name="apply"> 13,0,23,24,25, </key>
+<key name="applytomeshfac"> 61, </key>
+<key name="approach"> 57,61,66,70, </key>
+<key name="appropriat"> 23, </key>
+<key name="approximate"> 19, </key>
+<key name="apredicat"> 57,66, </key>
+<key name="ar_margin"> 66, </key>
+<key name="arc"> 8,70, </key>
+<key name="arcsin"> 54, </key>
+<key name="area"> 13,16,18,8,57,33,60,34,66,45,47,53, </key>
+<key name="area_margin"> 66, </key>
+<key name="arithmetic"> 13,19,6,8,60, </key>
+<key name="arithmetic1d"> 6,8,70, </key>
+<key name="around"> 5,12,67, </key>
+<key name="array_of_nodes_group"> 70, </key>
+<key name="asmeshgroup1"> 57, </key>
+<key name="asmeshgroup2"> 57, </key>
+<key name="aspect"> 16,20,2,60,66,45, </key>
+<key name="assemb"> 69, </key>
+<key name="assign"> 19,23,25,8,38,54, </key>
+<key name="associat"> 17,29,39, </key>
+<key name="attention"> 57,61,66,70, </key>
+<key name="attribut"> 25, </key>
 <key name="auto"> 5, </key>
-<key name="automatic"> 12,18,22,59,61, </key>
-<key name="automatical"> 0,18,20,22,25,27,48, </key>
-<key name="availabl"> 42,52, </key>
-<key name="averag"> 12,18,7,32,59,61,53, </key>
-<key name="ax"> 52, </key>
-<key name="axi"> 10,64,40,45,52,53, </key>
-<key name="axisstruct"> 60,66, </key>
-<key name="axisxyz"> 60,66, </key>
+<key name="automatic"> 13,19,23,60,64, </key>
+<key name="automatical"> 0,19,21,23,26,28,49, </key>
+<key name="availabl"> 43,53, </key>
+<key name="averag"> 13,19,8,33,60,64,54, </key>
+<key name="ax"> 53, </key>
+<key name="axi"> 11,61,67,41,46,70,53,54, </key>
+<key name="axisstruct"> 61,70, </key>
+<key name="axisxyz"> 61,70, </key>
 <key name="background"> 0, </key>
-<key name="bar"> 15, </key>
-<key name="bas"> 12,17,7,11,59,53, </key>
-<key name="basi"> 13,22,23, </key>
-<key name="basic"> 12,0, </key>
-<key name="becom"> 61, </key>
-<key name="befor"> 65,66, </key>
-<key name="begin"> 18,42, </key>
-<key name="belong"> 3,4,24,54,55,42,50, </key>
-<key name="below"> 60, </key>
-<key name="berder"> 42, </key>
-<key name="bet"> 19, </key>
-<key name="binary"> 65, </key>
-<key name="bisect"> 53, </key>
-<key name="bisector"> 53, </key>
-<key name="bit"> 65, </key>
+<key name="bar"> 16, </key>
+<key name="bas"> 13,18,8,12,57,60,61,66,70,54, </key>
+<key name="basi"> 14,23,24, </key>
+<key name="basic"> 13,0, </key>
+<key name="bb"> 61, </key>
+<key name="becom"> 63,64, </key>
+<key name="befor"> 68,70, </key>
+<key name="begin"> 19,43, </key>
+<key name="belong"> 3,4,25,55,56,43,51, </key>
+<key name="below"> 61,63,69, </key>
+<key name="berder"> 43, </key>
+<key name="bet"> 20, </key>
+<key name="binary"> 68, </key>
+<key name="bisect"> 54, </key>
+<key name="bisector"> 54, </key>
+<key name="bit"> 68, </key>
 <key name="black"> 0, </key>
-<key name="block"> 6,7, </key>
 <key name="blu"> 3, </key>
-<key name="bmp"> 0,52, </key>
-<key name="bog"> 18, </key>
-<key name="boolean"> 50, </key>
-<key name="bord"> 42,66, </key>
-<key name="border"> 15,3,4,54,55,59,63,42,66, </key>
-<key name="both"> 0,11,44,50, </key>
-<key name="bottom"> 60,41, </key>
-<key name="bound"> 13,61, </key>
-<key name="boundari"> 61, </key>
-<key name="boundary"> 12,24,61,42,44, </key>
-<key name="box"> 14,16,1,18,20,22,6,23,25,7,26,27,29,10,11,56,30,58,34,61,63,38,39,64,40,41,65,42,44,45,66,47,48,49,50,51,68, </key>
-<key name="box_1"> 60, </key>
-<key name="box_id"> 6,7, </key>
-<key name="box1"> 66, </key>
-<key name="box2"> 66, </key>
-<key name="broken"> 1,36, </key>
-<key name="brown"> 24, </key>
-<key name="brows"> 0,16,1,21,22,23,24,8,29,62,38,39,65,51, </key>
-<key name="build"> 7,10,32,60,36,61,64, </key>
-<key name="built"> 19,23,61,44, </key>
-<key name="button"> 16,1,17,19,2,20,5,22,23,24,25,8,26,27,29,10,11,30,31,35,61,37,38,39,64,40,65,42,43,44,45,46,47,48,49,50,51,69,52,53, </key>
-<key name="cad"> 13, </key>
-<key name="cal"> 61, </key>
-<key name="calculat"> 15,19,2,32,46, </key>
-<key name="calculation"> 12,17,31,35, </key>
-<key name="careful"> 38, </key>
-<key name="cas"> 16,22,6,7,27,60,61,66,51, </key>
-<key name="cel"> 24,38,49, </key>
-<key name="cent"> 11,44,52, </key>
-<key name="centroid"> 44, </key>
-<key name="centroidal"> 44, </key>
-<key name="centroidal_smooth"> 60, </key>
-<key name="certain"> 24,61, </key>
-<key name="chang"> 0,18,20,6,27,60,36,37,68, </key>
-<key name="characteristic"> 15, </key>
-<key name="characteriz"> 13, </key>
-<key name="check"> 24,42,52, </key>
-<key name="checkbox"> 16,65,47, </key>
-<key name="choic"> 12,22,61, </key>
-<key name="choos"> 16,1,17,19,2,20,21,24,25,8,26,27,9,28,10,11,30,31,34,35,61,38,39,64,40,41,65,42,43,45,46,47,48,49,69,53, </key>
-<key name="chosen"> 19,25,32,33,48, </key>
-<key name="circl"> 11,60,66, </key>
-<key name="circlemesh"> 60,66, </key>
-<key name="clear"> 65, </key>
-<key name="click"> 0,16,1,17,19,2,20,5,21,22,23,24,25,8,26,27,28,29,10,11,30,31,35,61,62,37,38,39,64,41,65,42,43,44,46,48,49,50,51,69,52,53, </key>
+<key name="bmp"> 0,53, </key>
+<key name="bog"> 19, </key>
+<key name="boolean"> 61,51, </key>
+<key name="bord"> 43,70, </key>
+<key name="border"> 16,3,4,55,56,60,66,43,70, </key>
+<key name="both"> 0,12,45,51, </key>
+<key name="bottom"> 61,42, </key>
+<key name="bound"> 14,64, </key>
+<key name="boundari"> 64, </key>
+<key name="boundary"> 13,25,64,43,45, </key>
+<key name="box"> 17,1,19,21,23,6,24,7,26,8,27,28,30,11,12,57,31,59,35,63,64,66,39,40,67,41,42,68,43,69,45,46,70,48,49,50,51,52,72, </key>
+<key name="box_1"> 61, </key>
+<key name="box_cyl"> 69, </key>
+<key name="box1"> 66,70, </key>
+<key name="box2"> 66,70, </key>
+<key name="broken"> 1,37, </key>
+<key name="brown"> 25, </key>
+<key name="brows"> 0,17,1,22,23,24,25,9,30,65,39,40,68,52, </key>
+<key name="build"> 8,11,33,61,63,37,64,67,69, </key>
+<key name="built"> 20,24,12,64,45, </key>
+<key name="button"> 17,1,18,20,2,21,5,23,24,7,25,26,9,27,28,30,11,12,31,32,36,64,38,39,40,67,41,68,43,44,45,46,47,48,49,50,51,52,73,53,54, </key>
+<key name="cad"> 14, </key>
+<key name="cal"> 64, </key>
+<key name="calculat"> 16,20,2,33,47, </key>
+<key name="calculation"> 13,18,32,36, </key>
+<key name="careful"> 39, </key>
+<key name="cas"> 17,23,6,8,28,12,64,52, </key>
+<key name="cc"> 61, </key>
+<key name="cel"> 25,63,39,50, </key>
+<key name="cent"> 12,45,53, </key>
+<key name="central"> 12, </key>
+<key name="centroid"> 45, </key>
+<key name="centroidal"> 45, </key>
+<key name="centroidal_smooth"> 61, </key>
+<key name="certain"> 25,64, </key>
+<key name="chang"> 0,19,21,6,28,61,37,38, </key>
+<key name="characteristic"> 16, </key>
+<key name="characteriz"> 14, </key>
+<key name="check"> 25,63,66,43,53, </key>
+<key name="checkbox"> 17,63,68,48, </key>
+<key name="choic"> 13,23,64, </key>
+<key name="choos"> 17,1,18,20,2,21,22,7,25,26,9,27,28,10,29,11,12,31,32,35,36,64,39,40,67,41,42,68,43,44,46,47,48,49,50,73,54, </key>
+<key name="chosen"> 20,26,33,34,49, </key>
+<key name="circl"> 12,70, </key>
+<key name="circlemesh"> 70, </key>
+<key name="circular"> 61, </key>
+<key name="clas"> 62, </key>
+<key name="clear"> 62,68, </key>
+<key name="click"> 0,17,1,18,20,2,21,5,22,23,24,7,25,26,9,27,28,29,30,11,12,31,32,36,64,65,38,39,40,67,42,68,43,44,45,47,49,50,51,52,73,53,54, </key>
 <key name="clip"> 0,5, </key>
-<key name="clos"> 13,19,8,42, </key>
-<key name="co"> 60,42, </key>
-<key name="coars"> 18, </key>
-<key name="coincid"> 58, </key>
-<key name="coincident"> 58,34, </key>
-<key name="color"> 15,0,17,19,2,24,31,35,43,46,69,52,53, </key>
-<key name="combin"> 9,31,62,65, </key>
-<key name="common"> 26,65,49, </key>
-<key name="compar"> 18,42, </key>
-<key name="complete"> 58, </key>
-<key name="complex"> 1, </key>
-<key name="component"> 59,41, </key>
-<key name="compos"> 12,13,14,15,0,18,2,28,32,33,43, </key>
-<key name="compound"> 6,7, </key>
-<key name="comput"> 0,18,22,6,7,56,60,61,63,42,66,68, </key>
-<key name="computation"> 22,23,7,56,60, </key>
-<key name="concept"> 36, </key>
-<key name="condition"> 12,24, </key>
-<key name="confirm"> 20,25,29,38,44,48,50, </key>
-<key name="confirmation"> 24, </key>
-<key name="conform"> 12,36,42,66, </key>
-<key name="conformity"> 19, </key>
-<key name="connect"> 18,25,44, </key>
-<key name="connection"> 13,15,3,4,59,63, </key>
-<key name="connectivity"> 61, </key>
-<key name="consid"> 19,22, </key>
-<key name="consider"> 13,19,2,42, </key>
-<key name="consist"> 15,1,17,18,19,3,4,21,22,23,24,54,55,56,32,31,35,33,46, </key>
-<key name="consol"> 51, </key>
-<key name="constant"> 18, </key>
-<key name="construct"> 18,21,22,6,23,37, </key>
-<key name="construction"> 18,22,6,23, </key>
-<key name="contain"> 13,14,20,22,23,24,25,30,32,61,44,48, </key>
-<key name="content"> 8,52, </key>
-<key name="continu"> 44, </key>
-<key name="contour"> 13,42, </key>
-<key name="contrast"> 48, </key>
-<key name="control"> 15,0,17,19,2,3,4,25,54,55,57,31,59,35,63,43,46,48,69,53, </key>
-<key name="converg"> 44, </key>
-<key name="conversion"> 18, </key>
-<key name="coordinat"> 13,16,27,61,52, </key>
-<key name="copy"> 40,65,45,66,47, </key>
-<key name="corn"> 1,53, </key>
-<key name="corner"> 25,44,53, </key>
-<key name="correspond"> 13,15,30,60,61,63,65,42,47, </key>
-<key name="cosal"> 60, </key>
-<key name="could"> 13,16, </key>
-<key name="count"> 42, </key>
-<key name="counterclockwis"> 61, </key>
-<key name="cours"> 22, </key>
-<key name="creat"> 13,14,0,16,1,18,5,22,6,23,24,7,29,56,34,59,60,36,61,63,37,40,65,45,66,47,50,53, </key>
-<key name="createanddisplaygo"> 7, </key>
-<key name="createarea"> 56,63, </key>
-<key name="createaspectratio"> 63, </key>
-<key name="createaspectratio3d"> 63, </key>
-<key name="createequalto"> 56,63, </key>
-<key name="createfilt"> 56,63, </key>
-<key name="createfiltermanag"> 56,60,63, </key>
-<key name="createfreeborder"> 63, </key>
-<key name="createfreeedg"> 63, </key>
-<key name="creategroup"> 56,60,63, </key>
-<key name="creategroupfromgeom"> 56, </key>
-<key name="createhypothesi"> 6,7,56,60,63,68, </key>
-<key name="createlength"> 63, </key>
-<key name="createlength2d"> 63, </key>
-<key name="createlessthan"> 56,63, </key>
-<key name="createmesh"> 6,7,56,60,63,68, </key>
-<key name="createminimumangl"> 60,63, </key>
-<key name="createmorethan"> 56,63, </key>
-<key name="createmulticonnection"> 63, </key>
-<key name="createmulticonnection2d"> 63, </key>
-<key name="createskew"> 63, </key>
-<key name="createtap"> 63, </key>
-<key name="createvolume3d"> 63, </key>
-<key name="createwarp"> 63, </key>
-<key name="creation"> 13,36,61,37,50, </key>
-<key name="criteria"> 59,65, </key>
-<key name="criterion"> 17,19,2,24,25,56,57,31,35,63,65,43,46,48,69,53, </key>
-<key name="cros"> 0,5,53, </key>
-<key name="cubic"> 14, </key>
-<key name="current"> 20,22,25,37,65,42,48, </key>
-<key name="curv"> 13,18,11, </key>
-<key name="curvilinear"> 18,11, </key>
-<key name="cut"> 18,6,25,7,56,60,66,50, </key>
-<key name="cutgroup"> 56, </key>
-<key name="cylind"> 60, </key>
-<key name="d"> 18, </key>
-<key name="deal"> 13, </key>
-<key name="def"> 60, </key>
-<key name="default"> 0,22,11,62,65,67,52, </key>
-<key name="defin"> 13,14,1,18,19,5,22,6,23,24,7,11,60,36,61,42,66,52, </key>
-<key name="definit"> 13,15,18,20,21,24,25,59,37,38,48, </key>
-<key name="definition"> 0,18,32,33, </key>
-<key name="deflection"> 12,18,7,59, </key>
-<key name="deflection1d"> 7, </key>
-<key name="deform"> 52, </key>
-<key name="degre"> 19,5, </key>
-<key name="delet"> 8,55,60,38,65, </key>
-<key name="deletediag"> 60, </key>
-<key name="deletion"> 38,49, </key>
-<key name="density"> 18, </key>
-<key name="depend"> 12,13,22,32,33, </key>
-<key name="describ"> 13,61, </key>
-<key name="description"> 61, </key>
-<key name="desirabl"> 34, </key>
-<key name="desktop"> 41, </key>
-<key name="destin"> 13,15,59, </key>
-<key name="detail"> 12,0, </key>
-<key name="detect"> 34, </key>
-<key name="dh"> 60, </key>
-<key name="diagonal"> 25,26,60,46, </key>
-<key name="dialog"> 14,16,1,18,20,22,23,25,26,27,29,10,11,30,58,34,61,38,39,64,40,42,44,45,47,48,49,50, </key>
-<key name="diamet"> 19, </key>
-<key name="dif"> 1, </key>
-<key name="differ"> 18, </key>
-<key name="differenc"> 11,42, </key>
-<key name="different"> 12,16,24,37,65,42, </key>
-<key name="dimension"> 13,2,22,10,64,51, </key>
-<key name="direct"> 13,42,44, </key>
-<key name="direction"> 61,53, </key>
-<key name="dirstruct"> 60,66, </key>
-<key name="discretisation"> 6,7, </key>
-<key name="discretiz"> 10,64, </key>
-<key name="discretization"> 13,14, </key>
-<key name="displac"> 27, </key>
-<key name="display"> 15,0,1,17,19,2,3,20,22,23,24,25,7,27,9,28,54,31,35,62,43,44,46,48,51,69,52,53, </key>
-<key name="distanc"> 18,5,61,52,53, </key>
-<key name="distinguish"> 24, </key>
-<key name="distortion"> 44, </key>
-<key name="distribution"> 18, </key>
-<key name="divid"> 18, </key>
-<key name="do"> 16, </key>
-<key name="domain"> 61, </key>
-<key name="don"> 13,22,36,52, </key>
+<key name="clos"> 14,20,9,12,61,43, </key>
+<key name="co"> 61,43, </key>
+<key name="coars"> 19,7,63, </key>
+<key name="coincid"> 59, </key>
+<key name="coincident"> 12,59,35, </key>
+<key name="color"> 16,0,18,20,2,25,32,36,44,47,73,53,54, </key>
+<key name="combin"> 10,32,65,68, </key>
+<key name="command"> 57,61,66,70, </key>
+<key name="common"> 27,68,50, </key>
+<key name="comp"> 66, </key>
+<key name="compar"> 19,43, </key>
+<key name="complete"> 59, </key>
+<key name="complex"> 1,12, </key>
+<key name="component"> 60,42, </key>
+<key name="compos"> 13,14,15,16,0,19,2,29,33,34,44, </key>
+<key name="compound"> 66, </key>
+<key name="comput"> 0,19,23,6,8,57,61,64,66,43,69,70,72, </key>
+<key name="computation"> 23,24,8,61, </key>
+<key name="con"> 69, </key>
+<key name="concept"> 37, </key>
+<key name="condition"> 13,25, </key>
+<key name="confirm"> 21,26,30,39,45,49,51, </key>
+<key name="confirmation"> 25, </key>
+<key name="conform"> 13,37,43,70, </key>
+<key name="conformity"> 20, </key>
+<key name="connect"> 19,26,45, </key>
+<key name="connection"> 14,16,3,4,60,66, </key>
+<key name="connectivity"> 64, </key>
+<key name="consid"> 20,23, </key>
+<key name="consider"> 14,20,2,43, </key>
+<key name="consist"> 16,1,18,19,20,3,4,22,23,24,25,12,55,56,57,33,32,36,34,47, </key>
+<key name="consol"> 52, </key>
+<key name="constant"> 19, </key>
+<key name="construct"> 15,19,22,23,6,24,38, </key>
+<key name="construction"> 19,23,6,24, </key>
+<key name="contain"> 14,15,21,23,24,25,26,12,31,33,64,45,49, </key>
+<key name="content"> 9,53, </key>
+<key name="continu"> 45, </key>
+<key name="contour"> 14,43, </key>
+<key name="contrast"> 49, </key>
+<key name="control"> 16,0,18,20,2,3,4,26,55,56,58,32,60,36,66,44,47,49,73,54, </key>
+<key name="converg"> 45, </key>
+<key name="conversion"> 19,7, </key>
+<key name="convert"> 7, </key>
+<key name="coordinat"> 14,17,28,64,53, </key>
+<key name="copi"> 70, </key>
+<key name="copy"> 41,68,46,70,48, </key>
+<key name="corn"> 1,54, </key>
+<key name="corner"> 26,12,45,54, </key>
+<key name="correspond"> 14,16,31,64,66,68,43,48, </key>
+<key name="cos_bot"> 61, </key>
+<key name="cos_top"> 61, </key>
+<key name="cosal"> 61, </key>
+<key name="cot"> 69, </key>
+<key name="could"> 14,17, </key>
+<key name="count"> 43, </key>
+<key name="counterclockwis"> 64, </key>
+<key name="cours"> 23, </key>
+<key name="cover"> 12, </key>
+<key name="creat"> 14,0,17,1,19,5,23,6,24,25,8,30,57,35,60,61,63,37,64,66,38,41,68,69,46,70,48,51,72,54, </key>
+<key name="createarea"> 57,66, </key>
+<key name="createaspectratio"> 66, </key>
+<key name="createaspectratio3d"> 66, </key>
+<key name="createemptymesh"> 61, </key>
+<key name="createequalto"> 57,66, </key>
+<key name="createfilt"> 57,66, </key>
+<key name="createfiltermanag"> 57,61,66, </key>
+<key name="createfreeborder"> 66, </key>
+<key name="createfreeedg"> 66, </key>
+<key name="creategroup"> 57,61,66,69, </key>
+<key name="creategroupfromgeom"> 61, </key>
+<key name="createhypothesi"> 61, </key>
+<key name="createlength"> 66, </key>
+<key name="createlength2d"> 66, </key>
+<key name="createlessthan"> 57,66, </key>
+<key name="createminimumangl"> 61,66, </key>
+<key name="createmorethan"> 57,66, </key>
+<key name="createmulticonnection"> 66, </key>
+<key name="createmulticonnection2d"> 66, </key>
+<key name="createpolyedr"> 70, </key>
+<key name="createpolygon"> 70, </key>
+<key name="createskew"> 66, </key>
+<key name="createtap"> 66, </key>
+<key name="createvolume3d"> 66, </key>
+<key name="createwarp"> 66, </key>
+<key name="creation"> 14,37,64,38,62,69,51, </key>
+<key name="criteria"> 60,68, </key>
+<key name="criterion"> 18,20,2,25,26,57,58,32,36,66,68,44,47,49,73,54, </key>
+<key name="cros"> 0,5,54, </key>
+<key name="cubic"> 15, </key>
+<key name="current"> 21,23,26,63,38,68,43,49, </key>
+<key name="curv"> 14,19,12,61, </key>
+<key name="curvilinear"> 19,12, </key>
+<key name="custom"> 63, </key>
+<key name="cut"> 19,6,26,8,57,61,51, </key>
+<key name="cutgroup"> 57, </key>
+<key name="cyl"> 8,69, </key>
+<key name="cylind"> 8,69, </key>
+<key name="d"> 19, </key>
+<key name="data"> 62, </key>
+<key name="dd"> 61, </key>
+<key name="deal"> 14, </key>
+<key name="def"> 6,61,62, </key>
+<key name="default"> 0,23,12,57,63,65,68,71,53, </key>
+<key name="defin"> 14,15,1,19,20,5,23,6,24,25,8,12,61,63,37,64,62,43,69,70,53, </key>
+<key name="definit"> 14,16,19,21,22,25,26,60,38,39,49, </key>
+<key name="definition"> 0,19,6,12,33,63,34, </key>
+<key name="deflection"> 13,19,8,60, </key>
+<key name="deflection1d"> 8, </key>
+<key name="deform"> 53, </key>
+<key name="degre"> 20,5, </key>
+<key name="delet"> 9,56,61,39,68, </key>
+<key name="deletediag"> 61, </key>
+<key name="deletion"> 39,50, </key>
+<key name="density"> 19, </key>
+<key name="depend"> 13,14,23,33,34, </key>
+<key name="describ"> 14,15,64, </key>
+<key name="description"> 64, </key>
+<key name="desirabl"> 35, </key>
+<key name="desktop"> 42, </key>
+<key name="destin"> 14,16,60,62, </key>
+<key name="detail"> 13,15,0, </key>
+<key name="detalization"> 63, </key>
+<key name="detect"> 35, </key>
+<key name="dh"> 61, </key>
+<key name="di1"> 69, </key>
+<key name="diagonal"> 26,27,61,47, </key>
+<key name="dialog"> 17,1,19,21,23,24,7,26,27,28,30,11,12,31,59,35,64,39,40,67,41,43,45,46,48,49,50,51, </key>
+<key name="diamet"> 20, </key>
+<key name="dif"> 1,63, </key>
+<key name="differ"> 19, </key>
+<key name="differenc"> 12,43, </key>
+<key name="different"> 13,17,25,12,38,68,43, </key>
+<key name="digit"> 12, </key>
+<key name="dimension"> 14,2,23,11,63,67,52, </key>
+<key name="direct"> 14,6,57,61,66,43,45,70, </key>
+<key name="direction"> 12,64,54, </key>
+<key name="dirstruct"> 61,70, </key>
+<key name="discretiz"> 11,67, </key>
+<key name="discretization"> 14,15, </key>
+<key name="displac"> 28, </key>
+<key name="display"> 16,0,1,18,20,2,3,21,23,24,25,26,28,10,29,55,32,36,65,44,45,47,49,52,73,53,54, </key>
+<key name="distanc"> 19,5,64,53,54, </key>
+<key name="distinguish"> 25, </key>
+<key name="distortion"> 45, </key>
+<key name="distribution"> 19, </key>
+<key name="divid"> 19, </key>
+<key name="do"> 17, </key>
+<key name="docopy"> 70, </key>
+<key name="documentation"> 62, </key>
+<key name="doesn"> 57,61,66,70, </key>
+<key name="domain"> 64, </key>
+<key name="don"> 14,23,12,61,37,53, </key>
 <key name="doubl"> 1, </key>
-<key name="downward"> 52, </key>
-<key name="dr"> 60, </key>
-<key name="drag"> 52, </key>
-<key name="drawn"> 52, </key>
-<key name="dump"> 0,52, </key>
-<key name="dx"> 60, </key>
-<key name="dy"> 60, </key>
-<key name="e"> 19,22,23,25,61,42,48, </key>
-<key name="easi"> 21, </key>
-<key name="edg"> 12,13,14,15,0,16,1,18,19,3,4,21,22,6,24,25,7,26,27,9,11,54,55,56,57,32,31,59,60,36,61,63,65,42,44,66,48,49,68,53, </key>
-<key name="edgeslist"> 66, </key>
-<key name="edgex111"> 6,7, </key>
-<key name="edgex112"> 6,7, </key>
-<key name="edgex121"> 6,7, </key>
-<key name="edgex122"> 6,7, </key>
-<key name="edgey11"> 6,7, </key>
-<key name="edgey12"> 6,7, </key>
-<key name="edgey21"> 6,7, </key>
-<key name="edgey22"> 6,7, </key>
-<key name="edgez111"> 6,7, </key>
-<key name="edgez121"> 6,7, </key>
-<key name="edgez211"> 6,7, </key>
-<key name="edgez221"> 6,7, </key>
-<key name="edit"> 6,8,29,56,34,37, </key>
-<key name="effect"> 48, </key>
-<key name="eith"> 61,42, </key>
-<key name="element"> 12,13,14,15,0,16,1,17,18,19,2,4,20,21,24,25,7,8,26,27,28,29,10,11,55,56,32,31,58,59,35,60,33,36,61,63,38,39,64,40,65,42,43,44,45,46,66,47,48,50,51,69,53, </key>
-<key name="els"> 7,56,60,61, </key>
-<key name="enabl"> 65, </key>
-<key name="encapsulat"> 23, </key>
-<key name="encounter"> 61, </key>
-<key name="end"> 12,18,7,59,36,65,42,47, </key>
-<key name="enough"> 42, </key>
-<key name="ent"> 24,26,27,30,49, </key>
-<key name="entiti"> 13,14, </key>
-<key name="entity"> 13,0,9,65, </key>
-<key name="equal"> 18,32,61,65,42,44, </key>
-<key name="equidistant"> 18, </key>
-<key name="equilateral"> 19, </key>
+<key name="downward"> 53, </key>
+<key name="dr"> 61, </key>
+<key name="drag"> 53, </key>
+<key name="drawn"> 53, </key>
+<key name="dump"> 0,53, </key>
+<key name="duplicat"> 12, </key>
+<key name="dx"> 61, </key>
+<key name="dy"> 61, </key>
+<key name="e"> 20,23,24,26,12,63,64,43,49, </key>
+<key name="e_arc"> 8, </key>
+<key name="e_straight"> 8, </key>
+<key name="e1"> 61, </key>
+<key name="easi"> 22, </key>
+<key name="easy"> 62, </key>
+<key name="edg"> 13,14,15,16,0,17,1,19,20,3,4,22,23,6,25,26,8,27,28,10,12,55,56,57,58,33,32,60,61,63,37,64,66,68,43,45,70,49,50,72,54, </key>
+<key name="edge_"> 61, </key>
+<key name="edge_bezierrr"> 61, </key>
+<key name="edge_bezierrr_mesh"> 61, </key>
+<key name="edge_circl"> 61, </key>
+<key name="edge_circle_mesh"> 61, </key>
+<key name="edge_straight"> 61, </key>
+<key name="edge_straight_mesh"> 61, </key>
+<key name="edge1"> 70, </key>
+<key name="edgeslist"> 70, </key>
+<key name="edgex"> 6,8, </key>
+<key name="edit"> 6,9,30,57,35,38, </key>
+<key name="edition"> 62,69, </key>
+<key name="editor_1"> 61, </key>
+<key name="editor_2"> 61, </key>
+<key name="editor_3"> 61, </key>
+<key name="editor_4"> 61, </key>
+<key name="editor_5"> 61, </key>
+<key name="editor_6"> 61, </key>
+<key name="editor_7"> 61, </key>
+<key name="ee_1"> 61, </key>
+<key name="ee_2"> 61, </key>
+<key name="ee_3"> 61, </key>
+<key name="ee_4"> 61, </key>
+<key name="ee_5"> 61, </key>
+<key name="ee_6"> 61, </key>
+<key name="ee_7"> 61, </key>
+<key name="effect"> 49, </key>
+<key name="eith"> 64,43, </key>
+<key name="element"> 13,14,15,16,0,17,1,18,19,20,2,4,21,22,7,25,26,8,9,27,28,29,30,11,12,56,57,33,32,59,60,36,61,63,37,34,64,66,39,40,67,41,68,43,44,45,46,47,70,48,49,51,52,73,54, </key>
+<key name="els"> 6,8,61,64, </key>
+<key name="empty"> 61, </key>
+<key name="enabl"> 68, </key>
+<key name="encapsulat"> 24, </key>
+<key name="encounter"> 64, </key>
+<key name="end"> 13,19,8,60,37,68,43,48, </key>
+<key name="enough"> 43, </key>
+<key name="ent"> 25,27,28,31,50, </key>
+<key name="entiti"> 14,15, </key>
+<key name="entity"> 14,0,10,68, </key>
+<key name="equal"> 19,33,64,68,43,45, </key>
+<key name="equidistant"> 19, </key>
+<key name="equilateral"> 20, </key>
 <key name="eras"> 0, </key>
-<key name="etc"> 15,2,25,48, </key>
-<key name="even"> 22,32, </key>
-<key name="eventual"> 61, </key>
-<key name="every"> 53, </key>
-<key name="everyth"> 22, </key>
-<key name="exampl"> 13,2,22,24,61,50, </key>
-<key name="exce"> 18, </key>
-<key name="exceed"> 44, </key>
-<key name="except"> 42,52, </key>
-<key name="exist"> 12,20,24,25,29,61,65,48, </key>
-<key name="existenc"> 22, </key>
-<key name="exponent"> 18, </key>
-<key name="export"> 0,6,30,59,52, </key>
-<key name="exportation"> 30, </key>
+<key name="error"> 61, </key>
+<key name="etc"> 16,2,26,49, </key>
+<key name="even"> 23,33,63, </key>
+<key name="eventual"> 64, </key>
+<key name="every"> 54, </key>
+<key name="everyth"> 23, </key>
+<key name="ex21_lamp"> 69, </key>
+<key name="examin"> 12, </key>
+<key name="exampl"> 14,2,23,6,25,12,64,62,69,51, </key>
+<key name="exce"> 19, </key>
+<key name="exceed"> 45, </key>
+<key name="except"> 43,53, </key>
+<key name="exist"> 13,21,25,26,30,64,68,49, </key>
+<key name="existenc"> 23, </key>
+<key name="explod"> 61, </key>
+<key name="exponent"> 19, </key>
+<key name="export"> 0,6,31,60,53, </key>
+<key name="exportation"> 31, </key>
 <key name="exportm"> 6, </key>
-<key name="extend"> 52,53, </key>
-<key name="extreme"> 18, </key>
+<key name="extend"> 53,54, </key>
+<key name="external"> 12, </key>
+<key name="extreme"> 19, </key>
 <key name="extremiti"> 5, </key>
-<key name="extrud"> 10,11,60,64, </key>
-<key name="extrusion"> 10,11,60,66, </key>
-<key name="extrusionalongpathobject"> 60,66, </key>
-<key name="extrusionsweepobject"> 60, </key>
-<key name="f"> 18,7, </key>
-<key name="fac"> 12,13,14,0,16,18,2,3,21,22,6,23,24,7,9,54,56,32,59,60,36,61,63,65,42,66,51,68,53, </key>
-<key name="face_1"> 60, </key>
-<key name="face_2"> 60, </key>
-<key name="face1"> 7,60,66, </key>
-<key name="facelist"> 63, </key>
-<key name="facesrotat"> 60, </key>
-<key name="facessmooth"> 60, </key>
-<key name="facestritoquad"> 60, </key>
-<key name="facex11"> 6,7, </key>
-<key name="facex21"> 6,7, </key>
-<key name="facey111"> 6,7, </key>
-<key name="facey121"> 6,7, </key>
-<key name="facez11"> 6,7, </key>
-<key name="facez12"> 6,7, </key>
-<key name="factor"> 18,25, </key>
-<key name="factoryserv"> 6,7,56,60,63,68, </key>
-<key name="fail"> 60, </key>
-<key name="far"> 42, </key>
-<key name="fashion"> 11, </key>
-<key name="fast"> 44, </key>
-<key name="featur"> 24, </key>
-<key name="field"> 16,1,20,24,26,27,39,65,42,44,48,49, </key>
-<key name="fifth"> 42, </key>
-<key name="fil"> 30,61,65, </key>
-<key name="fill"> 63,39,42, </key>
-<key name="filt"> 20,24,25,65,48, </key>
-<key name="filter"> 24,65, </key>
-<key name="fin"> 18, </key>
-<key name="find"> 30,61,42, </key>
-<key name="findcoincidentnod"> 66, </key>
-<key name="findorloadcomponent"> 6,7,56,60,63,68, </key>
-<key name="finenes"> 18, </key>
-<key name="first"> 1,18,22,56,60,36,61,42, </key>
-<key name="fit"> 52, </key>
-<key name="fiv"> 60, </key>
-<key name="fix"> 13,6,7,44,66, </key>
-<key name="flag"> 61, </key>
-<key name="fold"> 22,23, </key>
-<key name="follow"> 12,13,14,16,1,2,20,22,23,24,25,26,27,28,29,10,11,34,61,38,39,64,40,42,44,45,47,48,49,50,51, </key>
-<key name="font"> 52, </key>
-<key name="form"> 1,26,29,61,42, </key>
-<key name="format"> 0,30,59,52, </key>
-<key name="formula"> 18,19,2, </key>
-<key name="four"> 13,19,53, </key>
-<key name="fourth"> 60, </key>
-<key name="fram"> 52, </key>
-<key name="fre"> 13,15,54,55,59,63,42,44,66, </key>
-<key name="function"> 13, </key>
-<key name="functionaliti"> 52, </key>
-<key name="functionality"> 22,30,58,34,42,52, </key>
-<key name="futur"> 18, </key>
-<key name="g"> 23, </key>
-<key name="gaus"> 52, </key>
-<key name="generat"> 12,13,15,18,22,59,36,61, </key>
-<key name="generation"> 10,61,64, </key>
-<key name="geom"> 13,7,59,60, </key>
-<key name="geometric"> 13,15,7, </key>
-<key name="geometrical"> 12,13,14,18,22,23,24,32,59,33,61,37,40,44,45,47,51, </key>
-<key name="geometry"> 23,24,56,60,44, </key>
-<key name="geompy"> 6,7,56,60,63,66,68, </key>
-<key name="get"> 0,5,22,7,11,61,51, </key>
-<key name="getalgorithm"> 60, </key>
-<key name="getborder"> 63, </key>
-<key name="getelementsid"> 56,63, </key>
-<key name="geterrorcod"> 60, </key>
-<key name="getid"> 6, </key>
-<key name="getlistofid"> 56, </key>
-<key name="getmaxelementarea"> 6,7, </key>
-<key name="getmaxelementvolum"> 6,7, </key>
-<key name="getmesh"> 60,66, </key>
-<key name="getmesheditor"> 60,63,66, </key>
-<key name="getnam"> 6,7, </key>
-<key name="getnumberofsegment"> 6,7, </key>
-<key name="getpattern"> 60, </key>
-<key name="gg"> 7, </key>
-<key name="giv"> 65,51, </key>
-<key name="given"> 18,32,42, </key>
-<key name="global"> 52, </key>
-<key name="go"> 60, </key>
-<key name="good"> 44, </key>
-<key name="got"> 61, </key>
-<key name="graduat"> 52, </key>
+<key name="extrud"> 11,12,61,67, </key>
+<key name="extrusion"> 11,12,61,70, </key>
+<key name="extrusionalongpath"> 61, </key>
+<key name="extrusionalongpathobject"> 70, </key>
+<key name="extrusionsweepobject"> 61, </key>
+<key name="exy"> 8, </key>
+<key name="f"> 19,8, </key>
+<key name="f1"> 61, </key>
+<key name="f2"> 61, </key>
+<key name="f3"> 61, </key>
+<key name="f4"> 61, </key>
+<key name="f5"> 61, </key>
+<key name="fac"> 13,14,15,0,17,19,2,3,22,23,6,24,25,8,10,12,55,57,33,60,61,63,37,64,66,68,43,69,70,52,72,54, </key>
+<key name="face_1"> 61, </key>
+<key name="face_2"> 61, </key>
+<key name="face1"> 8,70, </key>
+<key name="face2"> 70, </key>
+<key name="facelist"> 66, </key>
+<key name="faceslist1"> 70, </key>
+<key name="faceslist2"> 70, </key>
+<key name="facesrotat"> 61, </key>
+<key name="factor"> 19,26, </key>
+<key name="factoryserv"> 62, </key>
+<key name="fail"> 61, </key>
+<key name="far"> 43, </key>
+<key name="fashion"> 12, </key>
+<key name="fast"> 45, </key>
+<key name="featur"> 25, </key>
+<key name="ff"> 61, </key>
+<key name="ff_1"> 61, </key>
+<key name="ff_2"> 61, </key>
+<key name="ff_3"> 61, </key>
+<key name="ff_4"> 61, </key>
+<key name="ff_5"> 61, </key>
+<key name="ff_6"> 61, </key>
+<key name="ff_7"> 61, </key>
+<key name="field"> 17,1,21,25,27,28,40,68,43,45,49,50, </key>
+<key name="fifth"> 43, </key>
+<key name="fil"> 6,31,64,68, </key>
+<key name="fill"> 66,40,43, </key>
+<key name="filt"> 21,25,26,68,49, </key>
+<key name="filter"> 25,68, </key>
+<key name="fin"> 19,63, </key>
+<key name="find"> 31,64,43, </key>
+<key name="findcoincidentnod"> 70, </key>
+<key name="findorloadcomponent"> 62, </key>
+<key name="finenes"> 19,63, </key>
+<key name="first"> 1,19,23,6,12,57,61,37,64,43, </key>
+<key name="firstnodeid1"> 70, </key>
+<key name="firstnodeid2"> 70, </key>
+<key name="firstnodeidonfreebord"> 70, </key>
+<key name="firstnodeidonsid"> 70, </key>
+<key name="fit"> 53, </key>
+<key name="fiv"> 61, </key>
+<key name="fix"> 14,6,8,45, </key>
+<key name="flag"> 64, </key>
+<key name="fold"> 23,24, </key>
+<key name="follow"> 13,14,15,17,1,2,21,23,24,7,25,26,27,28,29,30,11,12,35,61,64,39,40,67,41,43,45,46,48,49,50,51,52, </key>
+<key name="font"> 53, </key>
+<key name="form"> 1,27,30,64,43, </key>
+<key name="format"> 0,31,60,53, </key>
+<key name="formula"> 19,20,2, </key>
+<key name="four"> 14,20,54, </key>
+<key name="fourth"> 61, </key>
+<key name="fram"> 53, </key>
+<key name="fre"> 14,16,55,56,60,66,43,45,70, </key>
+<key name="function"> 14,62, </key>
+<key name="functionaliti"> 53, </key>
+<key name="functionality"> 23,7,31,59,35,43,53, </key>
+<key name="fus"> 69, </key>
+<key name="futur"> 19, </key>
+<key name="g"> 24, </key>
+<key name="gaus"> 53, </key>
+<key name="gen"> 61,66, </key>
+<key name="generat"> 13,14,16,19,23,60,37,64, </key>
+<key name="generation"> 6,11,64,67,69, </key>
+<key name="geom"> 14,60, </key>
+<key name="geometric"> 14,16,8, </key>
+<key name="geometrical"> 13,14,15,19,23,24,25,33,60,34,64,38,41,45,46,48,52, </key>
+<key name="geometry"> 24,7,25,57,61,69,45, </key>
+<key name="geompy"> 6,8,57,61,66,69,70,72, </key>
+<key name="get"> 0,5,23,8,12,57,64,52, </key>
+<key name="getborder"> 66, </key>
+<key name="getedgenearpoint"> 6,8, </key>
+<key name="getelementsid"> 57,66, </key>
+<key name="geterrorcod"> 61, </key>
+<key name="getlistofid"> 57, </key>
+<key name="getmesh"> 6,61,66,70,72, </key>
+<key name="getmesheditor"> 61,66,70, </key>
+<key name="getnam"> 62, </key>
+<key name="getpattern"> 61, </key>
+<key name="ghs3d"> 62, </key>
+<key name="giv"> 68,52, </key>
+<key name="given"> 19,33,61,43, </key>
+<key name="global"> 8,53, </key>
+<key name="glu"> 66, </key>
+<key name="good"> 6,45, </key>
+<key name="got"> 64, </key>
+<key name="graduat"> 53, </key>
 <key name="graphical"> 0, </key>
-<key name="great"> 18,52, </key>
-<key name="greatest"> 19,2, </key>
-<key name="green"> 24, </key>
-<key name="group"> 20,21,24,25,8,29,11,56,34,59,60,63,65,44,47,48,50,51, </key>
-<key name="group1"> 50, </key>
-<key name="group12"> 50, </key>
-<key name="group12a"> 50, </key>
-<key name="group12b"> 50, </key>
-<key name="group2"> 50, </key>
-<key name="grouprotat"> 60, </key>
-<key name="groupsmooth"> 60, </key>
-<key name="groupsofnod"> 66, </key>
-<key name="grouptritoquad"> 60, </key>
-<key name="h"> 53, </key>
-<key name="half"> 19,53, </key>
+<key name="great"> 19,53, </key>
+<key name="greatest"> 20,2, </key>
+<key name="green"> 25,12, </key>
+<key name="group"> 21,22,25,26,9,30,12,57,35,60,61,66,68,69,45,48,49,51,52, </key>
+<key name="group_nam"> 69, </key>
+<key name="group1"> 51, </key>
+<key name="group12"> 51, </key>
+<key name="group12a"> 51, </key>
+<key name="group12b"> 51, </key>
+<key name="group2"> 51, </key>
+<key name="grouprotat"> 61, </key>
+<key name="groupsmooth"> 61, </key>
+<key name="groupsofnod"> 70, </key>
+<key name="grouptri"> 61, </key>
+<key name="growth"> 63, </key>
+<key name="h"> 54, </key>
+<key name="half"> 20,54, </key>
 <key name="halv"> 5, </key>
-<key name="hav"> 19,32,36,61, </key>
-<key name="hedron"> 60, </key>
-<key name="height"> 53, </key>
-<key name="helical"> 11, </key>
-<key name="help"> 15, </key>
-<key name="henc"> 61, </key>
-<key name="her"> 61, </key>
-<key name="hexa"> 6,7, </key>
-<key name="hexa_3d"> 7, </key>
-<key name="hexa3d"> 7, </key>
-<key name="hexagon"> 11, </key>
-<key name="hexahedral"> 14,6,7, </key>
-<key name="hexahedralization"> 22, </key>
-<key name="hexahedrical"> 6,7, </key>
-<key name="hexahedron"> 13,14,16,2,7,60,33,68, </key>
-<key name="hh"> 60, </key>
-<key name="hid"> 0,52, </key>
-<key name="high"> 13, </key>
-<key name="highlight"> 3,4,20,24,25,54,55,48, </key>
-<key name="hmax"> 19, </key>
-<key name="hol"> 55, </key>
-<key name="hold"> 61, </key>
-<key name="how"> 11,37, </key>
-<key name="hyp"> 23, </key>
-<key name="hyp1"> 6,63,68, </key>
-<key name="hyp2"> 6,63,68, </key>
-<key name="hyp3"> 6,68, </key>
-<key name="hyp4"> 6,68, </key>
-<key name="hyparea"> 6,7, </key>
-<key name="hypnbseg"> 6,7,56, </key>
-<key name="hypothes"> 12,0,18,22,23,7,56,32,59,36,37, </key>
-<key name="hypothesi"> 12,18,22,6,7,56,32,33,36,37,66,68, </key>
-<key name="hypvolum"> 6,7, </key>
-<key name="i"> 19,22,25,56,60,61,63,42,48, </key>
-<key name="icon"> 29,38,41, </key>
-<key name="id"> 0,18,20,24,25,26,27,28,10,11,64,42,44,48,49, </key>
-<key name="id_arc"> 7, </key>
-<key name="id_circl"> 60,66, </key>
-<key name="id_fac"> 7, </key>
-<key name="id_face1"> 7,60,66, </key>
-<key name="idbox"> 6,7,56,63,68, </key>
-<key name="idcomp"> 66, </key>
-<key name="idea"> 11, </key>
-<key name="idedg"> 6,68, </key>
-<key name="idfac"> 56, </key>
-<key name="idtoobject"> 6,63,66,68, </key>
-<key name="if"> 13,16,5,22,6,23,7,10,11,56,32,60,36,61,37,38,64,65,42,44,48,52, </key>
-<key name="ii"> 60, </key>
-<key name="imag"> 0,11,52, </key>
-<key name="imp"> 13, </key>
-<key name="import"> 6,7,56,30,59,60,63,66,68, </key>
-<key name="importation"> 30, </key>
-<key name="importcomponentgui"> 6,7,63, </key>
-<key name="includ"> 13,51, </key>
-<key name="increas"> 6,7,66, </key>
-<key name="index"> 24,61, </key>
-<key name="indic"> 61, </key>
-<key name="indicat"> 53, </key>
-<key name="info"> 0,51,68, </key>
-<key name="information"> 13,0,29,51,68, </key>
-<key name="init"> 6,7,63, </key>
-<key name="init_geom"> 60, </key>
-<key name="initial"> 11,65,45,50, </key>
-<key name="initializ"> 6,7,56, </key>
-<key name="input"> 1,18, </key>
-<key name="inscrib"> 19, </key>
-<key name="insert"> 65,42, </key>
-<key name="instead"> 36,61, </key>
-<key name="intact"> 8, </key>
-<key name="integ"> 24, </key>
-<key name="intend"> 42, </key>
-<key name="interest"> 13, </key>
-<key name="intermediat"> 42, </key>
-<key name="internal"> 61, </key>
-<key name="intersect"> 61,50, </key>
-<key name="intersectgroup"> 56, </key>
-<key name="intersection"> 56,61,50, </key>
-<key name="introduc"> 12,24,36, </key>
-<key name="introduction"> 59, </key>
-<key name="invers"> 13,26,60, </key>
-<key name="inversediag"> 60, </key>
-<key name="inversion"> 26,60, </key>
-<key name="invisibl"> 67, </key>
-<key name="isdon"> 60, </key>
-<key name="iso"> 61, </key>
-<key name="isolin"> 61, </key>
-<key name="isometric"> 52, </key>
-<key name="isplanarfac"> 7,60,66, </key>
-<key name="item"> 16,1,20,21,25,26,27,29,10,11,30,34,61,39,64,40,42,44,45,47,48,49,50, </key>
-<key name="iteration"> 11,44, </key>
-<key name="iterativ"> 44, </key>
-<key name="join"> 43, </key>
-<key name="jpeg"> 0,52, </key>
-<key name="jpg"> 0,52, </key>
-<key name="just"> 1,61,38, </key>
-<key name="k"> 18,19, </key>
-<key name="keep"> 11,44,45, </key>
-<key name="key"> 61, </key>
-<key name="keyboard"> 25, </key>
-<key name="know"> 61, </key>
-<key name="ko"> 60, </key>
-<key name="l"> 53, </key>
-<key name="label"> 52, </key>
-<key name="laplacian"> 44, </key>
-<key name="last"> 1,18,36,42, </key>
-<key name="lastnodeid"> 60, </key>
-<key name="lay"> 10,61,64, </key>
-<key name="lcc"> 6,7,56,60,63,68, </key>
-<key name="learn"> 51, </key>
-<key name="least"> 61,44, </key>
-<key name="leav"> 22,8, </key>
-<key name="left"> 0,11,61,52, </key>
-<key name="legth"> 63, </key>
-<key name="len"> 56,63, </key>
-<key name="length"> 12,15,18,19,6,7,57,32,31,59,63,42,66,52,53, </key>
-<key name="lengthfromedg"> 7,60,66, </key>
-<key name="les"> 65,42,44, </key>
-<key name="let"> 11, </key>
-<key name="level"> 12,16, </key>
-<key name="libnetgenengin"> 7, </key>
-<key name="library"> 24,65, </key>
-<key name="libstdmeshersengin"> 6,7,56,60,63,68, </key>
-<key name="lik"> 16,2,28,42, </key>
-<key name="limit"> 61,42,44, </key>
-<key name="lin"> 13,1,18,10,36,61,64,43, </key>
-<key name="link"> 42, </key>
-<key name="list"> 0,16,20,24,25,8,11,65,48, </key>
-<key name="lk"> 18, </key>
-<key name="ll"> 52, </key>
-<key name="load"> 61,65, </key>
-<key name="loadfromfac"> 60, </key>
-<key name="local"> 6,23,7,59,36,66, </key>
-<key name="locallength"> 7, </key>
-<key name="locat"> 61,42, </key>
-<key name="location"> 18,27,30,44, </key>
-<key name="lock"> 25,44,52, </key>
-<key name="longest"> 19, </key>
-<key name="look"> 28,61,65, </key>
-<key name="low"> 13,18, </key>
-<key name="ly"> 61, </key>
-<key name="main"> 20,25,8,11,36,61,65,48,50, </key>
-<key name="makearc"> 7,60,66, </key>
-<key name="makebox"> 6,7,56,63,66,68, </key>
-<key name="makeboxdxdydz"> 60, </key>
-<key name="makecirclethreepnt"> 60,66, </key>
-<key name="makecompound"> 6,7,63,66, </key>
-<key name="makecylinderrh"> 7,60, </key>
-<key name="makeedg"> 6,7, </key>
-<key name="makefac"> 7,60,66, </key>
-<key name="makehexa"> 6,7, </key>
-<key name="makemesh"> 60, </key>
-<key name="makepolygon"> 60, </key>
-<key name="makequad"> 6,7, </key>
-<key name="makesketch"> 7, </key>
-<key name="makevector"> 7,60,66, </key>
-<key name="makevertex"> 6,7,60,66, </key>
-<key name="makewir"> 7,60,66, </key>
-<key name="manag"> 12,16, </key>
-<key name="manual"> 24,61, </key>
-<key name="map"> 32,60,61, </key>
-<key name="mark"> 52, </key>
-<key name="mas"> 11, </key>
-<key name="math"> 60,66, </key>
-<key name="max"> 12,7,32,59,33,44, </key>
-<key name="max_element_area"> 60, </key>
-<key name="maxelementarea"> 6,7,60,63,68, </key>
-<key name="maxelementarea_500"> 6, </key>
-<key name="maxelementarea_800"> 7, </key>
-<key name="maxelementvolum"> 6,7, </key>
-<key name="maxelementvolume_500"> 6, </key>
-<key name="maxelementvolume_900"> 7, </key>
-<key name="maximum"> 18,7,32,33,43,44,51, </key>
-<key name="mean"> 13, </key>
-<key name="meaningful"> 13, </key>
-<key name="measur"> 53, </key>
-<key name="meet"> 25,48, </key>
-<key name="mefisto_2d"> 6,7,63,68, </key>
-<key name="mefisto2d"> 6,7, </key>
-<key name="menu"> 16,1,18,20,5,21,22,23,24,25,8,26,27,28,29,10,11,30,34,36,61,38,39,64,40,41,65,42,44,45,47,48,49,50,51, </key>
-<key name="merg"> 58,34,42,66, </key>
-<key name="mergeequalelement"> 66, </key>
-<key name="mergenod"> 66, </key>
-<key name="mesh"> 12,13,14,15,0,16,1,17,18,19,2,3,4,20,5,21,22,6,23,24,25,7,8,26,27,28,29,10,11,54,55,56,30,32,31,58,34,59,35,60,33,36,61,62,63,37,38,39,64,40,41,65,42,43,44,45,46,66,47,48,49,50,51,68,69,52,53, </key>
-<key name="mesh_1"> 22,60, </key>
-<key name="mesh_2"> 60, </key>
-<key name="mesh_borders_at_multi"> 63, </key>
-<key name="mesh_freebord"> 63, </key>
-<key name="meshbox"> 6,7, </key>
-<key name="mesheditor"> 60, </key>
+<key name="hasangl"> 61, </key>
+<key name="hasrefpoint"> 61, </key>
+<key name="hav"> 20,33,37,64, </key>
+<key name="hedron"> 61, </key>
+<key name="height"> 69,54, </key>
+<key name="helical"> 12, </key>
+<key name="help"> 16, </key>
+<key name="henc"> 64, </key>
+<key name="her"> 64, </key>
+<key name="hexa"> 8, </key>
+<key name="hexahedral"> 15,6,8, </key>
+<key name="hexahedralization"> 23, </key>
+<key name="hexahedrical"> 8, </key>
+<key name="hexahedron"> 14,15,17,2,8,61,34,72, </key>
+<key name="hh"> 61, </key>
+<key name="hid"> 0,53, </key>
+<key name="high"> 14, </key>
+<key name="highlight"> 3,4,21,25,26,55,56,49, </key>
+<key name="hmax"> 20, </key>
+<key name="hol"> 56,61, </key>
+<key name="hold"> 64, </key>
+<key name="homogeneou"> 63, </key>
+<key name="how"> 15,12,63,38, </key>
+<key name="hyp"> 24, </key>
+<key name="hyp1"> 6, </key>
+<key name="hyp1d"> 61, </key>
+<key name="hyp2"> 6, </key>
+<key name="hyp3"> 6, </key>
+<key name="hyp4"> 6, </key>
+<key name="hypothes"> 13,0,19,23,6,24,8,33,60,61,63,37,38, </key>
+<key name="hypothesi"> 13,19,23,6,8,33,61,37,34,38,69, </key>
+<key name="i"> 15,20,23,26,12,57,61,63,64,66,43,49, </key>
+<key name="icon"> 30,39,42, </key>
+<key name="id"> 0,19,21,25,26,27,28,29,11,12,57,61,67,43,45,49,50, </key>
+<key name="id_circl"> 70, </key>
+<key name="id_fac"> 8, </key>
+<key name="id_face1"> 70, </key>
+<key name="idbox"> 6,66, </key>
+<key name="idea"> 12, </key>
+<key name="idl"> 6,57,61,66,70, </key>
+<key name="idsofelement"> 61, </key>
+<key name="idsoffixednod"> 61, </key>
+<key name="idsofside1element"> 70, </key>
+<key name="idsofside2element"> 70, </key>
+<key name="if"> 14,17,5,23,6,24,7,8,11,12,57,33,61,63,37,64,66,38,39,67,68,43,45,49,53, </key>
+<key name="ii"> 61, </key>
+<key name="imag"> 0,12,53, </key>
+<key name="imp"> 14, </key>
+<key name="import"> 6,8,57,31,60,61,66,69,70,72, </key>
+<key name="importation"> 31, </key>
+<key name="importcomponentgui"> 61, </key>
+<key name="includ"> 14,52, </key>
+<key name="increas"> 6,8, </key>
+<key name="index"> 25,64, </key>
+<key name="indic"> 64, </key>
+<key name="indicat"> 54, </key>
+<key name="info"> 0,52,72, </key>
+<key name="information"> 14,0,6,7,30,52,72, </key>
+<key name="init"> 61, </key>
+<key name="initial"> 12,61,68,46,51, </key>
+<key name="input"> 1,19, </key>
+<key name="inscrib"> 20, </key>
+<key name="insert"> 68,43, </key>
+<key name="instead"> 6,37,64, </key>
+<key name="int"> 62, </key>
+<key name="intact"> 9, </key>
+<key name="integ"> 25, </key>
+<key name="intend"> 43, </key>
+<key name="interest"> 14, </key>
+<key name="interfac"> 6,57,61,66,69,70, </key>
+<key name="intermediat"> 43, </key>
+<key name="internal"> 64, </key>
+<key name="intersect"> 64,51, </key>
+<key name="intersectgroup"> 57, </key>
+<key name="intersection"> 57,64,51, </key>
+<key name="introduc"> 13,25,37, </key>
+<key name="introduction"> 60,69, </key>
+<key name="invers"> 14,27,61, </key>
+<key name="inversediag"> 61, </key>
+<key name="inversion"> 27,61, </key>
+<key name="invisibl"> 71, </key>
+<key name="is3d"> 8, </key>
+<key name="isdon"> 61, </key>
+<key name="iso"> 64, </key>
+<key name="isolin"> 64, </key>
+<key name="isometric"> 53, </key>
+<key name="isplanarfac"> 8,70, </key>
+<key name="item"> 17,1,21,22,7,26,27,28,30,11,12,31,35,64,40,67,41,43,45,46,48,49,50,51, </key>
+<key name="iteration"> 12,45, </key>
+<key name="iterativ"> 45, </key>
+<key name="iv"> 61, </key>
+<key name="j"> 15,57,66, </key>
+<key name="join"> 44, </key>
+<key name="jpeg"> 0,53, </key>
+<key name="jpg"> 0,53, </key>
+<key name="just"> 1,64,39, </key>
+<key name="k"> 15,19,20, </key>
+<key name="keep"> 12,45,46, </key>
+<key name="key"> 64, </key>
+<key name="keyboard"> 26, </key>
+<key name="know"> 64, </key>
+<key name="ko"> 61, </key>
+<key name="l"> 54, </key>
+<key name="label"> 53, </key>
+<key name="laplacian"> 45, </key>
+<key name="last"> 1,19,12,37,43, </key>
+<key name="lastnodeid1"> 70, </key>
+<key name="lastnodeid2"> 70, </key>
+<key name="lastnodeidonfreebord"> 70, </key>
+<key name="lastnodeidonsid"> 70, </key>
+<key name="lay"> 11,64,67, </key>
+<key name="lcc"> 62, </key>
+<key name="learn"> 52, </key>
+<key name="least"> 64,45, </key>
+<key name="leav"> 23,9, </key>
+<key name="left"> 0,12,64,53, </key>
+<key name="len"> 57,61,66, </key>
+<key name="length"> 13,16,19,20,6,8,58,33,32,60,66,43,53,54, </key>
+<key name="length_margin"> 66, </key>
+<key name="lengthfromedg"> 8,69,70, </key>
+<key name="les"> 68,43,45, </key>
+<key name="level"> 13,17,63, </key>
+<key name="library"> 25,68, </key>
+<key name="libstdmeshersengin"> 61, </key>
+<key name="lik"> 17,2,29,43, </key>
+<key name="limit"> 64,43,45, </key>
+<key name="lin"> 14,1,19,11,37,64,67,44, </key>
+<key name="linear"> 12,63, </key>
+<key name="link"> 43, </key>
+<key name="list"> 0,17,21,25,26,9,12,68,49, </key>
+<key name="lk"> 19, </key>
+<key name="ll"> 53, </key>
+<key name="load"> 64,68, </key>
+<key name="loadfromfac"> 61, </key>
+<key name="local"> 6,24,8,60,37, </key>
+<key name="locallength"> 8,69, </key>
+<key name="locat"> 64,43, </key>
+<key name="location"> 19,28,31,45, </key>
+<key name="lock"> 26,45,53, </key>
+<key name="longest"> 20, </key>
+<key name="look"> 29,12,64,68, </key>
+<key name="low"> 14,19,63, </key>
+<key name="ly"> 64, </key>
+<key name="main"> 21,26,9,12,37,64,68,49,51, </key>
+<key name="makearc"> 8,70, </key>
+<key name="makebezi"> 61, </key>
+<key name="makebox"> 6,57,66,69,70,72, </key>
+<key name="makeboxdxdydz"> 6,8,61, </key>
+<key name="makecirclethreepnt"> 61,70, </key>
+<key name="makecompound"> 66,70, </key>
+<key name="makecon"> 69, </key>
+<key name="makecylind"> 69, </key>
+<key name="makecylinderrh"> 8, </key>
+<key name="makeedg"> 8,61, </key>
+<key name="makefac"> 8,70, </key>
+<key name="makefus"> 69, </key>
+<key name="makegluefac"> 66, </key>
+<key name="makemesh"> 61, </key>
+<key name="makepolygon"> 61, </key>
+<key name="makepolylin"> 61, </key>
+<key name="makequadmesh2"> 61, </key>
+<key name="makeshell"> 66, </key>
+<key name="makesketch"> 8, </key>
+<key name="maketranslation"> 66, </key>
+<key name="makevector"> 8,70, </key>
+<key name="makevectordxdydz"> 69, </key>
+<key name="makevertex"> 6,8,61,69,70, </key>
+<key name="makewir"> 8,70, </key>
+<key name="manag"> 13,17, </key>
+<key name="manual"> 25,63,64, </key>
+<key name="map"> 15,33,61,64, </key>
+<key name="mark"> 53, </key>
+<key name="mas"> 12, </key>
+<key name="math"> 61,70, </key>
+<key name="max"> 13,8,33,60,63,34,45, </key>
+<key name="maxaspectratio"> 61, </key>
+<key name="maxelementarea"> 6,8,61,66,72, </key>
+<key name="maxelementvolum"> 6,8,69,72, </key>
+<key name="maximum"> 19,8,33,63,34,44,45,52, </key>
+<key name="maxnbofiteration"> 61, </key>
+<key name="mean"> 14,63, </key>
+<key name="meaningful"> 14, </key>
+<key name="measur"> 54, </key>
+<key name="medium"> 7, </key>
+<key name="meet"> 26,49, </key>
+<key name="mefisto"> 15,8, </key>
+<key name="menu"> 17,1,19,21,5,22,23,24,7,25,26,9,27,28,29,30,11,12,31,35,37,64,39,40,67,41,42,68,43,45,46,48,49,50,51,52, </key>
+<key name="merg"> 59,35,43,70, </key>
+<key name="mergeequalelement"> 70, </key>
+<key name="mergenod"> 70, </key>
+<key name="mesh"> 13,14,15,16,0,17,1,18,19,20,2,3,4,21,5,22,23,6,24,7,25,26,8,9,27,28,29,30,11,12,55,56,57,31,33,32,59,35,60,36,61,63,37,34,64,65,66,38,39,40,67,41,42,62,68,43,44,69,45,46,47,70,48,49,50,51,52,72,73,53,54, </key>
+<key name="mesh_1"> 23,61, </key>
+<key name="mesh_2"> 61, </key>
+<key name="mesh_borders_at_multi"> 66, </key>
+<key name="mesh_free_border"> 66, </key>
+<key name="mesh_length_1d"> 66, </key>
+<key name="mesh_length_2d"> 66, </key>
+<key name="mesh_nam"> 61, </key>
+<key name="mesh1d"> 61, </key>
+<key name="mesh1d_tool"> 61, </key>
+<key name="meshbox"> 6,72, </key>
+<key name="mesheditor"> 61, </key>
 <key name="meshm"> 6, </key>
-<key name="method"> 60,44, </key>
-<key name="middl"> 1,36, </key>
-<key name="minimum"> 15,18,25,59,35,63,42,48, </key>
-<key name="mirror"> 66, </key>
-<key name="mirrorobject"> 66, </key>
-<key name="mod"> 0,18,62, </key>
-<key name="model"> 13,59, </key>
-<key name="modification"> 13,16,1,20,25,26,27,29,10,11,34,59,61,38,39,64,40,42,44,45,47,48,49, </key>
-<key name="modify"> 20,25,29,60,48, </key>
-<key name="modul"> 13,14,1,18,24,59,60,41,52, </key>
-<key name="mous"> 0,24,52, </key>
-<key name="mov"> 27,60, </key>
-<key name="movenod"> 60, </key>
-<key name="multi"> 15,3,4,59,63, </key>
-<key name="multiconnection"> 63, </key>
-<key name="must"> 22,11,61,65,42, </key>
-<key name="myelemid"> 63, </key>
-<key name="mypnt1"> 63, </key>
-<key name="mypnt2"> 63, </key>
-<key name="mystudy"> 6,60,63,68, </key>
-<key name="mystudyid"> 6,7,63, </key>
-<key name="n"> 61,42, </key>
-<key name="nam"> 22,6,23,24,29,56,30,65,50,68,52, </key>
-<key name="nb"> 56,63, </key>
-<key name="nb_segments_1"> 60, </key>
-<key name="nb_vert"> 60, </key>
-<key name="nbedg"> 66,68, </key>
-<key name="nbfac"> 68, </key>
-<key name="nbhexa"> 68, </key>
-<key name="nbnod"> 60,66,68, </key>
-<key name="nbpolygon"> 68, </key>
-<key name="nbpolyhedron"> 68, </key>
-<key name="nbprism"> 68, </key>
-<key name="nbpyramid"> 68, </key>
-<key name="nbquadrangl"> 66,68, </key>
-<key name="nbtetra"> 68, </key>
-<key name="nbtriangl"> 66,68, </key>
-<key name="nbvolum"> 66,68, </key>
-<key name="ne"> 22, </key>
-<key name="necessary"> 16, </key>
-<key name="negativ"> 18, </key>
-<key name="neighbor"> 26,49, </key>
-<key name="netgen"> 14, </key>
-<key name="netgen_3d"> 7, </key>
-<key name="netgen3d"> 7, </key>
-<key name="netgenplugin"> 7, </key>
-<key name="new"> 0,5,22,23,24,27,61,37,65,50, </key>
-<key name="next"> 18,61, </key>
-<key name="nod"> 13,0,16,1,17,18,19,20,21,24,27,28,10,32,34,59,60,61,62,63,38,39,64,65,42,43,44,46,66,51,68,53, </key>
-<key name="nodal"> 61,44, </key>
-<key name="node_id"> 60, </key>
-<key name="node_start_id"> 60, </key>
-<key name="non"> 22, </key>
-<key name="normal"> 45,53, </key>
-<key name="normalisation"> 19, </key>
-<key name="not"> 16,19,22,24,8, </key>
-<key name="noth"> 24, </key>
-<key name="notic"> 13, </key>
-<key name="now"> 5,22,11,60, </key>
-<key name="numb"> 12,13,1,18,6,24,7,10,32,59,61,64,42,44,66,51,68,52, </key>
-<key name="number"> 0,1,28, </key>
-<key name="numberofsegment"> 6,7,56,60,63,66,68, </key>
-<key name="numberofsegments_10"> 6, </key>
-<key name="numberofsegments_7"> 7, </key>
-<key name="numeric"> 25, </key>
-<key name="numerical"> 12, </key>
-<key name="obey"> 42, </key>
-<key name="object"> 12,14,0,16,1,18,5,21,22,23,24,25,7,8,29,30,32,60,33,61,62,37,38,39,40,47,48,51,69,52, </key>
-<key name="objecttoid"> 6,7,63, </key>
-<key name="objet"> 24, </key>
-<key name="obliqu"> 11, </key>
-<key name="obtain"> 16, </key>
-<key name="offset"> 52, </key>
-<key name="ok"> 16,1,20,5,25,8,26,27,29,10,11,30,60,38,39,64,42,44,48,49,50, </key>
-<key name="on"> 13,1,18,22,23,25,8,26,10,54,55,58,36,61,63,37,38,64,65,42,44,45,47,48,50,68, </key>
-<key name="onc"> 48, </key>
-<key name="onto"> 36,61, </key>
-<key name="oo"> 19, </key>
-<key name="opaqu"> 67, </key>
-<key name="operat"> 12, </key>
-<key name="operation"> 14,16,17,18,19,2,3,4,20,23,24,25,8,26,27,29,10,11,54,55,30,57,32,31,58,34,59,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,69,53, </key>
-<key name="opposit"> 12,5,6,25,7,32,36,42,43,66, </key>
-<key name="option"> 13,0,18,45,47, </key>
-<key name="optional"> 22,11, </key>
-<key name="ord"> 13,20,61, </key>
-<key name="ordinary"> 1,36, </key>
-<key name="orientat"> 52, </key>
-<key name="orientation"> 20,5,25,60,48, </key>
-<key name="origin"> 53, </key>
-<key name="other"> 48, </key>
-<key name="otherwis"> 22,32, </key>
-<key name="our"> 22, </key>
-<key name="out"> 52, </key>
-<key name="outlin"> 55, </key>
-<key name="outsid"> 61, </key>
-<key name="own"> 13, </key>
-<key name="pag"> 24,29, </key>
-<key name="pair"> 18, </key>
-<key name="pan"> 52, </key>
-<key name="paramet"> 13,18,2,65,42, </key>
-<key name="parameter"> 12,0,5,11,40,42,52, </key>
-<key name="parametric"> 13,61, </key>
-<key name="parent"> 23, </key>
-<key name="part"> 42,44,52, </key>
-<key name="particular"> 60, </key>
-<key name="particularity"> 13, </key>
-<key name="pas"> 60, </key>
-<key name="path"> 11,60,65,66, </key>
-<key name="pattern"> 60,61, </key>
-<key name="pattern_nam"> 61, </key>
+<key name="method"> 57,61,66,45,70, </key>
+<key name="middl"> 1,12,37, </key>
+<key name="min_angl"> 66, </key>
+<key name="minimum"> 16,19,26,60,36,63,66,43,49, </key>
+<key name="mirror"> 70, </key>
+<key name="mirrorobject"> 70, </key>
+<key name="mod"> 0,19,65, </key>
+<key name="model"> 14,60, </key>
+<key name="modification"> 14,17,1,21,7,26,27,28,30,11,12,35,60,64,39,40,67,41,43,45,46,48,49,50, </key>
+<key name="modify"> 21,26,30,61,49, </key>
+<key name="modul"> 14,15,1,19,6,25,60,61,42,69,53, </key>
+<key name="moment"> 57,61,66,70, </key>
+<key name="mous"> 0,25,53, </key>
+<key name="mov"> 28,61, </key>
+<key name="movenod"> 61, </key>
+<key name="much"> 63, </key>
+<key name="multi"> 16,3,4,60,66, </key>
+<key name="multiconnection"> 66, </key>
+<key name="must"> 23,12,64,68,43, </key>
+<key name="myelemid"> 66, </key>
+<key name="mypnt1"> 66, </key>
+<key name="mypnt2"> 66, </key>
+<key name="mystudyid"> 61, </key>
+<key name="n"> 64,43, </key>
+<key name="n1"> 61, </key>
+<key name="n10"> 61, </key>
+<key name="n11"> 61, </key>
+<key name="n12"> 61, </key>
+<key name="n2"> 61, </key>
+<key name="n23_param"> 8, </key>
+<key name="n3"> 61, </key>
+<key name="n4"> 61, </key>
+<key name="n5"> 61, </key>
+<key name="n6"> 61, </key>
+<key name="n7"> 61, </key>
+<key name="n8"> 61, </key>
+<key name="n9"> 61, </key>
+<key name="na"> 61, </key>
+<key name="nam"> 23,6,24,25,30,57,31,61,63,62,68,69,51,53, </key>
+<key name="nb"> 57,61,63,66, </key>
+<key name="nb_conn"> 66, </key>
+<key name="nb_segments_3"> 61, </key>
+<key name="nb_segments_7"> 61, </key>
+<key name="nb_segments_8"> 61, </key>
+<key name="nb_vert"> 61, </key>
+<key name="nbedg"> 6,70,72, </key>
+<key name="nbfac"> 6,72, </key>
+<key name="nbhexa"> 72, </key>
+<key name="nbnod"> 6,70,72, </key>
+<key name="nbpolygon"> 72, </key>
+<key name="nbpolyhedron"> 72, </key>
+<key name="nbprism"> 72, </key>
+<key name="nbpyramid"> 72, </key>
+<key name="nbquadrangl"> 70,72, </key>
+<key name="nbtetra"> 72, </key>
+<key name="nbtriangl"> 70,72, </key>
+<key name="nbvolum"> 6,70,72, </key>
+<key name="nc"> 61, </key>
+<key name="nd"> 61, </key>
+<key name="ndiagonal"> 61, </key>
+<key name="ne"> 23, </key>
+<key name="necessary"> 17, </key>
+<key name="negativ"> 19, </key>
+<key name="neighbor"> 27,50, </key>
+<key name="netgen"> 15,6,8,63,62,69,72, </key>
+<key name="netgen_2d3d"> 8, </key>
+<key name="new"> 0,5,23,24,25,28,61,64,38,68,51, </key>
+<key name="new_id"> 61, </key>
+<key name="next"> 19,57,61,64,66,70, </key>
+<key name="nid"> 61, </key>
+<key name="nid1"> 61, </key>
+<key name="nid2"> 61, </key>
+<key name="nid3"> 61, </key>
+<key name="nid4"> 61, </key>
+<key name="no_nam"> 62, </key>
+<key name="nod"> 14,0,17,1,18,19,20,21,22,6,7,25,28,29,11,12,33,35,60,61,63,64,65,66,39,40,67,68,43,44,45,47,70,52,72,54, </key>
+<key name="nodal"> 64,45, </key>
+<key name="node_id"> 61, </key>
+<key name="nodeid1ofside1tomerg"> 70, </key>
+<key name="nodeid1ofside2tomerg"> 70, </key>
+<key name="nodeid2ofside1tomerg"> 70, </key>
+<key name="nodeid2ofside2tomerg"> 70, </key>
+<key name="nodestart"> 61, </key>
+<key name="non"> 23, </key>
+<key name="nonam"> 62, </key>
+<key name="normal"> 46,54, </key>
+<key name="normalisation"> 20, </key>
+<key name="not"> 17,20,23,25,9,12, </key>
+<key name="noth"> 25, </key>
+<key name="notic"> 14, </key>
+<key name="now"> 5,23, </key>
+<key name="nsmooth"> 61, </key>
+<key name="numb"> 13,14,1,19,6,25,8,11,33,60,63,64,67,43,45,70,52,72,53, </key>
+<key name="number"> 0,1,29,12, </key>
+<key name="numberofsegment"> 6,8,57,61,66,70,72, </key>
+<key name="numeric"> 26, </key>
+<key name="numerical"> 13, </key>
+<key name="nunit"> 61, </key>
+<key name="obey"> 43, </key>
+<key name="obj"> 62, </key>
+<key name="object"> 13,15,0,17,1,19,5,22,23,24,7,25,26,9,30,31,33,61,63,34,64,65,38,39,40,41,48,49,52,73,53, </key>
+<key name="objecttoid"> 61, </key>
+<key name="objet"> 25, </key>
+<key name="obtain"> 17,66, </key>
+<key name="offset"> 53, </key>
+<key name="ok"> 17,1,21,5,7,26,9,27,28,30,11,12,31,61,39,40,67,43,45,49,50,51, </key>
+<key name="old"> 57,61,66,70, </key>
+<key name="on"> 14,1,19,23,6,24,26,8,9,27,11,12,55,56,59,61,37,64,66,38,39,67,68,43,45,46,48,49,51, </key>
+<key name="onc"> 49, </key>
+<key name="onto"> 37,64, </key>
+<key name="oo"> 20, </key>
+<key name="opaqu"> 71, </key>
+<key name="open"> 66, </key>
+<key name="operat"> 13, </key>
+<key name="operation"> 15,17,18,19,20,2,3,4,21,24,25,26,9,27,28,30,11,12,55,56,31,58,33,32,59,35,60,36,37,34,64,38,39,40,67,41,43,44,45,46,47,48,49,50,51,73,54, </key>
+<key name="opposit"> 13,5,6,26,8,33,37,43,44, </key>
+<key name="optimiz"> 63, </key>
+<key name="option"> 14,0,19,46,48, </key>
+<key name="optional"> 23,12, </key>
+<key name="ord"> 14,21,63,64, </key>
+<key name="ordinary"> 1,37, </key>
+<key name="orientat"> 53, </key>
+<key name="orientation"> 21,5,26,61,49, </key>
+<key name="origin"> 54, </key>
+<key name="other"> 49, </key>
+<key name="otherwis"> 23,33, </key>
+<key name="our"> 23, </key>
+<key name="out"> 53, </key>
+<key name="outlin"> 56, </key>
+<key name="outsid"> 64, </key>
+<key name="own"> 14, </key>
+<key name="p5"> 6,8, </key>
+<key name="packag"> 6,57,61,66,62,69,70, </key>
+<key name="pag"> 15,25,30, </key>
+<key name="pair"> 19, </key>
+<key name="pan"> 53, </key>
+<key name="paramet"> 14,19,2,68,43, </key>
+<key name="parameter"> 13,0,5,8,12,63,41,43,53, </key>
+<key name="parametric"> 14,64, </key>
+<key name="parent"> 24, </key>
+<key name="part"> 61,43,45,53, </key>
+<key name="particularity"> 14, </key>
+<key name="pas"> 6,57,61,66, </key>
+<key name="path"> 12,61,68,70, </key>
+<key name="pathmesh"> 61, </key>
+<key name="pathshap"> 61, </key>
+<key name="pattern"> 61,64, </key>
+<key name="pattern_nam"> 64, </key>
+<key name="pentagonal"> 61, </key>
 <key name="pentahedron"> 2, </key>
-<key name="perform"> 59,39,42,45,50, </key>
-<key name="perimet"> 19, </key>
-<key name="pi"> 60,66, </key>
-<key name="pictur"> 3,24,11,54,55,58, </key>
-<key name="plac"> 42,52, </key>
-<key name="plan"> 5,63,45,53, </key>
-<key name="planar"> 53, </key>
-<key name="platform"> 24,41, </key>
-<key name="pleas"> 8, </key>
-<key name="plot"> 18, </key>
-<key name="plu"> 10,64, </key>
-<key name="png"> 0,52, </key>
-<key name="point"> 13,1,18,7,11,60,36,61,64,40,42,45,66,47,52,53, </key>
-<key name="point111"> 6,7, </key>
-<key name="point112"> 6,7, </key>
-<key name="point121"> 6,7, </key>
-<key name="point122"> 6,7, </key>
-<key name="point211"> 6,7, </key>
-<key name="point212"> 6,7, </key>
-<key name="point221"> 6,7, </key>
-<key name="point222"> 6,7, </key>
-<key name="pointstruct"> 60,66, </key>
-<key name="polygon"> 16,60,68, </key>
-<key name="polygonal"> 60, </key>
-<key name="polyhedral"> 16,60, </key>
-<key name="polyhedron"> 16,60,68, </key>
-<key name="pop"> 8,28, </key>
-<key name="position"> 13,61,52, </key>
-<key name="posses"> 36, </key>
-<key name="possibility"> 65, </key>
-<key name="possibl"> 12,2,24,61, </key>
-<key name="post"> 52, </key>
-<key name="powerful"> 65, </key>
-<key name="precision"> 16, </key>
-<key name="preferenc"> 12,32,59,62, </key>
-<key name="prefix"> 65, </key>
-<key name="preproces"> 24, </key>
-<key name="pres"> 16,1,11,38,52, </key>
-<key name="present"> 13,0,50, </key>
-<key name="presentation"> 15,0,52, </key>
-<key name="preserv"> 61, </key>
-<key name="preset"> 12, </key>
-<key name="preview"> 16,5,25,61,65, </key>
-<key name="previou"> 18,48, </key>
-<key name="previous"> 23,24,59,61, </key>
-<key name="principl"> 11, </key>
-<key name="print"> 6,7,56,60,63,66,68, </key>
-<key name="prism"> 68, </key>
-<key name="pro"> 52, </key>
-<key name="problem"> 6,7,56, </key>
-<key name="proce"> 22,8, </key>
-<key name="procedur"> 44, </key>
-<key name="proceed"> 37, </key>
-<key name="proces"> 44, </key>
-<key name="produc"> 13,10,64,44, </key>
-<key name="product"> 53, </key>
-<key name="program"> 22, </key>
-<key name="progression"> 18, </key>
-<key name="project"> 61, </key>
-<key name="projection"> 61,53, </key>
-<key name="prompt"> 18, </key>
-<key name="propagat"> 6,7,36,66, </key>
-<key name="propagation"> 12,6,7,36,66,68, </key>
-<key name="properti"> 52, </key>
-<key name="provid"> 0,16,25, </key>
-<key name="pseudo"> 26, </key>
-<key name="pul"> 44, </key>
-<key name="px"> 7,60,66, </key>
-<key name="px1"> 60,66, </key>
-<key name="py"> 7,60,66, </key>
-<key name="py1"> 60,66, </key>
-<key name="pyramid"> 68, </key>
-<key name="pyramidal"> 14, </key>
-<key name="python"> 51, </key>
-<key name="pz"> 7,60,66, </key>
-<key name="pz1"> 60,66, </key>
+<key name="per"> 63, </key>
+<key name="perform"> 60,61,40,43,46,51, </key>
+<key name="perimet"> 20, </key>
+<key name="pi"> 61,70, </key>
+<key name="pictur"> 3,25,12,55,56,59, </key>
+<key name="piec"> 69, </key>
+<key name="plac"> 7,43,53, </key>
+<key name="plan"> 5,66,46,54, </key>
+<key name="planar"> 61,54, </key>
+<key name="platform"> 25,42, </key>
+<key name="pleas"> 9,12, </key>
+<key name="plot"> 19, </key>
+<key name="plu"> 11,67, </key>
+<key name="png"> 0,53, </key>
+<key name="point"> 14,1,19,12,61,37,64,67,41,43,46,70,48,53,54, </key>
+<key name="pointstruct"> 61,70, </key>
+<key name="polygon"> 17,61,72, </key>
+<key name="polygonal"> 61, </key>
+<key name="polyhedral"> 17,61, </key>
+<key name="polyhedron"> 17,61,72, </key>
+<key name="polylin"> 12, </key>
+<key name="pop"> 9,29, </key>
+<key name="position"> 14,64,53, </key>
+<key name="posses"> 63,37, </key>
+<key name="possibility"> 68, </key>
+<key name="possibl"> 13,2,25,63,64, </key>
+<key name="post"> 53, </key>
+<key name="powerful"> 68, </key>
+<key name="precision"> 17, </key>
+<key name="preferenc"> 13,33,60,65, </key>
+<key name="prefix"> 68, </key>
+<key name="preproces"> 25, </key>
+<key name="pres"> 17,1,12,39,53, </key>
+<key name="present"> 14,0,63,51, </key>
+<key name="presentation"> 16,0,53, </key>
+<key name="preserv"> 64, </key>
+<key name="preset"> 13, </key>
+<key name="preview"> 17,5,26,64,68, </key>
+<key name="previou"> 19,12,49, </key>
+<key name="previous"> 24,25,60,64, </key>
+<key name="principl"> 12, </key>
+<key name="print"> 6,8,57,61,66,70,72, </key>
+<key name="printmeshinfo"> 6, </key>
+<key name="prism"> 72, </key>
+<key name="pro"> 53, </key>
+<key name="problem"> 6,8, </key>
+<key name="proce"> 23,9, </key>
+<key name="procedur"> 45, </key>
+<key name="proceed"> 12,38, </key>
+<key name="proces"> 45, </key>
+<key name="produc"> 14,7,11,61,67,45, </key>
+<key name="product"> 54, </key>
+<key name="program"> 23, </key>
+<key name="progression"> 19, </key>
+<key name="project"> 64, </key>
+<key name="projection"> 64,54, </key>
+<key name="prompt"> 19, </key>
+<key name="propagat"> 6,8,37, </key>
+<key name="propagation"> 13,6,8,37,70, </key>
+<key name="properti"> 53, </key>
+<key name="prov"> 63, </key>
+<key name="provid"> 0,17,26,57,61,66,69,70, </key>
+<key name="pseudo"> 27, </key>
+<key name="pt1"> 69, </key>
+<key name="pt2"> 69, </key>
+<key name="pul"> 45, </key>
+<key name="put"> 8, </key>
+<key name="px"> 8,70, </key>
+<key name="px1"> 70, </key>
+<key name="py"> 8,70, </key>
+<key name="py1"> 70, </key>
+<key name="pyramid"> 72, </key>
+<key name="pyramidal"> 15, </key>
+<key name="python"> 6,62,69,52, </key>
+<key name="pz"> 8,70, </key>
+<key name="pz1"> 70, </key>
+<key name="q1"> 61, </key>
 <key name="qi"> 2, </key>
-<key name="qk"> 19,2, </key>
-<key name="quad"> 60,53, </key>
-<key name="quad2d"> 7,56, </key>
-<key name="quadrangl"> 12,13,14,16,17,19,2,6,25,7,26,10,32,31,59,35,60,64,43,66,68, </key>
-<key name="quadrangle_2d"> 7,56, </key>
-<key name="quadrangular"> 14,6,7,32,36,66, </key>
-<key name="quadratic"> 12,1,36, </key>
-<key name="quadtotri"> 60, </key>
-<key name="quality"> 15,0,17,18,19,2,3,4,25,54,55,57,31,59,35,63,43,46,48,69,53, </key>
-<key name="quantity"> 12, </key>
-<key name="r1"> 60, </key>
-<key name="radio"> 20,24,25,40,42,45,48, </key>
-<key name="radiu"> 19,60, </key>
-<key name="rang"> 18,24,56,60,63, </key>
-<key name="ratio"> 15,19,2,59,63,44,46,53, </key>
-<key name="ready"> 22, </key>
+<key name="qk"> 20,2, </key>
+<key name="quad"> 54, </key>
+<key name="quad_1"> 61, </key>
+<key name="quad_2"> 61, </key>
+<key name="quad_3"> 61, </key>
+<key name="quad_4"> 61, </key>
+<key name="quad_5"> 61, </key>
+<key name="quad_6"> 61, </key>
+<key name="quad_7"> 61, </key>
+<key name="quadra"> 6,57, </key>
+<key name="quadrangl"> 13,14,15,17,18,20,2,6,26,8,27,11,12,57,33,32,60,36,61,63,67,44,70,72, </key>
+<key name="quadrangular"> 15,6,8,33,37, </key>
+<key name="quadratic"> 13,1,7,63,37, </key>
+<key name="quadtotri"> 61, </key>
+<key name="quality"> 16,0,18,19,20,2,3,4,26,55,56,58,32,60,36,66,44,47,49,73,54, </key>
+<key name="quantity"> 13, </key>
+<key name="r1"> 61, </key>
+<key name="radio"> 21,25,26,41,43,46,49, </key>
+<key name="radiu"> 20,61,63, </key>
+<key name="radius"> 63, </key>
+<key name="radius_1"> 69, </key>
+<key name="radius_2"> 69, </key>
+<key name="rang"> 19,25,57,61,63,66, </key>
+<key name="rat"> 63, </key>
+<key name="ratio"> 16,20,2,60,66,45,47,54, </key>
+<key name="ready"> 23, </key>
 <key name="recent"> 0, </key>
-<key name="red"> 55, </key>
-<key name="redefin"> 0,52, </key>
-<key name="reduc"> 44, </key>
-<key name="reevaluat"> 44, </key>
-<key name="refer"> 61, </key>
-<key name="referenc"> 13,15,22,23, </key>
-<key name="refin"> 12, </key>
-<key name="reflect"> 61,43,69, </key>
+<key name="red"> 56, </key>
+<key name="redefin"> 0,53, </key>
+<key name="reduc"> 45, </key>
+<key name="reevaluat"> 45, </key>
+<key name="refer"> 64, </key>
+<key name="referenc"> 14,16,23,24, </key>
+<key name="refin"> 13, </key>
+<key name="reflect"> 64,44,73, </key>
+<key name="refpoint"> 61, </key>
 <key name="refresh"> 0, </key>
-<key name="regular"> 19, </key>
-<key name="regular_1d"> 6,7,56,63,68, </key>
-<key name="regular1d"> 6,7,56, </key>
-<key name="relat"> 41, </key>
-<key name="relation"> 13, </key>
-<key name="relationship"> 13, </key>
-<key name="remot"> 52, </key>
-<key name="remov"> 20,6,24,25,8,29,11,56,60,38,65,48,68, </key>
-<key name="removal"> 59, </key>
-<key name="removeelement"> 60,63, </key>
-<key name="removehypothesi"> 6,68, </key>
-<key name="removenod"> 60, </key>
-<key name="renumb"> 39, </key>
-<key name="renumber"> 60,39, </key>
-<key name="renumbernod"> 60, </key>
-<key name="reorient"> 20,60, </key>
-<key name="replac"> 42, </key>
-<key name="represent"> 12,13,18,2,62,46,52, </key>
-<key name="representation"> 13, </key>
-<key name="requir"> 26,27,49, </key>
-<key name="reset"> 52, </key>
-<key name="resiz"> 52, </key>
-<key name="respect"> 11, </key>
+<key name="regular"> 20,6,8,63,62, </key>
+<key name="regular_1d"> 61, </key>
+<key name="relat"> 42, </key>
+<key name="relation"> 14, </key>
+<key name="relationship"> 14, </key>
+<key name="remot"> 53, </key>
+<key name="remov"> 21,6,25,26,9,30,12,57,61,66,39,68,49, </key>
+<key name="removal"> 60, </key>
+<key name="removeelement"> 61,66, </key>
+<key name="removehypothesi"> 6, </key>
+<key name="removenod"> 61, </key>
+<key name="renumb"> 61,40, </key>
+<key name="renumber"> 61,40, </key>
+<key name="renumbernod"> 61, </key>
+<key name="reorient"> 21,61, </key>
+<key name="replac"> 43, </key>
+<key name="represent"> 13,14,19,2,65,47,53, </key>
+<key name="representation"> 14, </key>
+<key name="requir"> 27,28,63,50, </key>
+<key name="res"> 61, </key>
+<key name="reset"> 53, </key>
+<key name="resiz"> 53, </key>
+<key name="respect"> 12, </key>
 <key name="respectiv"> 1, </key>
-<key name="rest"> 61,42, </key>
-<key name="restor"> 52, </key>
-<key name="restrict"> 13, </key>
-<key name="result"> 12,16,11,56,63,44,50, </key>
-<key name="ret"> 6,7,56, </key>
-<key name="retriev"> 13, </key>
-<key name="return"> 57,60, </key>
-<key name="reveal"> 19, </key>
-<key name="revers"> 1,61, </key>
-<key name="revert"> 20, </key>
-<key name="revolution"> 10,60,64, </key>
-<key name="revolv"> 64, </key>
-<key name="right"> 0,21,8,27,28,11,62, </key>
-<key name="rotat"> 10,11,60,64,40,66,52, </key>
-<key name="rotateobject"> 66, </key>
-<key name="rotation"> 5,11,64,40,66,52, </key>
-<key name="rotationsweepobject"> 60, </key>
-<key name="rough"> 12, </key>
-<key name="rr"> 60, </key>
-<key name="rul"> 18,36,42, </key>
-<key name="run"> 41, </key>
-<key name="s"> 11, </key>
-<key name="salom"> 6,24,7,56,59,60,63,41,66,68, </key>
-<key name="sam"> 13,0,18,19,2,22,23,7,11,36,37,65,42,50, </key>
-<key name="sampl"> 14,16,17,18,19,2,3,4,20,22,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,69,53, </key>
-<key name="sav"> 65, </key>
-<key name="scal"> 18,52, </key>
-<key name="scalar"> 15, </key>
-<key name="scen"> 52, </key>
-<key name="script"> 14,16,17,18,19,2,3,4,20,22,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,51,69,53, </key>
-<key name="se"> 14,16,17,18,19,2,3,4,20,5,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,69,52,53, </key>
-<key name="seam"> 61, </key>
-<key name="search"> 30,65, </key>
-<key name="second"> 16,60,42, </key>
-<key name="section"> 0,5,22,61, </key>
-<key name="segment"> 12,18,6,7,32,59,60,66, </key>
-<key name="select"> 12,14,0,16,1,18,20,21,22,23,24,25,8,26,27,29,10,11,30,34,36,61,62,38,39,64,40,41,65,42,44,45,47,48,49,50,51,52, </key>
-<key name="selectabl"> 58, </key>
-<key name="selection"> 16,1,20,24,25,8,65,48, </key>
-<key name="sens"> 13, </key>
-<key name="separat"> 46, </key>
-<key name="sequenc"> 42, </key>
-<key name="set"> 13,14,16,18,20,5,22,24,7,27,11,32,59,60,33,61,62,65,42,44,67,48, </key>
-<key name="setcurrentstudy"> 6,60,63,68, </key>
-<key name="setdisplaymod"> 7, </key>
-<key name="setlength"> 6,68, </key>
-<key name="setmargin"> 56,63, </key>
-<key name="setmaxelementarea"> 6,7,63,68, </key>
-<key name="setmaxelementvolum"> 6,7, </key>
-<key name="setmesh"> 63, </key>
-<key name="setnam"> 6,7,63, </key>
-<key name="setnumberofsegment"> 6,7,56,60,63,68, </key>
-<key name="setnumfunctor"> 56,63, </key>
-<key name="setpredicat"> 56,63, </key>
-<key name="setting"> 22, </key>
-<key name="settransparency"> 7, </key>
-<key name="sew"> 63,42,66, </key>
-<key name="sewbordertosid"> 66, </key>
-<key name="sewconformfreeborder"> 66, </key>
-<key name="sewfreeborder"> 66, </key>
-<key name="sewsideelement"> 66, </key>
-<key name="sg"> 6,7,56,60,63,66,68, </key>
-<key name="shad"> 0,62,67, </key>
-<key name="shall"> 20,26,27,34,61,64,40,45,47,48,49, </key>
-<key name="shap"> 12,13,11,61,44, </key>
-<key name="shape_mesh"> 60, </key>
-<key name="shapetyp"> 6,7,56,60,63,66,68, </key>
-<key name="shift"> 16,1,25,38,44, </key>
-<key name="shortest"> 53, </key>
-<key name="should"> 18,24,10,11,61,64,40,65,42,44,50, </key>
-<key name="show"> 18,5,11,65,52, </key>
-<key name="shown"> 15,44, </key>
-<key name="shrink"> 62, </key>
-<key name="sid"> 6,7,35,42,43,66, </key>
-<key name="simp"> 22,36, </key>
-<key name="simpl"> 13,16,61, </key>
-<key name="simplex"> 19,2, </key>
-<key name="sin"> 60, </key>
-<key name="siz"> 0,44, </key>
-<key name="sk"> 19,2, </key>
-<key name="sketch"> 7, </key>
-<key name="sketcher"> 7, </key>
-<key name="sketcher1"> 7, </key>
-<key name="sketcher2"> 7, </key>
-<key name="skew"> 15,25,59,63,43,48, </key>
-<key name="slid"> 67, </key>
-<key name="small"> 52, </key>
-<key name="smesh"> 6,7,56,60,63,42,66,68, </key>
-<key name="smesh_mechanic"> 56,60,63,66, </key>
-<key name="smesh_mechanic_tetra"> 63, </key>
-<key name="smesh_mesheditor"> 60,66, </key>
-<key name="smeshgroup1"> 56, </key>
-<key name="smeshgroup2"> 56, </key>
-<key name="smeshgui"> 6,7,63, </key>
-<key name="smooth"> 60,44, </key>
-<key name="smoothobject"> 60, </key>
-<key name="smp"> 61, </key>
-<key name="so"> 12,18,19,6,7,56,60,61,63,42,46,68, </key>
-<key name="solid"> 6,7,59, </key>
-<key name="somewhat"> 16, </key>
-<key name="sort"> 20,24,25,48, </key>
-<key name="sourc"> 65, </key>
-<key name="spac"> 13,61,40,47, </key>
-<key name="specifi"> 18,3,61,38,42,44, </key>
-<key name="specific"> 21,65, </key>
-<key name="specify"> 16,1,25,10,11,61,38,64,40,65,44,45,47,50, </key>
-<key name="spher"> 18,19,22, </key>
-<key name="split"> 14,18,2,5,42, </key>
-<key name="sqrt"> 60, </key>
-<key name="standalon"> 24,56,65, </key>
-<key name="standard"> 0,30,51, </key>
-<key name="start"> 12,18,5,7,11,59,41,42,47, </key>
-<key name="startendlength"> 7, </key>
-<key name="statu"> 60, </key>
-<key name="stdmesher"> 6,7,56,60,63,68, </key>
-<key name="step"> 10,64, </key>
-<key name="stor"> 61,65, </key>
-<key name="straight"> 1,7,36, </key>
-<key name="stretch"> 52, </key>
-<key name="strict"> 52, </key>
-<key name="structur"> 22,23, </key>
-<key name="study"> 6,7,56,65, </key>
-<key name="stuf"> 52, </key>
-<key name="sub"> 30,34,60,61,40,42,45,47, </key>
-<key name="submenu"> 16,9,38,39, </key>
-<key name="submesh"> 12,20,21,6,23,24,25,10,11,37,64,44,47,48,51, </key>
-<key name="subshapeall"> 6,7,56,60,63,66,68, </key>
-<key name="subshapelist"> 6,56,63,68, </key>
-<key name="subshapelist1"> 66, </key>
-<key name="subshapelist2"> 66, </key>
-<key name="subshapenam"> 6,56,68, </key>
-<key name="succed"> 7,56, </key>
+<key name="rest"> 64,43, </key>
+<key name="restor"> 53, </key>
+<key name="restrict"> 14, </key>
+<key name="result"> 13,17,12,57,66,45,51, </key>
+<key name="ret"> 6,8, </key>
+<key name="retriev"> 14, </key>
+<key name="return"> 58,61, </key>
+<key name="reveal"> 20, </key>
+<key name="revers"> 1,64, </key>
+<key name="revert"> 21, </key>
+<key name="revolution"> 11,61,67, </key>
+<key name="revolv"> 61,67, </key>
+<key name="right"> 0,22,9,28,29,12,65, </key>
+<key name="rotat"> 11,12,61,67,41,70,53, </key>
+<key name="rotateobject"> 70, </key>
+<key name="rotation"> 5,67,41,70,53, </key>
+<key name="rotationsweepobject"> 61, </key>
+<key name="rough"> 13, </key>
+<key name="rr"> 61, </key>
+<key name="rul"> 19,37,43, </key>
+<key name="run"> 42, </key>
+<key name="salom"> 25,8,57,60,61,66,42,62,70, </key>
+<key name="sam"> 14,0,19,20,2,23,24,8,12,37,38,68,43,51, </key>
+<key name="sampl"> 15,17,18,19,20,2,3,4,21,23,24,25,26,27,28,30,11,12,55,56,31,58,33,32,59,35,36,37,34,64,38,39,40,67,41,43,44,45,46,47,48,49,50,51,73,54, </key>
+<key name="sav"> 68, </key>
+<key name="scal"> 19,53, </key>
+<key name="scalar"> 16, </key>
+<key name="scen"> 53, </key>
+<key name="script"> 15,17,18,19,20,2,3,4,21,23,6,24,25,26,27,28,30,11,12,55,56,57,31,58,33,32,59,35,36,61,37,34,64,66,38,39,40,67,41,43,44,45,46,47,70,48,49,50,51,52,73,54, </key>
+<key name="se"> 15,17,18,19,20,2,3,4,21,5,6,24,7,25,26,27,28,30,11,12,55,56,31,58,33,32,59,35,36,37,34,64,38,39,40,67,41,43,44,69,45,46,47,48,49,50,51,73,53,54, </key>
+<key name="seam"> 64, </key>
+<key name="search"> 31,68, </key>
+<key name="second"> 17,61,63,43, </key>
+<key name="secondnodeid1"> 70, </key>
+<key name="secondnodeid2"> 70, </key>
+<key name="secondnodeidonfreebord"> 70, </key>
+<key name="section"> 0,5,23,64,69, </key>
+<key name="seg"> 63, </key>
+<key name="segment"> 13,19,6,8,57,33,60,61,63,66,69,70,72, </key>
+<key name="select"> 13,0,17,1,19,21,22,23,6,24,7,25,26,9,27,28,30,11,12,31,35,61,63,37,64,65,39,40,67,41,42,68,43,45,46,48,49,50,51,52,53, </key>
+<key name="selectabl"> 59, </key>
+<key name="selection"> 17,1,21,25,26,9,68,49, </key>
+<key name="sens"> 14, </key>
+<key name="separat"> 47, </key>
+<key name="sequenc"> 43, </key>
+<key name="set"> 14,15,17,19,21,5,23,25,8,28,12,33,60,61,63,34,64,65,68,43,45,71,49, </key>
+<key name="setmargin"> 57,66, </key>
+<key name="setmaxelementarea"> 6, </key>
+<key name="setmesh"> 66, </key>
+<key name="setnam"> 61,62,69, </key>
+<key name="setnumberofsegment"> 61, </key>
+<key name="setnumfunctor"> 57,66, </key>
+<key name="setpredicat"> 57,66, </key>
+<key name="setting"> 23, </key>
+<key name="seven"> 12,61, </key>
+<key name="sew"> 12,43,70, </key>
+<key name="sewbordertosid"> 70, </key>
+<key name="sewconformfreeborder"> 70, </key>
+<key name="sewfreeborder"> 70, </key>
+<key name="sewsideelement"> 70, </key>
+<key name="sg"> 57,61,66,70, </key>
+<key name="shad"> 0,65,71, </key>
+<key name="shall"> 21,27,28,35,64,67,41,46,48,49,50, </key>
+<key name="shap"> 13,14,12,61,64,45, </key>
+<key name="shape_mesh"> 61, </key>
+<key name="shape1d"> 61, </key>
+<key name="shapetyp"> 6,8,57,61,66,69,70, </key>
+<key name="shell"> 66, </key>
+<key name="shift"> 17,1,26,39,45, </key>
+<key name="shortest"> 54, </key>
+<key name="should"> 19,7,25,11,12,64,67,41,68,43,45,51, </key>
+<key name="show"> 19,5,12,68,53, </key>
+<key name="shown"> 16,45, </key>
+<key name="shrink"> 65, </key>
+<key name="sid"> 6,8,36,63,43,44,70, </key>
+<key name="simp"> 23,37, </key>
+<key name="simpl"> 14,17,12,64, </key>
+<key name="simplex"> 20,2, </key>
+<key name="sin"> 61, </key>
+<key name="sin_bot"> 61, </key>
+<key name="sin_top"> 61, </key>
+<key name="six"> 12,61, </key>
+<key name="siz"> 0,63,69,45, </key>
+<key name="sk"> 20,2, </key>
+<key name="sketch"> 8, </key>
+<key name="sketcher"> 8, </key>
+<key name="sketcher1"> 8, </key>
+<key name="sketcher2"> 8, </key>
+<key name="skew"> 16,26,60,66,44,49, </key>
+<key name="skew_margin"> 66, </key>
+<key name="slid"> 71, </key>
+<key name="small"> 53, </key>
+<key name="smesh"> 6,8,57,61,66,62,43,69,70,72, </key>
+<key name="smesh_mechanic"> 57,61,66,70, </key>
+<key name="smesh_mechanic_tetra"> 66, </key>
+<key name="smesh_mesheditor"> 61,70, </key>
+<key name="smeshgroup1"> 57, </key>
+<key name="smeshgui"> 61, </key>
+<key name="smooth"> 61,45, </key>
+<key name="smoothobject"> 61, </key>
+<key name="smp"> 64, </key>
+<key name="so"> 13,19,20,12,61,64,43,47, </key>
+<key name="solid"> 8,60, </key>
+<key name="somewhat"> 17, </key>
+<key name="soon"> 6, </key>
+<key name="sort"> 21,25,26,49, </key>
+<key name="sourc"> 68, </key>
+<key name="spac"> 14,64,41,48, </key>
+<key name="specifi"> 19,3,64,39,43,45, </key>
+<key name="specific"> 22,68, </key>
+<key name="specify"> 17,1,26,11,12,64,39,67,41,68,45,46,48,51, </key>
+<key name="spher"> 19,20,23, </key>
+<key name="split"> 15,19,2,5,63,43, </key>
+<key name="sqrt"> 61, </key>
+<key name="standalon"> 25,57,68, </key>
+<key name="standard"> 0,7,31,69,52, </key>
+<key name="start"> 13,19,5,8,12,60,42,43,48, </key>
+<key name="startendlength"> 8, </key>
+<key name="static"> 62, </key>
+<key name="statu"> 61, </key>
+<key name="step"> 11,67, </key>
+<key name="stor"> 64,68, </key>
+<key name="str"> 62, </key>
+<key name="straight"> 1,8,12,61,37, </key>
+<key name="stretch"> 53, </key>
+<key name="strict"> 53, </key>
+<key name="structur"> 23,24,61,62, </key>
+<key name="study"> 8,57,68,69, </key>
+<key name="stuf"> 53, </key>
+<key name="styl"> 6, </key>
+<key name="sub"> 6,8,12,31,35,64,41,43,46,48, </key>
+<key name="submenu"> 17,10,39,40, </key>
+<key name="submesh"> 13,21,22,6,24,25,26,11,12,38,67,45,48,49,52, </key>
+<key name="subshapeall"> 6,8,57,61,66,70, </key>
+<key name="subshapeallid"> 69, </key>
+<key name="subshapeallsort"> 61, </key>
+<key name="subshapelist"> 6,57, </key>
+<key name="subshapenam"> 6, </key>
+<key name="succed"> 8, </key>
 <key name="sum"> 2, </key>
-<key name="supplement"> 36, </key>
-<key name="supplementary"> 25, </key>
-<key name="surfac"> 13,19,2,10,61,64,42, </key>
-<key name="surround"> 13,44, </key>
-<key name="sweep"> 60, </key>
-<key name="swept"> 10,64, </key>
+<key name="supplement"> 37, </key>
+<key name="supplementary"> 26, </key>
+<key name="surfac"> 14,20,2,11,12,64,67,43, </key>
+<key name="surround"> 14,45, </key>
+<key name="swept"> 11,67, </key>
 <key name="switch"> 1, </key>
-<key name="symmetrical"> 45,66, </key>
-<key name="symmetry"> 45,66, </key>
-<key name="syntax"> 65, </key>
-<key name="t"> 13,18,2,22,36,61,62,52, </key>
-<key name="tabl"> 1,18, </key>
-<key name="tak"> 19,48, </key>
-<key name="taken"> 12,21,24,7,61, </key>
-<key name="tap"> 15,24,59,63,46, </key>
-<key name="techniqu"> 44, </key>
-<key name="tetra3d"> 7, </key>
-<key name="tetrahedral"> 14, </key>
-<key name="tetrahedralization"> 22, </key>
-<key name="tetrahedron"> 13,14,16,2,7,60,33,68, </key>
-<key name="th"> 61,42, </key>
-<key name="them"> 12,16,1,18,2,24,8,9,10,11,34,38,64,42,44,52, </key>
-<key name="thos"> 25,48, </key>
-<key name="thre"> 13,1,19,7,60,36,42,45, </key>
-<key name="threshold"> 65, </key>
-<key name="tick"> 52, </key>
+<key name="symmetrical"> 46,70, </key>
+<key name="symmetry"> 46,70, </key>
+<key name="syntax"> 68, </key>
+<key name="t"> 14,19,2,23,57,61,37,64,65,66,70,53, </key>
+<key name="t1"> 61, </key>
+<key name="tabl"> 1,19, </key>
+<key name="tak"> 20,49, </key>
+<key name="taken"> 13,22,25,8,64, </key>
+<key name="tap"> 16,25,60,66,47, </key>
+<key name="taper_margin"> 66, </key>
+<key name="techniqu"> 45, </key>
+<key name="tetra"> 6,8,69,72, </key>
+<key name="tetrahedral"> 15,8,63,69, </key>
+<key name="tetrahedralization"> 23, </key>
+<key name="tetrahedrical"> 8, </key>
+<key name="tetrahedron"> 14,15,17,2,6,8,61,34,69,72, </key>
+<key name="tetran"> 8, </key>
+<key name="th"> 64,43, </key>
+<key name="them"> 13,17,1,19,2,25,9,10,11,12,35,63,39,67,43,45,53, </key>
+<key name="themesh"> 6, </key>
+<key name="third"> 12, </key>
+<key name="thos"> 26,49, </key>
+<key name="thre"> 14,1,20,61,63,37,43,46, </key>
+<key name="threshold"> 68, </key>
+<key name="tick"> 53, </key>
 <key name="tim"> 0, </key>
 <key name="tmp"> 6, </key>
-<key name="togeth"> 32, </key>
-<key name="toggl"> 16,65,47, </key>
-<key name="toleranc"> 34,64,65,66, </key>
-<key name="tool"> 65,50, </key>
-<key name="toolbar"> 19,2,20,22,23,25,26,27,29,10,11,31,61,38,39,64,41,43,44,46,48,49,51,69,52,53, </key>
-<key name="top"> 60, </key>
-<key name="topological"> 13,42, </key>
-<key name="topology"> 13, </key>
-<key name="total"> 51, </key>
-<key name="toward"> 44, </key>
-<key name="transform"> 27,66, </key>
-<key name="transformation"> 34,40,42,45,47, </key>
-<key name="translat"> 66,47, </key>
-<key name="translateobject"> 66, </key>
-<key name="translation"> 66,47, </key>
-<key name="transparency"> 0,67, </key>
-<key name="transparent"> 67, </key>
-<key name="tri_mesh"> 66, </key>
-<key name="tria"> 7,60,66, </key>
-<key name="tria_mesh"> 7, </key>
-<key name="triangl"> 13,14,16,1,17,19,7,26,10,32,31,58,35,60,64,43,46,66,48,49,68,52, </key>
-<key name="triangle_mefisto"> 60, </key>
-<key name="triangular"> 14,32, </key>
-<key name="triangulation"> 7, </key>
-<key name="trihedron"> 52, </key>
-<key name="tritoquad"> 60, </key>
-<key name="try"> 22, </key>
-<key name="tt"> 7, </key>
-<key name="tui"> 14,16,17,18,19,2,3,4,20,22,23,24,25,26,27,29,10,11,54,55,30,57,32,31,58,34,35,33,36,61,37,38,39,64,40,42,43,44,45,46,47,48,49,50,51,69,53, </key>
-<key name="two"> 13,16,5,24,25,7,26,11,56,35,60,61,42,46,66,47,49,50,51, </key>
-<key name="typ"> 13,16,18,19,2,21,22,24,10,11,38,64,65,42,51, </key>
-<key name="typical"> 44, </key>
-<key name="u"> 13,42, </key>
-<key name="unary"> 65, </key>
-<key name="unassign"> 37, </key>
-<key name="uniform"> 44, </key>
-<key name="union"> 56,48,49,50, </key>
-<key name="uniongroup"> 56, </key>
-<key name="unit"> 60,42,48,49,50, </key>
-<key name="unles"> 36, </key>
-<key name="unv"> 30, </key>
-<key name="up"> 18,8,28, </key>
-<key name="updat"> 0,41,44, </key>
-<key name="updateobjbrows"> 6,7,56,60,63,66,68, </key>
-<key name="upload"> 65, </key>
-<key name="us"> 13,14,18,3,5,22,23,24,10,32,34,61,64,65,42,44,67,50,52, </key>
-<key name="usag"> 15, </key>
-<key name="useful"> 0,16,24,11, </key>
-<key name="usual"> 42,44, </key>
-<key name="v"> 13, </key>
-<key name="valu"> 12,15,18,19,2,22,6,11,57,35,36,37,65,43,68, </key>
-<key name="vari"> 19, </key>
+<key name="togeth"> 33, </key>
+<key name="toggl"> 17,68,48, </key>
+<key name="toleranc"> 35,67,68,70, </key>
+<key name="tool"> 68,51, </key>
+<key name="toolbar"> 20,2,21,23,24,7,26,27,28,30,11,12,32,64,39,40,67,42,44,45,47,49,50,52,73,53,54, </key>
+<key name="top"> 61, </key>
+<key name="topological"> 14,43, </key>
+<key name="topology"> 14, </key>
+<key name="toru"> 7, </key>
+<key name="total"> 52, </key>
+<key name="toward"> 45, </key>
+<key name="transform"> 28,70, </key>
+<key name="transformation"> 35,41,43,46,48, </key>
+<key name="translat"> 70,48, </key>
+<key name="translateobject"> 70, </key>
+<key name="translation"> 70,48, </key>
+<key name="transparency"> 0,71, </key>
+<key name="transparent"> 71, </key>
+<key name="transtorm"> 7, </key>
+<key name="tri_mesh"> 70, </key>
+<key name="tria"> 6,8,66,70, </key>
+<key name="tria_mesh"> 8, </key>
+<key name="triangl"> 14,15,17,1,18,20,6,8,27,11,33,32,59,36,61,63,66,67,44,69,47,70,49,50,72,53, </key>
+<key name="triangular"> 15,33, </key>
+<key name="triangulation"> 8, </key>
+<key name="trihedron"> 53, </key>
+<key name="tritoquad"> 61, </key>
+<key name="truncat"> 69, </key>
+<key name="try"> 23,63, </key>
+<key name="tt"> 8,61, </key>
+<key name="tui"> 15,17,18,19,20,2,3,4,21,23,24,25,26,27,28,30,11,12,55,56,31,58,33,32,59,35,36,37,34,64,38,39,40,67,41,43,44,45,46,47,48,49,50,51,52,73,54, </key>
+<key name="tupl"> 62, </key>
+<key name="two"> 14,17,5,25,26,8,27,12,57,36,61,63,64,66,43,47,70,48,50,51,52, </key>
+<key name="typ"> 14,17,19,20,2,22,23,25,11,12,39,67,68,43,52, </key>
+<key name="typical"> 45, </key>
+<key name="u"> 14,43, </key>
+<key name="unary"> 68, </key>
+<key name="unassign"> 38, </key>
+<key name="uniform"> 45, </key>
+<key name="union"> 57,49,50,51, </key>
+<key name="uniongroup"> 57, </key>
+<key name="unionid"> 69, </key>
+<key name="unit"> 61,43,49,50,51, </key>
+<key name="unles"> 37, </key>
+<key name="unv"> 31, </key>
+<key name="up"> 19,9,29, </key>
+<key name="updat"> 0,6,57,61,66,42,45,70, </key>
+<key name="updateobjbrows"> 57,61,66,70, </key>
+<key name="upload"> 68, </key>
+<key name="us"> 14,15,19,3,5,23,24,25,11,12,57,33,35,61,63,64,66,67,68,43,45,70,71,51,53, </key>
+<key name="usag"> 16,6,57,61,66,69,70, </key>
+<key name="useful"> 0,17,25,12,63, </key>
+<key name="usual"> 43,45, </key>
+<key name="v"> 14, </key>
+<key name="valu"> 13,16,19,20,2,23,6,12,58,36,37,38,68,44,69, </key>
+<key name="vari"> 20, </key>
+<key name="variabl"> 62, </key>
 <key name="variou"> 0, </key>
-<key name="ve"> 16, </key>
-<key name="vector"> 7,10,11,60,64,40,45,66,47,53, </key>
-<key name="vertex"> 13,61, </key>
-<key name="vertic"> 6,7,61, </key>
-<key name="very"> 16,11, </key>
-<key name="via"> 65,51,52, </key>
-<key name="view"> 0,16,1,17,19,2,20,5,24,25,8,26,27,28,10,11,31,35,38,39,64,65,42,43,44,46,48,49,51,68,69,52,53, </key>
-<key name="visibl"> 52, </key>
-<key name="visual"> 15, </key>
-<key name="visualiz"> 52, </key>
+<key name="ve"> 17, </key>
+<key name="vector"> 11,12,61,67,41,46,70,48,54, </key>
+<key name="versa"> 7, </key>
+<key name="version"> 57,61,66,70, </key>
+<key name="vert"> 61, </key>
+<key name="vertex"> 14,64, </key>
+<key name="vertex_"> 61, </key>
+<key name="vertic"> 61,64, </key>
+<key name="very"> 17,12,63, </key>
+<key name="via"> 68,52,53, </key>
+<key name="vic"> 7, </key>
+<key name="vid"> 61, </key>
+<key name="view"> 0,17,1,18,20,2,21,5,25,26,9,27,28,29,11,12,32,36,39,40,67,68,43,44,45,47,49,50,52,72,73,53,54, </key>
+<key name="visibl"> 53, </key>
+<key name="visual"> 16, </key>
+<key name="visualiz"> 53, </key>
 <key name="vk"> 2, </key>
-<key name="volum"> 12,13,14,15,16,2,21,24,7,9,59,60,33,63,65,66,51,68,69, </key>
-<key name="vtk"> 0,52, </key>
-<key name="vxy"> 7,60,66, </key>
-<key name="walk"> 61, </key>
-<key name="warp"> 15,25,59,63,48,53, </key>
-<key name="way"> 13,16,22,23,24,11,61,37,50, </key>
-<key name="weight"> 44, </key>
-<key name="well"> 61, </key>
-<key name="wheth"> 65, </key>
-<key name="whil"> 38, </key>
-<key name="whit"> 54, </key>
-<key name="whol"> 2,10,11,60,64,65,44,47, </key>
-<key name="whos"> 20,24,25,36,48, </key>
-<key name="will"> 12,13,0,16,1,17,18,19,2,20,21,22,23,24,25,8,27,28,29,10,11,30,32,31,58,35,60,33,36,61,38,39,64,41,65,42,43,44,46,67,48,50,51,69,53, </key>
+<key name="volum"> 13,14,15,16,17,2,22,6,25,8,10,12,60,61,34,66,68,70,52,72,73, </key>
+<key name="volume_margin"> 66, </key>
+<key name="vtk"> 0,53, </key>
+<key name="vxy"> 8,70, </key>
+<key name="wa_margin"> 66, </key>
+<key name="walk"> 64, </key>
+<key name="warp"> 16,26,60,66,49,54, </key>
+<key name="way"> 14,17,23,24,25,12,64,38,51, </key>
+<key name="weight"> 45, </key>
+<key name="well"> 64, </key>
+<key name="wheth"> 68, </key>
+<key name="whil"> 39, </key>
+<key name="whit"> 12,55, </key>
+<key name="whol"> 2,11,12,67,68,45,48, </key>
+<key name="whos"> 21,25,26,37,49, </key>
+<key name="will"> 13,14,0,17,1,18,19,20,2,21,22,23,6,24,7,25,26,9,28,29,30,11,12,57,31,33,32,59,36,61,63,37,34,64,66,39,40,67,42,68,43,44,45,47,70,71,49,51,52,73,54, </key>
 <key name="window"> 5, </key>
-<key name="wir"> 14,6,7,11,32,60,66, </key>
-<key name="wire_discretisation"> 60, </key>
-<key name="wirefram"> 0,11,62, </key>
-<key name="wish"> 22,8,30,52, </key>
-<key name="within"> 18,61,42, </key>
-<key name="without"> 1,63, </key>
-<key name="word"> 18, </key>
-<key name="work"> 1,11, </key>
-<key name="worst"> 19, </key>
-<key name="would"> 16,42, </key>
-<key name="ww"> 7, </key>
-<key name="x"> 13,5,53, </key>
-<key name="x0"> 60, </key>
-<key name="y"> 13,5, </key>
-<key name="y0"> 60, </key>
-<key name="your"> 12,13,15,0,16,1,17,18,19,2,20,5,21,22,23,24,27,28,29,30,32,31,34,35,33,61,62,37,38,39,40,65,43,44,45,46,47,51,69,53, </key>
-<key name="z"> 13,5, </key>
-<key name="z0"> 60, </key>
-<key name="zero"> 61, </key>
-<key name="zoom"> 52, </key>
+<key name="wir"> 15,8,12,33,61,63,70, </key>
+<key name="wire_discretisation"> 61, </key>
+<key name="wire_polylin"> 61, </key>
+<key name="wire_polyline_edg"> 61, </key>
+<key name="wire_polyline_mesh"> 61, </key>
+<key name="wirefram"> 0,65, </key>
+<key name="wish"> 23,7,9,31,53, </key>
+<key name="within"> 19,64,43, </key>
+<key name="without"> 1,12,66, </key>
+<key name="word"> 19, </key>
+<key name="work"> 1,12,63, </key>
+<key name="worst"> 20, </key>
+<key name="would"> 17,43, </key>
+<key name="written"> 57,61,66,70, </key>
+<key name="ww"> 8, </key>
+<key name="x"> 14,5,54, </key>
+<key name="x0"> 61, </key>
+<key name="y"> 14,5, </key>
+<key name="y0"> 61, </key>
+<key name="your"> 13,14,16,0,17,1,18,19,20,2,21,5,22,23,24,25,28,29,30,31,33,32,35,36,34,64,65,38,39,40,41,68,44,45,46,47,48,52,73,54, </key>
+<key name="z"> 14,5, </key>
+<key name="z0"> 61, </key>
+<key name="zero"> 64, </key>
+<key name="zoom"> 53, </key>
 
 </ftswdata>  
index 26bf3274ff80a6c595a0075ec8392c7205238d74..66e5da0978e7ae1881670d2c997b5ad6820ba63b 100755 (executable)
@@ -3,6 +3,7 @@
 <book name="MESH module" >
   <item name="Introduction to Mesh" url="mesh.htm" />
   <item name="Running MESH module" url="files/running_smesh_module.htm" />
+  <item name="Introduction to MESH module python interface" url="smesh.py_introduction.htm" />
   <book name="Creating meshes" >
     <item name="About meshes" url="files/about_meshes.htm" />
     <item name="Importing and exporting meshes" url="files/importing_and_exporting_meshes.htm" />
@@ -13,6 +14,7 @@
       <item name="1D Meshing Hypotheses" url="files/arithmetic_1d.htm" />
       <item name="2D Meshing Hypotheses" url="files/max._element_area_hypothesis.htm" />
       <item name="Max Element Volume hypothesis" url="files/max._element_volume_hypothsis.htm" />
+      <item name="Netgen 2D and 3D hypotheses" url="netgen_2d_and_3d_hypotheses.htm" />
       <item name="Additional Hypotheses" url="files/non_conform_mesh_allowed_hypothesis.htm" />
     </book>
     <item name="Constructing submeshes" url="files/constructing_submeshes.htm" />
     <item name="Extrusion along a path" url="extrusion_along_a_path.htm" />
     <item name="Revolution" url="revolution.htm" />
     <item name="Pattern mapping" url="pattern_mapping.htm" />
+    <item name="Convert to/from Quadratic Mesh" url="convert_to_from_quadratic_mesh.htm" />
   </book>
-  <item name="Access to Mesh module functionality from Python (using smesh.py)" url="smeshpy_doc/namespacesmesh.html" />
+  <item name="Python Interface smesh.py" url="smeshpy_doc/namespacesmesh.html" /> 
   <book name="TUI Scripts" >
     <item name="Creating Meshes" url="constructing_meshes.htm" />
-    <item name="Defining Hypotheses" url="defining_hypotheses_tui.htm" />
     <item name="Viewing Meshes" url="viewing_meshes.htm" />
+    <item name="Defining Hypotheses" url="defining_hypotheses_tui.htm" />
     <item name="Quality Controls" url="quality_controls.htm" />
     <item name="Grouping Elements" url="grouping_elements.htm" />
     <item name="Modifying Meshes" url="modifying_meshes.htm" />
index f860aef7b4f299c1338d7d126a1c1582c3fb0841..64c368819a4aca340cedffc758cdb5ff00fd3eda 100755 (executable)
@@ -202,10 +202,10 @@ SMESH module.<br>
 The SALOME automatically locates XML files, searching them in the following
 directories:<br>
   <tt><br>
-&nbsp;&nbsp;&nbsp; ${&lt;PLUGINNAME&gt;_ROOT_DIR}/share/salome/resources<br>
+&nbsp;&nbsp;&nbsp; ${&lt;PLUGINNAME&gt;_ROOT_DIR}/share/salome/resources/&lt;pluginname&gt;<br>
 &nbsp;&nbsp;&nbsp; ${SALOME_&lt;PluginName&gt;Resources}<br>
 &nbsp;&nbsp;&nbsp; ${HOME}/.salome/resources<br>
-&nbsp;&nbsp;&nbsp; ${KERNEL_ROOT_DIR}/share/salome/resources</tt><br>
+&nbsp;&nbsp;&nbsp; ${KERNEL_ROOT_DIR}/share/salome/resources/kernel</tt><br>
   <br>
 where &lt;PluginName&gt; is a name of each mesher plugin package<br>
 </blockquote>
@@ -280,7 +280,7 @@ See paragraph 2 for definition of MyResourceKey, MyHypType1, MyAlgType1.<tt><br>
 <h5> <a name="2_4_2_2"></a>2.4.2.2. Define environment variable SALOME_&lt;MyResourceKey&gt;Resources</h5>
 <blockquote>It should point to the directory where resources are situated.</blockquote>
   
-<blockquote><tt>Example: setenv SALOME_StdMeshersResources ${SMESH_ROOT_DIR}/share/salome/resources</tt></blockquote>
+<blockquote><tt>Example: setenv SALOME_StdMeshersResources ${SMESH_ROOT_DIR}/share/salome/resources/smesh</tt></blockquote>
   
 <h4> <a name="2_4_3"></a>2.4.3. Implement your Hypothesis Creator and being
 exported method</h4>
index b32b3d22f8775b4ecfc6255788de654fffa6b549..5018b07815759813ab6ef3f6a71973c6f2b9b29f 100644 (file)
@@ -30,9 +30,6 @@
 #include "GEOM_Gen.idl"
 #include "SMESH_Mesh.idl"
 
-#include "GEOM_Gen.idl"
-
-
 module SMESH
 {
 
index 2f608b954329189f01fb3ab681a10fc1df522ccc..e636b7f49cff5720237fe69d9f05ba46f02b5c65 100644 (file)
@@ -121,6 +121,7 @@ module SMESH
     
     /*!
      * Create Mesh object importing data from given UNV file
+     * (UNV supported version is I-DEAS 10)
      */
     SMESH_Mesh CreateMeshesFromUNV( in string theFileName )
       raises ( SALOME::SALOME_Exception );
@@ -169,7 +170,8 @@ module SMESH
       raises ( SALOME::SALOME_Exception );
 
     /*!
-     * 
+     * Return indeces of faces, edges and vertices of given subshapes
+     * within theMainObject
      */
     long_array GetSubShapesId( in GEOM::GEOM_Object theMainObject,
                                in object_array      theListOfSubObjects )
index 5134fe24b38f938f852555e625abe4111b1f546a..2407d3cef791a744bda7f9f70fa84c4c17122339 100644 (file)
@@ -374,6 +374,7 @@ module SMESH
 
     /*!
      * Export Mesh to DAT, UNV and STL Formats
+     * (UNV supported version is I-DEAS 10)
      */
     void ExportDAT( in string file )
       raises (SALOME::SALOME_Exception);
@@ -642,6 +643,16 @@ module SMESH
 
     long AddNode(in double x, in double y, in double z);
 
+    /*!
+     *  Following methods are intented for creation edges, faces
+     *  and volumes both similar and quadratic (this is determed
+     *  by number of given nodes).
+     *  \param IdsOfNodes List of node IDs for creation of element.
+     *  Needed order of nodes in this list corresponds to description
+     *  of MED. This description is located by the following link:
+     *   http://www.salome-platform.org/salome2/web_med_internet/logiciels/
+     *     medV2.2.2_doc_html/html/modele_de_donnees.html#3.
+     */
     long AddEdge(in long_array IDsOfNodes);
 
     long AddFace(in long_array IDsOfNodes);
index 3b4db83caac8a79c61b3f36375eb67d6a79b7c3d..0c4b44de6c6a2d879219bfa1b3ee37e247dba673 100644 (file)
   </section>
   <section name="resources">
     <!-- Module resources -->
-    <parameter name="SMESH"      value="${SMESH_ROOT_DIR}/share/salome/resources"/>
-    <parameter name="StdMeshers" value="${SMESH_ROOT_DIR}/share/salome/resources"/>
+    <parameter name="SMESH"        value="${SMESH_ROOT_DIR}/share/salome/resources/smesh"/>
+    <parameter name="StdMeshers"   value="${SMESH_ROOT_DIR}/share/salome/resources/smesh"/>
+    <!-- NETGENPlugin and GHS3DPlugin -->
+    <!-- Here the environment variables are used as case-sensitive, -->
+    <!-- In GUI/src/SalomeApp/resources/SalomeApp.xml upper-case notation is used. -->
+    <!-- As a result, both variants are acceptable. -->
+    <parameter name="NETGENPlugin" value="${NETGENPlugin_ROOT_DIR}/share/salome/resources/netgenplugin"/>
+    <parameter name="GHS3DPlugin"  value="${GHS3DPlugin_ROOT_DIR}/share/salome/resources/ghs3dplugin"/>
   </section>
 </document>
index 1d887ed826add0c1fa327006c5ab4c2d7eeb42a6..0d8052d19ee042b42b737ad9d0eb794f60740029 100644 (file)
@@ -350,36 +350,49 @@ double AspectRatio::GetValue( const TSequenceOfXYZ& P )
   if ( nbNodes < 3 )
     return 0;
 
-  // Compute lengths of the sides
-
-  vector< double > aLen (nbNodes);
-
-  for ( int i = 0; i < nbNodes - 1; i++ )
-    aLen[ i ] = getDistance( P( i + 1 ), P( i + 2 ) );
-  aLen[ nbNodes - 1 ] = getDistance( P( 1 ), P( nbNodes ) );
-
   // Compute aspect ratio
 
-  if ( nbNodes == 3 )
-  {
+  if ( nbNodes == 3 ) {
+    // Compute lengths of the sides
+    vector< double > aLen (nbNodes);
+    for ( int i = 0; i < nbNodes - 1; i++ )
+      aLen[ i ] = getDistance( P( i + 1 ), P( i + 2 ) );
+    aLen[ nbNodes - 1 ] = getDistance( P( 1 ), P( nbNodes ) );
     // Q = alfa * h * p / S, where
     //
     // alfa = sqrt( 3 ) / 6
     // h - length of the longest edge
     // p - half perimeter
     // S - triangle surface
-
     const double alfa = sqrt( 3. ) / 6.;
     double maxLen = Max( aLen[ 0 ], Max( aLen[ 1 ], aLen[ 2 ] ) );
     double half_perimeter = ( aLen[0] + aLen[1] + aLen[2] ) / 2.;
     double anArea = getArea( P( 1 ), P( 2 ), P( 3 ) );
     if ( anArea <= Precision::Confusion() )
       return 0.;
-
     return alfa * maxLen * half_perimeter / anArea;
   }
-  else
-  {
+  else if ( nbNodes == 6 ) { // quadratic triangles
+    // Compute lengths of the sides
+    vector< double > aLen (3);
+    aLen[0] = getDistance( P(1), P(3) );
+    aLen[1] = getDistance( P(3), P(5) );
+    aLen[2] = getDistance( P(5), P(1) );
+    // Q = alfa * h * p / S, where
+    //
+    // alfa = sqrt( 3 ) / 6
+    // h - length of the longest edge
+    // p - half perimeter
+    // S - triangle surface
+    const double alfa = sqrt( 3. ) / 6.;
+    double maxLen = Max( aLen[ 0 ], Max( aLen[ 1 ], aLen[ 2 ] ) );
+    double half_perimeter = ( aLen[0] + aLen[1] + aLen[2] ) / 2.;
+    double anArea = getArea( P(1), P(3), P(5) );
+    if ( anArea <= Precision::Confusion() )
+      return 0.;
+    return alfa * maxLen * half_perimeter / anArea;
+  }
+  else if( nbNodes == 4 ) { // quadrangle
     // return aspect ratio of the worst triange which can be built
     // taking three nodes of the quadrangle
     TSequenceOfXYZ triaPnts(3);
@@ -398,6 +411,27 @@ double AspectRatio::GetValue( const TSequenceOfXYZ& P )
     triaPnts(1) = P(3);
     ar = Max ( ar, GetValue( triaPnts ));
 
+    return ar;
+  }
+  else { // nbNodes==8 - quadratic quadrangle
+    // return aspect ratio of the worst triange which can be built
+    // taking three nodes of the quadrangle
+    TSequenceOfXYZ triaPnts(3);
+    // triangle on nodes 1 3 2
+    triaPnts(1) = P(1);
+    triaPnts(2) = P(5);
+    triaPnts(3) = P(3);
+    double ar = GetValue( triaPnts );
+    // triangle on nodes 1 3 4
+    triaPnts(3) = P(7);
+    ar = Max ( ar, GetValue( triaPnts ));
+    // triangle on nodes 1 2 4
+    triaPnts(2) = P(3);
+    ar = Max ( ar, GetValue( triaPnts ));
+    // triangle on nodes 3 2 4
+    triaPnts(1) = P(5);
+    ar = Max ( ar, GetValue( triaPnts ));
+
     return ar;
   }
 }
@@ -486,7 +520,17 @@ double AspectRatio3D::GetValue( const TSequenceOfXYZ& P )
 {
   double aQuality = 0.0;
   if(myCurrElement->IsPoly()) return aQuality;
+
   int nbNodes = P.size();
+
+  if(myCurrElement->IsQuadratic()) {
+    if(nbNodes==10) nbNodes=4; // quadratic tetrahedron
+    else if(nbNodes==13) nbNodes=5; // quadratic pyramid
+    else if(nbNodes==15) nbNodes=6; // quadratic pentahedron
+    else if(nbNodes==20) nbNodes=8; // quadratic hexahedron
+    else return aQuality;
+  }
+
   switch(nbNodes){
   case 4:{
     double aLen[6] = {
index 7e7c9b6ae3baac5b3bbde3b42e76c32278382299..f87bd3f075bdb6ea0fd6bc2ae5d39ba2809ed5a7 100644 (file)
@@ -130,9 +130,11 @@ DriverMED_R_SMESHDS_Mesh
 
         // Reading MED nodes to the corresponding SMDS structure
        //------------------------------------------------------
-      PNodeInfo aNodeInfo = aMed->GetPNodeInfo(aMeshInfo);
-       if(!aNodeInfo)
+        PNodeInfo aNodeInfo = aMed->GetPNodeInfo(aMeshInfo);
+       if (!aNodeInfo) {
+          aResult = DRS_FAIL;
          continue;
+        }
 
        PCoordHelper aCoordHelper = GetCoordHelper(aNodeInfo);
 
@@ -915,18 +917,17 @@ bool DriverMED_R_SMESHDS_Mesh::buildMeshGrille(const MED::PWrapper& theWrapper,
     for(MED::TInt iDim=0;iDim<aMeshDim;iDim++)
       aCoords[(int)iDim] = aMEDNodeCoord[(int)iDim];
     aNode = myMesh->AddNodeWithID(aCoords[0],aCoords[1],aCoords[2],(int)iNode);
-  }
 
-  /* not implemented FAMILY
-     
-  TInt aFamNum = aNodeInfo->GetFamNum(iElem);
-  if ( checkFamilyID ( aFamily, aFamNum ))
-    {
-      aFamily->AddElement(aNode);
-      aFamily->SetType(SMDSAbs_Node);
+    if((aGrilleInfo->myFamNumNode).size() > 0){
+      TInt aFamNum = aGrilleInfo->GetFamNumNode(iNode);
+      if ( checkFamilyID ( aFamily, aFamNum ))
+       {
+         aFamily->AddElement(aNode);
+         aFamily->SetType(SMDSAbs_Node);
+       }
     }
     
-  */
+  }
 
   SMDS_MeshElement* anElement = NULL;
   MED::TIntVector aNodeIds;
@@ -971,6 +972,14 @@ bool DriverMED_R_SMESHDS_Mesh::buildMeshGrille(const MED::PWrapper& theWrapper,
     default:
       break;
     }
+    
+    if((aGrilleInfo->myFamNum).size() > 0){
+      TInt aFamNum = aGrilleInfo->GetFamNum(iCell);
+      if ( checkFamilyID ( aFamily, aFamNum )){
+       aFamily->AddElement(anElement);
+       aFamily->SetType(anElement->GetType());
+      }
+    }
   }
 
   return res;
index 634accfba901519605222d0dd4e09473207e7f69..f6cf1ff7833658b27de42a44e5dcd41944493bdd 100644 (file)
@@ -454,7 +454,7 @@ Driver_Mesh::Status DriverMED_W_SMESHDS_Mesh::Perform()
         if ( edge_fam != anElemFamMap.end() )
           aFamilyNums->push_back( edge_fam->second );
         else
-          aFamilyNums->push_back( myFacesDefaultFamilyId );
+          aFamilyNums->push_back( myEdgesDefaultFamilyId );
       }
       
       if ( aNbSeg2 ) {
index 5925fffff91900284557aa4e78b108c80f5da541..d08b98f55f71fc7684c21fc47c80cf33a6f4c9ed 100644 (file)
@@ -31,6 +31,9 @@ class SMDS_Mesh;
 class SMDS_MeshGroup;
 
 
+typedef std::map<SMDS_MeshGroup*, std::string> TGroupNamesMap;
+typedef std::map<SMDS_MeshGroup*, int> TGroupIdMap;
+
 typedef std::map<SMDS_MeshGroup*, std::string> TGroupNamesMap;
 typedef std::map<SMDS_MeshGroup*, int> TGroupIdMap;
 
index 9aafe707b9ac5cf3f456fbfed81dc05b9fc25861..aa69c4aaac9888d2df657c8ab0c7e3f40d4d0ed2 100755 (executable)
@@ -66,7 +66,15 @@ typedef unsigned long int N;
 
 //le type Z des nombres entiers relatifs
 //=========
-typedef long int Z;
+// 64-bit porting: "long" replaced with "int". 
+// On 64-bit, C++ long type is 8 byte long. MEFISTO2D C code calls several Fortran subroutines passing
+// arguments of this type, however Fortran knows nothing about changed size of arguments, 
+// therefore stack gets corrupted. With "int" used instead of "long", Fortran calls from C do no harm to the stack
+// After this modification, behavior on 32-bit platforms does not change: on all platforms supported by
+// SALOME 3, "int" and "long" have the same size of 4 bytes. 
+//========
+//typedef long int Z;
+typedef int Z;
 
 //le type R des nombres "reels"
 //=========
index aeddd7b2b2bbf2cefcf065753035778fc05616ae..165f9ae5cc48e6795c4059589bd44cf0841a0602 100644 (file)
@@ -51,6 +51,7 @@ LIB_SRC = \
 LIB_CLIENT_IDL = SALOME_Exception.idl \
                 SALOME_GenericObj.idl \
                 SALOME_Comm.idl \
+                SALOME_Component.idl \
                 MED.idl \
                 SMESH_Mesh.idl \
                 SMESH_Group.idl \
index 53c8758f3a0621d9c2185ff5a4a40e1d5aabd02e..114a9549b6e951e77f574ff8fcd14bc2607f9a07 100644 (file)
@@ -1582,7 +1582,7 @@ void SMESH_ActorDef::UpdateScalarBar()
   aScalarBarLabelProp->SetFontFamilyToArial();
   if( mgr->hasValue( "SMESH", "scalar_bar_label_font" ) )
   {
-    QFont f = mgr->stringValue( "SMESH", "scalar_bar_label_font" );
+    QFont f = mgr->fontValue( "SMESH", "scalar_bar_label_font" );
     if( f.family() == "Arial" )
       aScalarBarLabelProp->SetFontFamilyToArial();
     else if( f.family() == "Courier" )
index 7231cdb840e646322c99b65a56328d7f5ee54080..0370d60e165cbdb398efa367cb4a7e066663bffa 100644 (file)
@@ -70,6 +70,7 @@ SMESHOBJECT_EXPORT
   void 
   WriteUnstructuredGrid(vtkUnstructuredGrid* theGrid, 
                        const char* theFileName);
+
 }
 
 #endif
index 42e0db2844c62f6897c1269b23984829eff753c8..71eb869a1e5aed143d9f4db1e97beca421e066db 100644 (file)
@@ -93,7 +93,7 @@ public:
     * \retval int - valid node index
    */
   int WrappedIndex(const int ind) const {
-    if ( ind < 0 ) return -( ind % NbNodes());
+    if ( ind < 0 ) return NbNodes() + ind % NbNodes();
     if ( ind >= NbNodes() ) return ind % NbNodes();
     return ind;
   }
index 66185f0bffe0e1cf44382193549c326cb248770b..204ebab1867e1f233b62f797dd293d4aea3393c5 100644 (file)
@@ -1266,7 +1266,7 @@ bool SMDS_VolumeTool::IsFreeFace( int faceIndex )
   if ( IsFaceExternal( faceIndex ))
     intNormal = XYZ( -intNormal.x, -intNormal.y, -intNormal.z );
   XYZ p0 ( nodes[0] ), baryCenter;
-  for ( vNbIt = volNbShared.begin(); vNbIt != volNbShared.end(); ) {
+  for ( vNbIt = volNbShared.begin(); vNbIt != volNbShared.end(); vNbIt++ ) {
     int nbShared = (*vNbIt).second;
     if ( nbShared >= 3 ) {
       SMDS_VolumeTool volume( (*vNbIt).first );
index bb88ca0bd9ffee65dcde1fb812833c3f7d068292..a56b7a82629198113822ba7002b24c507119dd6a 100644 (file)
@@ -1576,54 +1576,67 @@ const TopTools_ListOfShape& SMESH_Mesh::GetAncestors(const TopoDS_Shape& theS) c
 //=======================================================================
 ostream& SMESH_Mesh::Dump(ostream& save)
 {
-  save << "========================== Dump contents of mesh ==========================" << endl;
-  save << "1) Total number of nodes:     " << NbNodes() << endl;
-  save << "2) Total number of edges:     " << NbEdges() << endl;
-  save << "3) Total number of faces:     " << NbFaces() << endl;
-  if ( NbFaces() > 0 ) {
-    int nb3 = NbTriangles();
-    int nb4 = NbQuadrangles();
-    save << "3.1.) Number of triangles:    " << nb3 << endl;
-    save << "3.2.) Number of quadrangles:  " << nb4 << endl;
-    if ( nb3 + nb4 !=  NbFaces() ) {
-      map<int,int> myFaceMap;
-      SMDS_FaceIteratorPtr itFaces=_myMeshDS->facesIterator();
-      while( itFaces->more( ) ) {
-       int nbNodes = itFaces->next()->NbNodes();
-       if ( myFaceMap.find( nbNodes ) == myFaceMap.end() )
-         myFaceMap[ nbNodes ] = 0;
-       myFaceMap[ nbNodes ] = myFaceMap[ nbNodes ] + 1;
+  int clause = 0;
+  save << "========================== Dump contents of mesh ==========================" << endl << endl;
+  save << ++clause << ") Total number of nodes:   \t"    << NbNodes() << endl;
+  save << ++clause << ") Total number of edges:   \t"    << NbEdges() << endl;
+  save << ++clause << ") Total number of faces:   \t"    << NbFaces() << endl;
+  save << ++clause << ") Total number of polygons:\t"    << NbPolygons() << endl;
+  save << ++clause << ") Total number of volumes:\t"     << NbVolumes() << endl;
+  save << ++clause << ") Total number of polyhedrons:\t" << NbPolyhedrons() << endl << endl;
+  for ( int isQuadratic = 0; isQuadratic < 2; ++isQuadratic )
+  {
+    string orderStr = isQuadratic ? "quadratic" : "linear";
+    ElementOrder order  = isQuadratic ? ORDER_QUADRATIC : ORDER_LINEAR;
+
+    save << ++clause << ") Total number of " << orderStr << " edges:\t" << NbEdges(order) << endl;
+    save << ++clause << ") Total number of " << orderStr << " faces:\t" << NbFaces(order) << endl;
+    if ( NbFaces(order) > 0 ) {
+      int nb3 = NbTriangles(order);
+      int nb4 = NbQuadrangles(order);
+      save << clause << ".1) Number of " << orderStr << " triangles:  \t" << nb3 << endl;
+      save << clause << ".2) Number of " << orderStr << " quadrangles:\t" << nb4 << endl;
+      if ( nb3 + nb4 !=  NbFaces(order) ) {
+        map<int,int> myFaceMap;
+        SMDS_FaceIteratorPtr itFaces=_myMeshDS->facesIterator();
+        while( itFaces->more( ) ) {
+          int nbNodes = itFaces->next()->NbNodes();
+          if ( myFaceMap.find( nbNodes ) == myFaceMap.end() )
+            myFaceMap[ nbNodes ] = 0;
+          myFaceMap[ nbNodes ] = myFaceMap[ nbNodes ] + 1;
+        }
+        save << clause << ".3) Faces in detail: " << endl;
+        map <int,int>::iterator itF;
+        for (itF = myFaceMap.begin(); itF != myFaceMap.end(); itF++)
+          save << "--> nb nodes: " << itF->first << " - nb elemens:\t" << itF->second << endl;
       }
-      save << "3.3.) Faces in detail: " << endl;
-      map <int,int>::iterator itF;
-      for (itF = myFaceMap.begin(); itF != myFaceMap.end(); itF++)
-       save << "--> nb nodes: " << itF->first << " - nb elemens: " << itF->second << endl;
     }
-  }
-  save << "4) Total number of volumes:   " << NbVolumes() << endl;
-  if ( NbVolumes() > 0 ) {
-    int nb8 = NbHexas();
-    int nb4 = NbTetras();
-    int nb5 = NbPyramids();
-    int nb6 = NbPrisms();
-    save << "4.1.) Number of hexahedrons:  " << nb8 << endl;
-    save << "4.2.) Number of tetrahedrons: " << nb4 << endl;
-    save << "4.3.) Number of prisms:       " << nb6 << endl;
-    save << "4.4.) Number of pyramides:    " << nb5 << endl;
-    if ( nb8 + nb4 + nb5 + nb6 != NbVolumes() ) {
-      map<int,int> myVolumesMap;
-      SMDS_VolumeIteratorPtr itVolumes=_myMeshDS->volumesIterator();
-      while( itVolumes->more( ) ) {
-       int nbNodes = itVolumes->next()->NbNodes();
-       if ( myVolumesMap.find( nbNodes ) == myVolumesMap.end() )
-         myVolumesMap[ nbNodes ] = 0;
-       myVolumesMap[ nbNodes ] = myVolumesMap[ nbNodes ] + 1;
+    save << ++clause << ") Total number of " << orderStr << " volumes:\t" << NbVolumes(order) << endl;
+    if ( NbVolumes(order) > 0 ) {
+      int nb8 = NbHexas(order);
+      int nb4 = NbTetras(order);
+      int nb5 = NbPyramids(order);
+      int nb6 = NbPrisms(order);
+      save << clause << ".1) Number of " << orderStr << " hexahedrons:\t" << nb8 << endl;
+      save << clause << ".2) Number of " << orderStr << " tetrahedrons:\t" << nb4 << endl;
+      save << clause << ".3) Number of " << orderStr << " prisms:      \t" << nb6 << endl;
+      save << clause << ".4) Number of " << orderStr << " pyramids:\t" << nb5 << endl;
+      if ( nb8 + nb4 + nb5 + nb6 != NbVolumes(order) ) {
+        map<int,int> myVolumesMap;
+        SMDS_VolumeIteratorPtr itVolumes=_myMeshDS->volumesIterator();
+        while( itVolumes->more( ) ) {
+          int nbNodes = itVolumes->next()->NbNodes();
+          if ( myVolumesMap.find( nbNodes ) == myVolumesMap.end() )
+            myVolumesMap[ nbNodes ] = 0;
+          myVolumesMap[ nbNodes ] = myVolumesMap[ nbNodes ] + 1;
+        }
+        save << clause << ".5) Volumes in detail: " << endl;
+        map <int,int>::iterator itV;
+        for (itV = myVolumesMap.begin(); itV != myVolumesMap.end(); itV++)
+          save << "--> nb nodes: " << itV->first << " - nb elemens:\t" << itV->second << endl;
       }
-      save << "4.5.) Volumes in detail: " << endl;
-      map <int,int>::iterator itV;
-      for (itV = myVolumesMap.begin(); itV != myVolumesMap.end(); itV++)
-       save << "--> nb nodes: " << itV->first << " - nb elemens: " << itV->second << endl;
     }
+    save << endl;
   }
   save << "===========================================================================" << endl;
   return save;
index 3c3c9568bc4fc5ee9cf41d70c0dc298c2f3bfc2a..e9c6a0b7cd65d90b25c742f912fc1ea9362e92ab 100644 (file)
@@ -57,7 +57,17 @@ class gp_Vec;
 class gp_Pnt;
 
 class SMESH_EXPORT SMESH_MeshEditor {
- public:
+public:
+
+  // define a set of elements sorted by ID, to be used to assure
+  // predictability of edition
+  struct TIDCompare {
+    bool operator () (const SMDS_MeshElement* e1, const SMDS_MeshElement* e2)
+    { return e1->GetID() < e2->GetID(); }
+  };
+  typedef set< const SMDS_MeshElement*, TIDCompare > TIDSortedElemSet;
+  
+public:
 
   SMESH_MeshEditor( SMESH_Mesh* theMesh );
 
index 093d3c1cae1bb99bbec207cfebdcd1fc8d61cd6c..56c704ff6449f7a5f2f879c0f974b7cdf9e1050a 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with this library; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
@@ -467,7 +467,7 @@ bool SMESH_subMesh::CanAddHypothesis(const SMESH_Hypothesis* theHypothesis) cons
 
 //=======================================================================
 //function : IsApplicableHypotesis
-//purpose  : 
+//purpose  :
 //=======================================================================
 
 bool SMESH_subMesh::IsApplicableHypotesis(const SMESH_Hypothesis* theHypothesis,
@@ -479,11 +479,20 @@ bool SMESH_subMesh::IsApplicableHypotesis(const SMESH_Hypothesis* theHypothesis,
 
   // hypothesis
   switch ( theShapeType ) {
-  case TopAbs_EDGE: 
-  case TopAbs_FACE: 
-  case TopAbs_SHELL:
+  case TopAbs_EDGE:
+  case TopAbs_FACE:
   case TopAbs_SOLID:
     return SMESH_Gen::GetShapeDim( theShapeType ) == theHypothesis->GetDim();
+
+  case TopAbs_SHELL:
+    // Special case for algorithms, building 2D mesh on a whole shell.
+    // Before this fix there was a problem after restoring from study,
+    // because in that case algorithm is assigned before hypothesis
+    // (on shell in problem case) and hypothesis is checked on faces
+    // (because it is 2D), where we have NO_ALGO state.
+    // Now 2D hypothesis is also applicable to shells.
+    return (theHypothesis->GetDim() == 2 || theHypothesis->GetDim() == 3);
+
 //   case TopAbs_WIRE:
 //   case TopAbs_COMPSOLID:
 //   case TopAbs_COMPOUND:
@@ -841,7 +850,7 @@ SMESH_Hypothesis::Hypothesis_Status
         f.And(    SMESH_HypoFilter::IsApplicableTo( _subShape ));
         f.AndNot( SMESH_HypoFilter::Is( algo ));
         const SMESH_Hypothesis * prevAlgo = _father->GetHypothesis( _subShape, f, true );
-        if (prevAlgo && 
+        if (prevAlgo &&
             string(algo->GetName()) != string(prevAlgo->GetName()) )
           modifiedHyp = true;
       }
@@ -899,7 +908,7 @@ SMESH_Hypothesis::Hypothesis_Status
           f.And(    SMESH_HypoFilter::IsApplicableTo( _subShape ));
           f.AndNot( SMESH_HypoFilter::Is( algo ));
           const SMESH_Hypothesis* prevAlgo = _father->GetHypothesis( _subShape, f, true );
-          if (prevAlgo && 
+          if (prevAlgo &&
               string(algo->GetName()) != string(prevAlgo->GetName()) )
             modifiedHyp = true;
         }
@@ -1264,6 +1273,9 @@ bool SMESH_subMesh::ComputeStateEngine(int event)
         RemoveSubMeshElementsAndNodes();
        {
          try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+            OCC_CATCH_SIGNALS;
+#endif
            if (!algo->NeedDescretBoundary() && !algo->OnlyUnaryInput())
              ret = ApplyToCollection( algo, GetCollection( gen, algo ) );
            else
index 489feb377d2dc82c00a96dcbbbb62ad485f835c9..2d41756a53788cffcde24c0eebb86ee0628c57bd 100644 (file)
@@ -53,9 +53,9 @@ class SMESHDS_EXPORT SMESHDS_Group : public SMESHDS_GroupBase
 
   virtual SMDS_ElemIteratorPtr GetElements();
 
-  bool SMESHDS_Group::Add (const int theID);
+  bool Add (const int theID);
 
-  bool SMESHDS_Group::Remove (const int theID);
+  bool Remove (const int theID);
 
   void Clear();
 
index 8f2c16d7a40a93fbf8c58ecfb0a008f0b71ca361..967e21a67287b052df1a1bdee3a40138cd77b3d7 100644 (file)
@@ -415,6 +415,7 @@ public:
   void ClearScript();
   int ShapeToIndex(const TopoDS_Shape & aShape) const;
   const TopoDS_Shape& IndexToShape(int ShapeIndex) const;
+  int MaxShapeIndex() const { return myIndexToShape.Extent(); }
 
   SMESHDS_SubMesh * NewSubMesh(int Index);
   int AddCompoundSubmesh(const TopoDS_Shape& S, TopAbs_ShapeEnum type = TopAbs_SHAPE);
index 2581f8faa3889a8b0735ece4dead3e03c5bd80be..d60722ef48434b37abca9008502c672975642185 100644 (file)
 
 using namespace std;
 
-namespace{
+//namespace{
   // Declarations
   //=============================================================
   void ImportMeshesFromFile(SMESH::SMESH_Gen_ptr theComponentMesh,
@@ -685,7 +685,137 @@ namespace{
 
     return RefType;
   }
-}
+
+
+  void SMESHGUI::OnEditDelete()
+  {
+    // VSR 17/11/04: check if all objects selected belong to SMESH component --> start
+    LightApp_SelectionMgr* aSel = SMESHGUI::selectionMgr();
+    SALOME_ListIO selected; aSel->selectedObjects( selected, QString::null, false );
+
+    QString aParentComponent = QString::null;
+    for( SALOME_ListIteratorOfListIO anIt( selected ); anIt.More(); anIt.Next() )
+    {
+      QString cur = anIt.Value()->getComponentDataType();
+      if( aParentComponent.isNull() )
+        aParentComponent = cur;
+      else if( !aParentComponent.isEmpty() && aParentComponent!=cur )
+        aParentComponent = "";
+    }
+
+    if ( aParentComponent != SMESHGUI::GetSMESHGUI()->name() )  {
+      SUIT_MessageBox::warn1 ( SMESHGUI::desktop(),
+                             QObject::tr("ERR_ERROR"),
+                             QObject::tr("NON_SMESH_OBJECTS_SELECTED").arg( SMESHGUI::GetSMESHGUI()->moduleName() ),
+                             QObject::tr("BUT_OK") );
+      return;
+    }
+    // VSR 17/11/04: check if all objects selected belong to SMESH component <-- finish
+    if (SUIT_MessageBox::warn2
+       (SMESHGUI::desktop(),
+        QObject::tr("SMESH_WRN_WARNING"),
+        QObject::tr("SMESH_REALLY_DELETE"),
+        QObject::tr("SMESH_BUT_YES"), QObject::tr("SMESH_BUT_NO"), 1, 0, 0) != 1)
+      return;
+
+    SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>( SUIT_Session::session()->activeApplication() );
+    SUIT_ViewManager* vm = anApp->activeViewManager();
+    int nbSf = vm->getViewsCount();
+
+    _PTR(Study) aStudy = SMESH::GetActiveStudyDocument();
+    _PTR(StudyBuilder) aStudyBuilder = aStudy->NewBuilder();
+    _PTR(GenericAttribute) anAttr;
+    _PTR(AttributeIOR) anIOR;
+
+    SALOME_ListIteratorOfListIO It(selected);
+
+    aStudyBuilder->NewCommand();  // There is a transaction
+    for(; It.More(); It.Next()){ // loop on selected IO's
+      Handle(SALOME_InteractiveObject) IObject = It.Value();
+      if(IObject->hasEntry()) {
+       _PTR(SObject) aSO = aStudy->FindObjectID(IObject->getEntry());
+
+       // disable removal of "SMESH" component object
+       if(aSO->FindAttribute(anAttr, "AttributeIOR")){
+         anIOR = anAttr;
+         if ( !strcmp( (char*)anIOR->Value().c_str(), engineIOR().latin1() ) )
+           continue;
+       }
+
+        // put the whole hierarchy of sub-objects of the selected SO into a list and
+        // then treat them all starting from the deepest objects (at list back)
+
+        list< _PTR(SObject) > listSO;
+        listSO.push_back( aSO );
+        list< _PTR(SObject) >::iterator itSO = listSO.begin();
+        for ( ; itSO != listSO.end(); ++itSO ) {
+          _PTR(ChildIterator) it = aStudy->NewChildIterator( *itSO );
+          for (it->InitEx(false); it->More(); it->Next())
+            listSO.push_back( it->Value() );
+        }
+
+        // treat SO's in the list starting from the back
+
+        list< _PTR(SObject) >::reverse_iterator ritSO = listSO.rbegin();
+        for ( ; ritSO != listSO.rend(); ++ritSO ) {
+          _PTR(SObject) SO = *ritSO;
+          if ( !SO ) continue;
+          string anEntry = SO->GetID();
+
+          /** Erase graphical object **/
+         if(SO->FindAttribute(anAttr, "AttributeIOR")){
+           QPtrVector<SUIT_ViewWindow> aViews = vm->getViews();
+           for(int i = 0; i < nbSf; i++){
+             SUIT_ViewWindow *sf = aViews[i];
+             if(SMESH_Actor* anActor = SMESH::FindActorByEntry(sf,anEntry.c_str())){
+               SMESH::RemoveActor(sf,anActor);
+             }
+           }
+         }
+
+          /** Remove an object from data structures **/
+          SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( SMESH::SObjectToObject( SO ));
+          SMESH::SMESH_subMesh_var   aSubMesh = SMESH::SMESH_subMesh::_narrow( SMESH::SObjectToObject( SO ));
+          if ( !aGroup->_is_nil() ) {                          // DELETE GROUP
+            SMESH::SMESH_Mesh_var aMesh = aGroup->GetMesh();
+            aMesh->RemoveGroup( aGroup );
+          }
+          else if ( !aSubMesh->_is_nil() ) {                   // DELETE SUBMESH
+            SMESH::SMESH_Mesh_var aMesh = aSubMesh->GetFather();
+            aMesh->RemoveSubMesh( aSubMesh );
+
+            _PTR(SObject) aMeshSO = SMESH::FindSObject(aMesh);
+            if (aMeshSO)
+              SMESH::ModifiedMesh(aMeshSO, false);
+          }
+          else {
+            IObject = new SALOME_InteractiveObject
+              ( anEntry.c_str(), engineIOR().latin1(), SO->GetName().c_str() );
+            QString objType = CheckTypeObject(IObject);
+            if ( objType == "Hypothesis" || objType == "Algorithm" ) {// DELETE HYPOTHESIS
+              SMESH::RemoveHypothesisOrAlgorithmOnMesh(IObject);
+              aStudyBuilder->RemoveObjectWithChildren( SO );
+            }
+            else {// default action: remove SObject from the study
+              // san - it's no use opening a transaction here until UNDO/REDO is provided in SMESH
+              //SUIT_Operation *op = new SALOMEGUI_ImportOperation(myActiveStudy);
+              //op->start();
+              aStudyBuilder->RemoveObjectWithChildren( SO );
+              //op->finish();
+            }
+          }
+       } /* listSO back loop */
+      } /* IObject->hasEntry() */
+    } /* more/next */
+    aStudyBuilder->CommitCommand();
+
+    /* Clear any previous selection */
+    SALOME_ListIO l1;
+    aSel->setSelectedObjects( l1 );
+
+    SMESHGUI::GetSMESHGUI()->updateObjBrowser();
+  }
+//}
 
 extern "C" {
   SMESHGUI_EXPORT CAM_Module* createModule()
@@ -1087,6 +1217,11 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
          }
        }
       }
+      
+      // PAL13338 -->
+      if ( ( theCommandID==301 || theCommandID==302 ) && !checkLock(aStudy) && !automaticUpdate() ) 
+       SMESH::UpdateView();
+      // PAL13338 <--
 
       if (anAction == SMESH::eErase) {
        SALOME_ListIO l1;
@@ -1094,6 +1229,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
       }
       else
        aSel->setSelectedObjects( to_process );
+
       break;
     }
 
@@ -1149,6 +1285,10 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
       if ( vtkwnd ) {
        int nbSel = selected.Extent();
        if (nbSel != 1){
+          SUIT_MessageBox::warn1(desktop(),
+                                 tr("SMESH_WRN_WARNING"),
+                                 tr("SMESH_WRN_NO_AVAILABLE_DATA"),
+                                 tr("SMESH_BUT_OK"));
          break;
        }
 
@@ -1213,7 +1353,8 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
          }
          SMESH::RepaintCurrentView();
        }
-      }else{
+      }
+      else{
        SUIT_MessageBox::warn1(desktop(),
                              tr("SMESH_WRN_WARNING"),
                              tr("SMESH_WRN_VIEWER_VTK"),
@@ -1453,13 +1594,20 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
                }
                updateObjBrowser();
 
-             }catch(const SALOME::SALOME_Exception & S_ex){
+             }
+              catch(const SALOME::SALOME_Exception & S_ex){
                SalomeApp_Tools::QtCatchCorbaException(S_ex);
              }
            }
          }
        }
       }
+      else if(nbSel==0) {
+        SUIT_MessageBox::warn1(desktop(),
+                               tr("SMESH_WRN_WARNING"),
+                               tr("SMESH_WRN_NO_AVAILABLE_DATA"),
+                               tr("SMESH_BUT_OK"));
+      }
       break;
     }
 
@@ -2214,7 +2362,7 @@ void SMESHGUI::initialize( CAM_Application* app )
   createSMESHAction( 4051, "RENUM_NODES",     "ICON_DLG_RENUMBERING_NODES" );
   createSMESHAction( 4052, "RENUM_ELEMENTS",  "ICON_DLG_RENUMBERING_ELEMENTS" );
   createSMESHAction( 4061, "TRANS",           "ICON_SMESH_TRANSLATION_VECTOR" );
-  createSMESHAction( 4062, "ROT",             "ICON_DLG_ROTATION" );
+  createSMESHAction( 4062, "ROT",             "ICON_DLG_MESH_ROTATION" );
   createSMESHAction( 4063, "SYM",             "ICON_SMESH_SYMMETRY_PLANE" );
   createSMESHAction( 4064, "SEW",             "ICON_SMESH_SEWING_FREEBORDERS" );
   createSMESHAction( 4065, "MERGE",           "ICON_SMESH_MERGE_NODES" );
@@ -2905,9 +3053,9 @@ void SMESHGUI::createPreferences()
   int fontGr = addPreference( tr( "SMESH_FONT_SCALARBAR" ), sbarTab );
 
   int tfont = addPreference( tr( "SMESH_TITLE" ), fontGr, LightApp_Preferences::Font, "SMESH", "scalar_bar_title_font" );
-  addPreference( tr( "SMESH_TITLE" ), fontGr, LightApp_Preferences::Color, "SMESH", "scalar_bar_title_color" );
+  addPreference( tr( "PREF_TITLE_COLOR" ), fontGr, LightApp_Preferences::Color, "SMESH", "scalar_bar_title_color" );
   int lfont = addPreference( tr( "SMESH_LABELS" ), fontGr, LightApp_Preferences::Font, "SMESH", "scalar_bar_label_font" );
-  addPreference( tr( "SMESH_LABELS" ), fontGr, LightApp_Preferences::Color, "SMESH", "scalar_bar_label_color" );
+  addPreference( tr( "PREF_LABELS_COLOR" ), fontGr, LightApp_Preferences::Color, "SMESH", "scalar_bar_label_color" );
 
   QStringList fam;
   fam.append( tr( "SMESH_FONT_ARIAL" ) );
@@ -3015,8 +3163,8 @@ void SMESHGUI::preferencesChanged( const QString& sect, const QString& name )
       sbW = aResourceMgr->doubleValue("SMESH", "scalar_bar_horizontal_width", sbW);
       if(sbX1+sbW > aTol){
        aWarning = "Origin and Size Horizontal: X+Width > 1\n";
-       sbX1=0.2;
-       sbW=0.6;
+       sbX1=0.01;
+       sbW=0.05;
        aResourceMgr->setValue("SMESH", "scalar_bar_horizontal_x", sbX1);
        aResourceMgr->setValue("SMESH", "scalar_bar_horizontal_width", sbW);
       }
@@ -3027,7 +3175,7 @@ void SMESHGUI::preferencesChanged( const QString& sect, const QString& name )
       if(sbY1+sbH > aTol){
        aWarning = "Origin and Size Horizontal: Y+Height > 1\n";
        sbY1=0.01;
-       sbH=0.12;
+       sbH=0.05;
        aResourceMgr->setValue("SMESH", "scalar_bar_horizontal_y", sbY1);
        aResourceMgr->setValue("SMESH", "scalar_bar_horizontal_height",sbH);
       }
@@ -3148,131 +3296,3 @@ LightApp_Displayer* SMESHGUI::displayer()
   return myDisplayer;
 }
 
-void SMESHGUI::OnEditDelete()
-  {
-    // VSR 17/11/04: check if all objects selected belong to SMESH component --> start
-    LightApp_SelectionMgr* aSel = SMESHGUI::selectionMgr();
-    SALOME_ListIO selected; aSel->selectedObjects( selected, QString::null, false );
-
-    QString aParentComponent = QString::null;
-    for( SALOME_ListIteratorOfListIO anIt( selected ); anIt.More(); anIt.Next() )
-    {
-      QString cur = anIt.Value()->getComponentDataType();
-      if( aParentComponent.isNull() )
-        aParentComponent = cur;
-      else if( !aParentComponent.isEmpty() && aParentComponent!=cur )
-        aParentComponent = "";
-    }
-
-    if ( aParentComponent != SMESHGUI::GetSMESHGUI()->name() )  {
-      SUIT_MessageBox::warn1 ( SMESHGUI::desktop(),
-                             QObject::tr("ERR_ERROR"),
-                             QObject::tr("NON_SMESH_OBJECTS_SELECTED").arg( SMESHGUI::GetSMESHGUI()->moduleName() ),
-                             QObject::tr("BUT_OK") );
-      return;
-    }
-    // VSR 17/11/04: check if all objects selected belong to SMESH component <-- finish
-    if (SUIT_MessageBox::warn2
-       (SMESHGUI::desktop(),
-        QObject::tr("SMESH_WRN_WARNING"),
-        QObject::tr("SMESH_REALLY_DELETE"),
-        QObject::tr("SMESH_BUT_YES"), QObject::tr("SMESH_BUT_NO"), 1, 0, 0) != 1)
-      return;
-
-    SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>( SUIT_Session::session()->activeApplication() );
-    SUIT_ViewManager* vm = anApp->activeViewManager();
-    int nbSf = vm->getViewsCount();
-
-    _PTR(Study) aStudy = SMESH::GetActiveStudyDocument();
-    _PTR(StudyBuilder) aStudyBuilder = aStudy->NewBuilder();
-    _PTR(GenericAttribute) anAttr;
-    _PTR(AttributeIOR) anIOR;
-
-    SALOME_ListIteratorOfListIO It(selected);
-
-    aStudyBuilder->NewCommand();  // There is a transaction
-    for(; It.More(); It.Next()){ // loop on selected IO's
-      Handle(SALOME_InteractiveObject) IObject = It.Value();
-      if(IObject->hasEntry()) {
-       _PTR(SObject) aSO = aStudy->FindObjectID(IObject->getEntry());
-
-       // disable removal of "SMESH" component object
-       if(aSO->FindAttribute(anAttr, "AttributeIOR")){
-         anIOR = anAttr;
-         if ( !strcmp( (char*)anIOR->Value().c_str(), engineIOR().latin1() ) )
-           continue;
-       }
-
-        // put the whole hierarchy of sub-objects of the selected SO into a list and
-        // then treat them all starting from the deepest objects (at list back)
-
-        list< _PTR(SObject) > listSO;
-        listSO.push_back( aSO );
-        list< _PTR(SObject) >::iterator itSO = listSO.begin();
-        for ( ; itSO != listSO.end(); ++itSO ) {
-          _PTR(ChildIterator) it = aStudy->NewChildIterator( *itSO );
-          for (it->InitEx(false); it->More(); it->Next())
-            listSO.push_back( it->Value() );
-        }
-
-        // treat SO's in the list starting from the back
-
-        list< _PTR(SObject) >::reverse_iterator ritSO = listSO.rbegin();
-        for ( ; ritSO != listSO.rend(); ++ritSO ) {
-          _PTR(SObject) SO = *ritSO;
-          if ( !SO ) continue;
-          string anEntry = SO->GetID();
-
-          /** Erase graphical object **/
-         if(SO->FindAttribute(anAttr, "AttributeIOR")){
-           QPtrVector<SUIT_ViewWindow> aViews = vm->getViews();
-           for(int i = 0; i < nbSf; i++){
-             SUIT_ViewWindow *sf = aViews[i];
-             if(SMESH_Actor* anActor = SMESH::FindActorByEntry(sf,anEntry.c_str())){
-               SMESH::RemoveActor(sf,anActor);
-             }
-           }
-         }
-
-          /** Remove an object from data structures **/
-          SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( SMESH::SObjectToObject( SO ));
-          SMESH::SMESH_subMesh_var   aSubMesh = SMESH::SMESH_subMesh::_narrow( SMESH::SObjectToObject( SO ));
-          if ( !aGroup->_is_nil() ) {                          // DELETE GROUP
-            SMESH::SMESH_Mesh_var aMesh = aGroup->GetMesh();
-            aMesh->RemoveGroup( aGroup );
-          }
-          else if ( !aSubMesh->_is_nil() ) {                   // DELETE SUBMESH
-            SMESH::SMESH_Mesh_var aMesh = aSubMesh->GetFather();
-            aMesh->RemoveSubMesh( aSubMesh );
-
-            _PTR(SObject) aMeshSO = SMESH::FindSObject(aMesh);
-            if (aMeshSO)
-              SMESH::ModifiedMesh(aMeshSO, false);
-          }
-          else {
-            IObject = new SALOME_InteractiveObject
-              ( anEntry.c_str(), engineIOR().latin1(), SO->GetName().c_str() );
-            QString objType = CheckTypeObject(IObject);
-            if ( objType == "Hypothesis" || objType == "Algorithm" ) {// DELETE HYPOTHESIS
-              SMESH::RemoveHypothesisOrAlgorithmOnMesh(IObject);
-              aStudyBuilder->RemoveObjectWithChildren( SO );
-            }
-            else {// default action: remove SObject from the study
-              // san - it's no use opening a transaction here until UNDO/REDO is provided in SMESH
-              //SUIT_Operation *op = new SALOMEGUI_ImportOperation(myActiveStudy);
-              //op->start();
-              aStudyBuilder->RemoveObjectWithChildren( SO );
-              //op->finish();
-            }
-          }
-       } /* listSO back loop */
-      } /* IObject->hasEntry() */
-    } /* more/next */
-    aStudyBuilder->CommitCommand();
-
-    /* Clear any previous selection */
-    SALOME_ListIO l1;
-    aSel->setSelectedObjects( l1 );
-
-    SMESHGUI::GetSMESHGUI()->updateObjBrowser();
-  }
index 7776d109584beb65285d4ab789889e7c45535cbb..3d51f663a9b17f5598bd3b05dfa44e08793d5939 100644 (file)
@@ -803,3 +803,20 @@ void SMESHGUI_AddMeshElementDlg::CheckBox (int state)
     displaySimulation();
   }
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_AddMeshElementDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+  
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index f7bd8604b7ad249c636a6d917abdaeb8f2ef7190..3f4722315e81fe2beebadc52e9f389825521b665 100644 (file)
@@ -84,6 +84,7 @@ private:
     void closeEvent (QCloseEvent*);
     void hideEvent (QHideEvent*);                 /* ESC key */
     void enterEvent (QEvent*);                    /* mouse enter the QWidget */
+    void keyPressEvent(QKeyEvent*);
     void displaySimulation();
 
     SMESHGUI*                   mySMESHGUI;              /* Current SMESHGUI object */
index a560b971e81c48c972d673142812b062b9e8c04b..19ac2836e9ed111472c86f19c49780fe37d79906 100644 (file)
@@ -1105,3 +1105,20 @@ QWidget* SMESHGUI_IdEditItem::createEditor() const
   aLineEdit->setValidator( new SMESHGUI_IdValidator(table()->viewport(), "validator", 1) );
   return aLineEdit;
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_AddQuadraticElementDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index ea63a83ec49b6f1d92c2a64d4dc2fc204bf0469a..5a80c5e0b69bb207484e1332754d46a709bb44fc 100644 (file)
@@ -67,6 +67,7 @@ private:
     void closeEvent (QCloseEvent*);
     void hideEvent (QHideEvent*);                 /* ESC key */
     void enterEvent (QEvent*);                    /* mouse enter the QWidget */
+    void keyPressEvent(QKeyEvent*);
     void displaySimulation();
     void UpdateTable( bool theConersValidity = true );
     bool IsValid();
index 9fb95280c27f290b728334fe19c2226182bc0a20..2558e65673324591fec712139853252fcde79d93 100644 (file)
@@ -775,3 +775,20 @@ void SMESHGUI_ClippingDlg::OnPreviewToggle (bool theIsToggled)
   std::for_each(myPlanes.begin(),myPlanes.end(),TSetVisiblity(theIsToggled));
   SMESH::RenderViewWindow(SMESH::GetCurrentVtkView());
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_ClippingDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index c49b5a6cb7c604e444debf9fc5a8f6fc7ac78348..a0f221bda5b333090b7abe82d1cb74925ecf1044 100644 (file)
@@ -87,6 +87,8 @@ public:
     void   setRotation (const double theRot1, const double theRot2);
     void   Sinchronize();
 
+    void   keyPressEvent(QKeyEvent*);
+
     ~SMESHGUI_ClippingDlg();
 
 private:
index a5095e6a923509192faf9fff23c4a5ec60701d7f..cabea5343dad03489ef4182795dc23453e602912 100644 (file)
@@ -93,6 +93,8 @@ void SMESHGUI_ConvToQuadOp::startOperation()
   }
   connect( myDlg, SIGNAL( onClicked( int ) ), SLOT( ConnectRadioButtons( int ) ) );
 
+  myHelpFileName = "/files/convert_to_from_quadratic.htm";
+
   SMESHGUI_SelectionOp::startOperation();
 
   myDlg->SetMediumNdsOnGeom( false );
index fdad3e31be3d7247ed968d5602b1fe4f361b7df5..655415bddf41ac8211dee4ddf5c12489a63e73fc 100755 (executable)
@@ -750,3 +750,20 @@ void SMESHGUI_CreatePatternDlg::onTypeChanged (int theType)
   else
     myPicture2d->hide();
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_CreatePatternDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      onHelp();
+    }
+}
index 154b85a9f45a21696778f800da823246523756f9..130ad7e0d9342b46e8328fed92c757a33b4e03d1 100755 (executable)
@@ -86,6 +86,7 @@ private:
 
   void                     closeEvent (QCloseEvent* e);
   void                     enterEvent (QEvent*);
+   void                    keyPressEvent(QKeyEvent*);
 
 private slots:
 
index 84f6eab9999394c938046d29026c06155cfa5964..c4600fcc4ad0fe169140e8cfaa849d35c6b4d52b 100644 (file)
@@ -324,7 +324,7 @@ SMESHGUI_CreatePolyhedralVolumeDlg::SMESHGUI_CreatePolyhedralVolumeDlg( SMESHGUI
  
   mySMESHGUI->SetActiveDialogBox( (QDialog*)this ) ;
 
-  myHelpFileName = "/files/adding_nodes_and_elements.htm#Adding_polyhedrons?";
+  myHelpFileName = "/files/adding_nodes_and_elements.htm#Adding_polyhedrons";
   
   Init();
 }
@@ -1104,3 +1104,20 @@ void SMESHGUI_CreatePolyhedralVolumeDlg::onListSelectionChanged()
   
   busy = false;
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_CreatePolyhedralVolumeDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index f6dba660f6a098347005542ddcd09d00d40ec94c..4cba1e9a02a5071a9580ca964644dc59ed1c7247 100644 (file)
@@ -75,6 +75,7 @@ private:
     void closeEvent( QCloseEvent* e ) ;
     void enterEvent ( QEvent * ) ;                          /* mouse enter the QWidget */
     void hideEvent ( QHideEvent * );                        /* ESC key */
+    void keyPressEvent( QKeyEvent* e );
     int  GetConstructorId();
     void displaySimulation();
     
index 9b11918555c23e53be258e22c05efeb1c342adbe..f298ef6c29533ab6eaec9eb7f335218fbf002fa9 100644 (file)
@@ -331,3 +331,20 @@ void SMESHGUI_DeleteGroupDlg::closeEvent (QCloseEvent*)
 {
   onClose();
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_DeleteGroupDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      onHelp();
+    }
+}
index 12445a4bfc1522ff4d9170af15e908063e796327..c972ce75de7565427724b1c625d6e6ff2fabc99d 100644 (file)
@@ -63,6 +63,7 @@ private:
 
   void                    closeEvent (QCloseEvent*);
   void                    enterEvent (QEvent*);
+  void                    keyPressEvent(QKeyEvent*);
 
 private slots:
 
index 512d19f5174be907859f1754d2ddfd53721e45d5..d19484cf54ce567e210d11cb6bc86a1f764be95d 100644 (file)
@@ -369,3 +369,21 @@ void SMESHGUI_EditMeshDlg::hideEvent (QHideEvent * e)
   if (!isMinimized())
     ClickOnCancel();
 }
+
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_EditMeshDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index a1386effc3490043304c0db8454c87d9344cb20b..71a11b74342c28a6e46259c0bbd938e9879ec64b 100644 (file)
@@ -64,6 +64,7 @@ class SMESHGUI_EXPORT SMESHGUI_EditMeshDlg : public QDialog
   void closeEvent (QCloseEvent*);
   void enterEvent (QEvent*);              /* mouse enter the QWidget */
   void hideEvent  (QHideEvent*);          /* ESC key */
+  void keyPressEvent(QKeyEvent*);
 
  private:
   SMESHGUI*               mySMESHGUI;     /* Current SMESHGUI object */
index 7c0e89dfb980b3a7e4b62ed53953df525a8ae8e1..2ee720b872b1acd6b6ab5c6e8b150427c5e0fa01 100644 (file)
@@ -317,10 +317,10 @@ SMESHGUI_ExtrusionAlongPathDlg::SMESHGUI_ExtrusionAlongPathDlg( SMESHGUI* theMod
 
   /***************************************************************/
   // Initialisations
-  XSpin->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  YSpin->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  ZSpin->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  AngleSpin->RangeStepAndValidator(-999999.999, +999999.999, 5.0, 3);
+  XSpin->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  YSpin->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  ZSpin->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  AngleSpin->RangeStepAndValidator(-180.0, 180.0, 5.0, 3);
 
   mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector();
 
@@ -684,7 +684,7 @@ void SMESHGUI_ExtrusionAlongPathDlg::ClickOnHelp()
                           QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").
                           arg(app->resourceMgr()->stringValue("ExternalBrowser", platform)).arg(myHelpFileName),
                           QObject::tr("BUT_OK"));
-       }
+  }
 }
 
 //=================================================================================
@@ -1202,3 +1202,20 @@ bool SMESHGUI_ExtrusionAlongPathDlg::eventFilter (QObject* object, QEvent* event
   }
   return QDialog::eventFilter(object, event);
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_ExtrusionAlongPathDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index 73bc229c31bec10c2c61485c78efe3beb9111860..d29f6f7f7a58fa73cdb8fd8a6d911590fb27a899 100644 (file)
@@ -85,6 +85,7 @@ public:
 private:
   void Init (bool ResetControls = true);
   void enterEvent (QEvent*);                           /* mouse enter the QWidget */
+  void keyPressEvent(QKeyEvent*);
   int  GetConstructorId();
   void SetEditCurrentArgument (QToolButton* button);
 
index 58a2afc94c927ec78de77f0d8b1c2907dcbad46b..5bf8c555822fcaf62072c39b0ac2394342084221 100644 (file)
@@ -227,9 +227,9 @@ SMESHGUI_ExtrusionDlg::SMESHGUI_ExtrusionDlg (SMESHGUI* theModule,
   SMESHGUI_ExtrusionDlgLayout->addWidget(GroupArguments, 1, 0);
 
   /* Initialisations */
-  SpinBox_Dx->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_Dy->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_Dz->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
+  SpinBox_Dx->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_Dy->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_Dz->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
 
   QIntValidator* anIntValidator = new QIntValidator(SpinBox_NbSteps);
   SpinBox_NbSteps->setValidator(anIntValidator);
@@ -796,3 +796,20 @@ int SMESHGUI_ExtrusionDlg::GetConstructorId()
     return GroupConstructors->id(GroupConstructors->selected());
   return -1;
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_ExtrusionDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index 8bbce01a238b5649ec696ccc598bf5e92cc1aa4b..d1fe0f2b7e3c0d3a0983f635d2dabf0fe5d285ef 100644 (file)
@@ -73,6 +73,7 @@ public:
 private:
   void Init (bool ResetControls = true);
   void enterEvent (QEvent*);                           /* mouse enter the QWidget */
+  void keyPressEvent(QKeyEvent*);
   int  GetConstructorId();
   //void closeEvent (QCloseEvent*);
   //void hideEvent (QHideEvent*);                        /* ESC key */
index 50522aad2e0e5c37cd3e5f5eba7786a92903c269..9fdc3f71996e087995d068a33c65490e6d332f07 100755 (executable)
@@ -833,10 +833,13 @@ void SMESHGUI_FilterTable::SetCriterion (const int                       theRow,
     aTable->SetEditable(false, theRow, 4);
 
   if (theCriterion.Type != FT_RangeOfIds &&
-       theCriterion.Type != FT_BelongToGeom &&
-       theCriterion.Type != FT_BelongToPlane &&
-       theCriterion.Type != FT_BelongToCylinder &&
-       theCriterion.Type != FT_LyingOnGeom)
+      theCriterion.Type != FT_BelongToGeom &&
+      theCriterion.Type != FT_BelongToPlane &&
+      theCriterion.Type != FT_BelongToCylinder &&
+      theCriterion.Type != FT_LyingOnGeom &&
+      theCriterion.Type != FT_FreeBorders &&
+      theCriterion.Type != FT_FreeEdges &&
+      theCriterion.Type != FT_BadOrientedVolume)
     aTable->setText(theRow, 2, QString("%1").arg(theCriterion.Threshold, 0, 'g', 15));
   else
     {
@@ -2292,9 +2295,11 @@ void SMESHGUI_FilterDlg::insertFilterInViewer()
          myFilter[ myTable->GetType() ]->GetPredicate()->_is_nil() ||
          !mySetInViewer->isChecked()) {
       SMESH::RemoveFilter(getFilterId(anEntType), aSelector);
-    } else {
+    }
+    else {
       Handle(SMESHGUI_PredicateFilter) aFilter = new SMESHGUI_PredicateFilter();
       aFilter->SetPredicate(myFilter[ myTable->GetType() ]->GetPredicate());
+      SMESH::RemoveFilter(getFilterId(anEntType), aSelector); //skl for IPAL12631
       SMESH::SetFilter(aFilter, aSelector);
     }
   }
@@ -2591,3 +2596,21 @@ void SMESHGUI_FilterDlg::updateSelection()
     }
   }
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_FilterDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      onHelp();
+    }
+}
+
index ca43229ae30fd21858382ad8b14230a4d5e57ddc..2cc71d94ae73bcf608e25ed31d37fe0d086ef102 100755 (executable)
@@ -265,6 +265,7 @@ private:
 
   void                      closeEvent (QCloseEvent*);
   void                      enterEvent (QEvent*);
+  void                      keyPressEvent(QKeyEvent*);
 
   // dialog creation
   QFrame*                   createButtonFrame (QWidget*);
index 9e5f9d4d026a751004239598992afea81df41990..f284afb394163e4f88e2939ff92c596761f7420b 100644 (file)
@@ -1157,3 +1157,20 @@ void SMESHGUI_FilterLibraryDlg::onNeedValidation()
     }
   }
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_FilterLibraryDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      onHelp();
+    }
+}
index 427ff712c6948cb2ebea9936c6030e2d695ae234..cbc8111de65c436992ef8f884e97d0b8235d8457 100644 (file)
@@ -90,6 +90,7 @@ private:
 
   void                        closeEvent( QCloseEvent* e ) ;
   void                        enterEvent ( QEvent * ) ;            
+  void                        keyPressEvent( QKeyEvent* e );
   
 private slots:
 
index 30614133309fd7a110f1333fe4080973232123ee..3ebd9853cecf2dcf8350456eb8c974f108fff9e5 100644 (file)
@@ -1605,3 +1605,20 @@ void SMESHGUI_GroupDlg::hideEvent (QHideEvent*)
   if (!isMinimized())
     onClose();
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_GroupDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      onHelp();
+    }
+}
index 464aea4cbe4bdc9c38c537589c14f0432e4d6d33..f59c2d62f42ee42b912779d066f0f5b82ff3c38d 100644 (file)
@@ -116,6 +116,7 @@ private:
     void closeEvent(QCloseEvent* e);
     void enterEvent (QEvent*);
     void hideEvent (QHideEvent*);                          /* ESC key */
+    void keyPressEvent(QKeyEvent*);
     void setSelectionMode(int theMode);
     void updateButtons();
 
index e3bde66e0a789b5c8b23dc9930f176fac93edeed..670d2f16ea109d1e5998834debd5f98074538301 100644 (file)
@@ -418,3 +418,20 @@ void SMESHGUI_GroupOpDlg::reset()
   myFocusWg = myEdit1;
   myNameEdit->setFocus();
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_GroupOpDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      onHelp();
+    }
+}
index be5bfa29692805332c842bf7d06d2c2c9705628a..2dfce3bb5b067bee3aa9ef94fd1be7d265b932c4 100644 (file)
@@ -66,6 +66,7 @@ private:
 
   void                      closeEvent( QCloseEvent* e ) ;
   void                      enterEvent ( QEvent * ) ;            
+  void                      keyPressEvent(QKeyEvent*);
   
 private slots:
 
index ee1c368f8aec232b38fc7b499dc3ca39a0ca622d..475f2161cf58776c9d4543ab1702d87fff9244d9 100644 (file)
@@ -246,7 +246,7 @@ SMESHGUI_MergeNodesDlg::SMESHGUI_MergeNodesDlg( SMESHGUI* theModule, const char*
   SMESHGUI_MergeNodesDlgLayout->addWidget(GroupEdit, 3, 0);
 
   /* Initialisations */
-  SpinBoxTolerance->RangeStepAndValidator(0.0, 999999.999, 0.1, 3);
+  SpinBoxTolerance->RangeStepAndValidator(0.0, COORD_MAX, 0.1, 3);
   SpinBoxTolerance->SetValue(1e-05);
 
   RadioButton1->setChecked(TRUE);
@@ -733,3 +733,20 @@ void SMESHGUI_MergeNodesDlg::hideEvent (QHideEvent*)
   if (!isMinimized())
     ClickOnCancel();
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_MergeNodesDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index e8e1b9c88ad143b0a8233bc98fd493db7b0a3ce6..174f87290035fe8dca56ee3215344826ed28e153 100644 (file)
@@ -81,6 +81,7 @@ private:
     void closeEvent( QCloseEvent* e );
     void enterEvent ( QEvent * );                           /* mouse enter the QWidget */
     void hideEvent ( QHideEvent * );                        /* ESC key */
+    void keyPressEvent( QKeyEvent* e );
     void onEditNodesGroup();
 
     SMESHGUI*                     mySMESHGUI;               /* Current SMESHGUI object */
index e65cfc0cf8c1dbcfa47652c9c094aa90d58e777c..4bcb125b15ab199ee2df13c53cd41578b4e2bda6 100644 (file)
@@ -644,3 +644,20 @@ void SMESHGUI_MeshInfosDlg::onHelp()
                           QObject::tr("BUT_OK"));
   }
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_MeshInfosDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      onHelp();
+    }
+}
index 2dbb62897262be394a265cdd1bb6ed853a7f74a2..d8925c5d8f6ca556d47391b4b7f951d0e0acbeb4 100644 (file)
@@ -55,6 +55,7 @@ public:
 
 protected:
     void closeEvent( QCloseEvent* e );
+    void keyPressEvent( QKeyEvent* e );
     void windowActivationChange( bool oldActive );
     void DumpMeshInfos();
 
index d02f129693603a229485274e6545371b05ac327d..ffca225e5b6dc5036f39bb3a39fb95e8dfb1eb2e 100644 (file)
@@ -1,18 +1,18 @@
 // Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either 
+// License as published by the Free Software Foundation; either
 // version 2.1 of the License.
-// 
-// This library is distributed in the hope that it will be useful 
-// but WITHOUT ANY WARRANTY; without even the implied warranty of 
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 // Lesser General Public License for more details.
 //
-// You should have received a copy of the GNU Lesser General Public  
-// License along with this library; if not, write to the Free Software 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
@@ -81,7 +81,7 @@ enum { GLOBAL_ALGO_TAG        =3,
        SUBMESH_ON_SHELL_TAG   =8,
        SUBMESH_ON_SOLID_TAG   =9,
        SUBMESH_ON_COMPOUND_TAG=10 };
-       
+
 //================================================================================
 /*!
  * \brief Constructor
@@ -212,7 +212,7 @@ void SMESHGUI_MeshOp::startOperation()
     connect( myDlg, SIGNAL( hypoSet( const QString& )), SLOT( onHypoSet( const QString& )));
     connect( myDlg, SIGNAL( geomSelectionByMesh( bool )), SLOT( onGeomSelectionByMesh( bool )));
 
-    if ( myToCreate ) 
+    if ( myToCreate )
       if ( myIsMesh ) myHelpFileName = "/files/constructing_meshes.htm";
       else myHelpFileName = "/files/constructing_submeshes.htm";
     else myHelpFileName = "files/reassigning_hypotheses_and_algorithms.htm";
@@ -379,7 +379,7 @@ _PTR(SObject) SMESHGUI_MeshOp::getSubmeshByGeom() const
           }
         }
       }
-    }     
+    }
   }
   return _PTR(SObject)();
 }
@@ -421,7 +421,7 @@ void SMESHGUI_MeshOp::selectionDone()
       case GEOM::SOLID:
       case GEOM::SHELL:  shapeDim = 3; break;
       case GEOM::FACE:   shapeDim = 2; break;
-      case GEOM::WIRE:   
+      case GEOM::WIRE:
       case GEOM::EDGE:   shapeDim = 1; break;
       case GEOM::VERTEX: shapeDim = 0; break;
       default:
@@ -464,7 +464,7 @@ void SMESHGUI_MeshOp::selectionDone()
     {
       // if a submesh on the selected shape already exist, pass to submesh edition mode
       if ( _PTR(SObject) pSubmesh = getSubmeshByGeom() ) {
-        SMESH::SMESH_subMesh_var sm = 
+        SMESH::SMESH_subMesh_var sm =
           SMESH::SObjectToInterface<SMESH::SMESH_subMesh>( pSubmesh );
         bool editSubmesh = ( !sm->_is_nil() &&
                              SUIT_MessageBox::question2( myDlg, tr( "SMESH_WARNING" ),
@@ -586,7 +586,7 @@ bool SMESHGUI_MeshOp::isValid( QString& theMess ) const
       }
     }
   }
-    
+
   return true;
 }
 
@@ -756,7 +756,7 @@ SMESHGUI_MeshOp::getInitParamsHypothesis( const QString& aHypType,
   const int nbColonsInMeshEntry = 3;
   bool isSubMesh = myToCreate ?
     !myIsMesh :
-    myDlg->selectedObject( SMESHGUI_MeshDlg::Obj ).contains(':') > nbColonsInMeshEntry; 
+    myDlg->selectedObject( SMESHGUI_MeshDlg::Obj ).contains(':') > nbColonsInMeshEntry;
 
   if ( isSubMesh )
   {
@@ -797,7 +797,7 @@ SMESHGUI_MeshOp::getInitParamsHypothesis( const QString& aHypType,
 
 //================================================================================
 /*!
- * \Brief Returns tab dimention  
+ * \Brief Returns tab dimention
   * \param tab - the tab in the dlg
   * \param dlg - my dialogue
   * \retval int - dimention
@@ -852,6 +852,10 @@ void SMESHGUI_MeshOp::createHypothesis (const int theDim,
                                         const int theType,
                                         const QString& theTypeName)
 {
+  // During a hypothesis creation we might need to select some objects.
+  // Main dialog must not update it's own selected objects in this case.
+  dlg()->deactivateAll();
+
   HypothesisData* aData = SMESH::GetHypothesisData(theTypeName.latin1());
   if (!aData)
     return;
@@ -922,7 +926,7 @@ void SMESHGUI_MeshOp::onEditHyp( const int theHypType, const int theIndex )
 
 //================================================================================
 /*!
- * \brief access to hypothesis data 
+ * \brief access to hypothesis data
   * \param theDim - hyp dimension
   * \param theHypType - hyp type (Algo,MainHyp or AddHyp)
   * \param theIndex - index in the list
@@ -1011,23 +1015,16 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex,
       // set new available algoritms
       availableHyps( dim, Algo, anAvailable, myAvailableHypData[dim][Algo], prevAlgo );
       HypothesisData* soleCompatible = 0;
-
-      // bug SWP13024 need save following state
-      bool onlyOne = ( anAvailable.count() == 1 );
-      if ( onlyOne )
+      if ( anAvailable.count() == 1 )
         soleCompatible = myAvailableHypData[dim][Algo][0];
       if ( dim == aTopDim && prevAlgo ) // all available algoritms should be selectable any way
-      {
         availableHyps( dim, Algo, anAvailable, myAvailableHypData[dim][Algo], 0 );
-        if ( onlyOne )
-          soleCompatible = 0;
-      }
       myDlg->tab( dim )->setAvailableHyps( Algo, anAvailable );
       noCompatible = anAvailable.isEmpty();
 
       // restore previously selected algo
       algoIndex = myAvailableHypData[dim][Algo].findIndex( curAlgo );
-      if ( !isSubmesh && algoIndex < 0 && soleCompatible )
+      if ( !isSubmesh && algoIndex < 0 && soleCompatible && !forward )
         // select the sole compatible algo
         algoIndex = myAvailableHypData[dim][Algo].findIndex( soleCompatible );
       setCurrentHyp( dim, Algo, algoIndex );
@@ -1112,7 +1109,7 @@ void SMESHGUI_MeshOp::onAlgoSelected( const int theIndex,
 
 //================================================================================
 /*!
- * \brief Creates and selects hypothesis of hypotheses set 
+ * \brief Creates and selects hypothesis of hypotheses set
  * \param theSetName - The name of hypotheses set
  */
 //================================================================================
@@ -1179,44 +1176,51 @@ bool SMESHGUI_MeshOp::createMesh( QString& theMess )
 {
   theMess = "";
 
-  QString aGeomEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Geom );
-  _PTR(SObject) pGeom = studyDS()->FindObjectID( aGeomEntry.latin1() );
-  GEOM::GEOM_Object_var aGeomVar =
-    GEOM::GEOM_Object::_narrow( _CAST( SObject,pGeom )->GetObject() );
+  //QString aGeomEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Geom );
+  //QString aGeomEntry = myDlg->selectedObject( SMESHGUI_MeshDlg::Geom );
 
-  SMESH::SMESH_Gen_var aSMESHGen = SMESHGUI::GetSMESHGen();
-  if ( aSMESHGen->_is_nil() )
-    return false;
+  QStringList aList;
+  myDlg->selectedObject( SMESHGUI_MeshDlg::Geom, aList );
+  QStringList::Iterator it = aList.begin();
+  for(; it!=aList.end(); it++) {
 
-  SUIT_OverrideCursor aWaitCursor;
+    QString aGeomEntry = *it;
+    _PTR(SObject) pGeom = studyDS()->FindObjectID( aGeomEntry.latin1() );
+    GEOM::GEOM_Object_var aGeomVar =
+      GEOM::GEOM_Object::_narrow( _CAST( SObject,pGeom )->GetObject() );
 
-  // create mesh
-  SMESH::SMESH_Mesh_var aMeshVar = aSMESHGen->CreateMesh( aGeomVar );
-  if ( aMeshVar->_is_nil() )
-    return false;
-  _PTR(SObject) aMeshSO = SMESH::FindSObject( aMeshVar.in() );
-  if ( aMeshSO )
-    SMESH::SetName( aMeshSO, myDlg->objectText( SMESHGUI_MeshDlg::Obj ).latin1() );
+    SMESH::SMESH_Gen_var aSMESHGen = SMESHGUI::GetSMESHGen();
+    if ( aSMESHGen->_is_nil() )
+      return false;
 
-  for ( int aDim = SMESH::DIM_1D; aDim <= SMESH::DIM_3D; aDim++ )
-  {
-    if ( !isAccessibleDim( aDim )) continue;
+    SUIT_OverrideCursor aWaitCursor;
 
-    // assign hypotheses
-    for ( int aHypType = MainHyp; aHypType <= AddHyp; aHypType++ )
-    {
-      int aHypIndex = currentHyp( aDim, aHypType );
-      if ( aHypIndex >= 0 && aHypIndex < myExistingHyps[ aDim ][ aHypType ].count() )
-      {
-        SMESH::SMESH_Hypothesis_var aHypVar = myExistingHyps[ aDim ][ aHypType ][ aHypIndex ];
-        if ( !aHypVar->_is_nil() )
-          SMESH::AddHypothesisOnMesh( aMeshVar, aHypVar );
+    // create mesh
+    SMESH::SMESH_Mesh_var aMeshVar = aSMESHGen->CreateMesh( aGeomVar );
+    if ( aMeshVar->_is_nil() )
+      return false;
+    _PTR(SObject) aMeshSO = SMESH::FindSObject( aMeshVar.in() );
+    if ( aMeshSO )
+      SMESH::SetName( aMeshSO, myDlg->objectText( SMESHGUI_MeshDlg::Obj ).latin1() );
+
+    for ( int aDim = SMESH::DIM_1D; aDim <= SMESH::DIM_3D; aDim++ ) {
+      if ( !isAccessibleDim( aDim )) continue;
+
+      // assign hypotheses
+      for ( int aHypType = MainHyp; aHypType <= AddHyp; aHypType++ ) {
+        int aHypIndex = currentHyp( aDim, aHypType );
+        if ( aHypIndex >= 0 && aHypIndex < myExistingHyps[ aDim ][ aHypType ].count() ) {
+          SMESH::SMESH_Hypothesis_var aHypVar = myExistingHyps[ aDim ][ aHypType ][ aHypIndex ];
+          if ( !aHypVar->_is_nil() )
+            SMESH::AddHypothesisOnMesh( aMeshVar, aHypVar );
+        }
       }
+      // find or create algorithm
+      SMESH::SMESH_Hypothesis_var anAlgoVar = getAlgo( aDim );
+      if ( !anAlgoVar->_is_nil() )
+        SMESH::AddHypothesisOnMesh( aMeshVar, anAlgoVar );
     }
-    // find or create algorithm
-    SMESH::SMESH_Hypothesis_var anAlgoVar = getAlgo( aDim );
-    if ( !anAlgoVar->_is_nil() )
-      SMESH::AddHypothesisOnMesh( aMeshVar, anAlgoVar );
+
   }
   return true;
 }
index b0d9f1e76a9deb64e3dbbc628503b957df686529..8d72e0ede6d90ce4d8a0b9c2402b36237de7e5b0 100755 (executable)
@@ -383,6 +383,13 @@ bool SMESHGUI_MeshPatternDlg::isValid (const bool theMess)
     return false;
   }
 
+  if ( myName->text()=="" ) {
+    if (theMess)
+      QMessageBox::information(SMESHGUI::desktop(), tr("SMESH_INSUFFICIENT_DATA"),
+                               tr("SMESHGUI_INVALID_PARAMETERS"), QMessageBox::Ok);
+    return false;
+  }
+
   return true;
 }
 
@@ -1367,3 +1374,20 @@ int SMESHGUI_MeshPatternDlg::getNode (bool second) const
 {
   return second ? myNode2->value() - 1 : myNode1->value() - 1;
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_MeshPatternDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      onHelp();
+    }
+}
index 93b07f7cf1752b82aa4b457a3d0dd9817ec24c30..d0eab7c595a18c31480e662fb44633964918ff26 100755 (executable)
@@ -116,6 +116,7 @@ private:
   QString                             autoExtension( const QString& theFileName ) const;
   void                                closeEvent( QCloseEvent* e ) ;
   void                                enterEvent ( QEvent * ) ;
+  void                                keyPressEvent(QKeyEvent*);
   bool                                isValid( const bool theMess = true );
   void                                resetSelInput();
   bool                                isRefine() const;
index 842753af5aa030d5b5cc630665f3b44f1a3316b3..46c575dd2b0962290f06507cdcf9115797d7c633 100644 (file)
@@ -185,9 +185,9 @@ QFrame* SMESHGUI_MoveNodesDlg::createMainFrame (QWidget* theParent)
   new QLabel(tr("SMESH_Z"), aCoordGrp);
   myZ = new SMESHGUI_SpinBox(aCoordGrp);
 
-  myX->RangeStepAndValidator(-999999.999, +999999.999, 25.0, 3);
-  myY->RangeStepAndValidator(-999999.999, +999999.999, 25.0, 3);
-  myZ->RangeStepAndValidator(-999999.999, +999999.999, 25.0, 3);
+  myX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 25.0, 3);
+  myY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 25.0, 3);
+  myZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, 25.0, 3);
 
   QVBoxLayout* aLay = new QVBoxLayout(aFrame);
   aLay->addWidget(aPixGrp);
@@ -592,3 +592,20 @@ void SMESHGUI_MoveNodesDlg::redisplayPreview()
       aViewWindow->Repaint();
     }
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_MoveNodesDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      onHelp();
+    }
+}
index c9fead03fd0def15b7e9a396761c54a3c0550f0d..ffb43e939f108ac22824b5d91d654f6297849007 100644 (file)
@@ -81,6 +81,7 @@ private:
   void                          closeEvent( QCloseEvent* e ) ;
   void                          enterEvent ( QEvent * ) ;
   void                          hideEvent ( QHideEvent * );
+  void                          keyPressEvent( QKeyEvent* );
   void                          erasePreview();
   QFrame*                       createButtonFrame( QWidget* );
   QFrame*                       createMainFrame  ( QWidget* );
index 2147155808c585f4b90df064097dda9176bc8237..8ef34e62a727ce620eb283fb45a161f3a726b381 100755 (executable)
@@ -1052,6 +1052,23 @@ int SMESHGUI_MultiEditDlg::entityType()
   return myEntityType;
 }
 
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_MultiEditDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      onHelp();
+    }
+}
+
 /*!
  *  Class       : SMESHGUI_ChangeOrientationDlg
  *  Description : Modification of orientation of faces
index dcd54c04f800bd76dce8f6933d5f14c519f8bf7d..4842e4c7b5215edc5dd688e3b0c859eaa9a5022d 100755 (executable)
@@ -110,6 +110,7 @@ protected:
   void                      closeEvent( QCloseEvent* e ) ;
   void                      enterEvent ( QEvent * ) ;
   void                      hideEvent ( QHideEvent * );                        /* ESC key */
+  void                      keyPressEvent( QKeyEvent* );
   QFrame*                   createButtonFrame( QWidget* );
   QFrame*                   createMainFrame  ( QWidget*, const bool );
   bool                      isValid( const bool ) const;
index 9c64ae622d7c262fddf782d7af9c7c7568b20dc4..c76153065a1c4dcc7a00620dc9b52d49159d99a5 100644 (file)
@@ -358,9 +358,9 @@ void SMESHGUI_NodesDlg::Init ()
   step = 25.0;
 
   /* min, max, step and decimals for spin boxes */
-  SpinBox_X->RangeStepAndValidator(-999.999, +999.999, step, 3);
-  SpinBox_Y->RangeStepAndValidator(-999.999, +999.999, step, 3);
-  SpinBox_Z->RangeStepAndValidator(-999.999, +999.999, step, 3);
+  SpinBox_X->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+  SpinBox_Y->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
+  SpinBox_Z->RangeStepAndValidator(COORD_MIN, COORD_MAX, step, 3);
   SpinBox_X->SetValue(0.0);
   SpinBox_Y->SetValue(0.0);
   SpinBox_Z->SetValue(0.0);
@@ -605,3 +605,20 @@ void SMESHGUI_NodesDlg::ActivateThisDialog()
 
   SelectionIntoArgument();
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_NodesDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index 924d3923709f6841b2eafb88bf47bdd0d85fe539..13e62a793bca320cdf74c8a79e12c5a09b0ad0dc 100644 (file)
@@ -87,6 +87,7 @@ private:
     void enterEvent(QEvent* e);
     void closeEvent(QCloseEvent*);
     void hideEvent (QHideEvent *);                 /* ESC key */
+    void keyPressEvent(QKeyEvent*);
 
     QButtonGroup* GroupConstructors;
     QRadioButton* Constructor1;
index c07015ece0731b339ecb33bf5f50ec6f3753aa63..a54ac738dac876fd5caf566c587929ac1c766ea2 100644 (file)
@@ -519,3 +519,20 @@ void SMESHGUI_RemoveElementsDlg::hideEvent (QHideEvent * e)
   if (!isMinimized())
     ClickOnCancel();
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_RemoveElementsDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index 11aa09ea5df2f4a56cadbb72b5d76733840eb426..d4f2a90ed0d901e6c3ec244a7184abe02e7e3459 100644 (file)
@@ -77,6 +77,7 @@ private:
     void closeEvent( QCloseEvent* e ) ;
     void enterEvent ( QEvent * ) ;                          /* mouse enter the QWidget */
     void hideEvent ( QHideEvent * );                        /* ESC key */
+    void keyPressEvent( QKeyEvent* e );
 
     LightApp_SelectionMgr*        mySelectionMgr;
     SVTK_Selector*                mySelector;
index 18e48effc0eb233c927f3611b573bf02ee95c5bd..c34fed723d1e8a3965c77855a47ea7f9532b138c 100644 (file)
@@ -518,3 +518,20 @@ void SMESHGUI_RemoveNodesDlg::hideEvent (QHideEvent * e)
   if (!isMinimized())
     ClickOnCancel();
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_RemoveNodesDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index 343d2272187d84d59c87c82a96cc7451b087c66c..add873a3a6fb1cdc03bea83fb4ec7a4598bfb706 100644 (file)
@@ -80,6 +80,7 @@ private:
     void closeEvent( QCloseEvent* e ) ;
     void enterEvent ( QEvent * ) ;                         /* mouse enter the QWidget */
     void hideEvent ( QHideEvent * );                       /* ESC key */
+    void keyPressEvent( QKeyEvent* e );
 
     LightApp_SelectionMgr*        mySelectionMgr;
     SVTK_Selector*                mySelector;
index cf8c3c0af58fa1675b1edc620a1208e3a35f0c02..cc8c5013cb8ce7f339feda54c15247b8eab5fb01 100644 (file)
@@ -450,3 +450,20 @@ void SMESHGUI_RenumberingDlg::hideEvent (QHideEvent * e)
   if (!isMinimized())
     ClickOnCancel();
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_RenumberingDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index a60ec6fc2203f9f5963ac3cd7b4784add8842975..80338c6bc44a67ef2d082bd2d86fec2efa642020 100644 (file)
@@ -74,6 +74,7 @@ private:
     void closeEvent( QCloseEvent* e ) ;
     void enterEvent ( QEvent * ) ;                         /* mouse enter the QWidget */
     void hideEvent ( QHideEvent * );                       /* ESC key */
+    void keyPressEvent( QKeyEvent* e );
     
     SMESHGUI*                     mySMESHGUI;              /* Current SMESHGUI object */
     LightApp_SelectionMgr*        mySelectionMgr;          /* User shape selection */
index ce1e1def1fdc429e46d70444a7abaa44c395ee39..53af86b9c955402dcee705fd1741e02aefb7a370 100644 (file)
@@ -286,20 +286,20 @@ SMESHGUI_RevolutionDlg::SMESHGUI_RevolutionDlg( SMESHGUI* theModule, const char*
   SMESHGUI_RevolutionDlgLayout->addWidget(GroupArguments, 1, 0);
 
   /* Initialisations */
-  SpinBox_X->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_Y->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_Z->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_DX->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_DY->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_DZ->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
+  SpinBox_X->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_Y->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_Z->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
 
-  SpinBox_Angle->RangeStepAndValidator(-999999.999, +999999.999, 5.0, 3);
+  SpinBox_Angle->RangeStepAndValidator(COORD_MIN, COORD_MAX, 5.0, 3);
 
   QIntValidator* anIntValidator = new QIntValidator(SpinBox_NbSteps);
   SpinBox_NbSteps->setValidator(anIntValidator);
   SpinBox_NbSteps->setRange(1, 999999);
 
-  SpinBox_Tolerance->RangeStepAndValidator(0.0, +999999.999, 0.1, 6);
+  SpinBox_Tolerance->RangeStepAndValidator(0.0, COORD_MAX, 0.1, 6);
 
   GroupArguments->show();
   RadioButton1->setChecked(TRUE);
@@ -939,3 +939,20 @@ void SMESHGUI_RevolutionDlg::onVectorChanged()
     buttonApply->setEnabled(false);
   }
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_RevolutionDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index 8dd89fcab031cfca3abd3ccac5a311698e6a9fb8..9db7f48590b79c50041e988369a3c6e008f17ace 100644 (file)
@@ -80,6 +80,7 @@ private:
     void closeEvent (QCloseEvent*);
     void enterEvent (QEvent*);                          /* mouse enter the QWidget */
     void hideEvent (QHideEvent*);                       /* ESC key */
+    void keyPressEvent(QKeyEvent*);
     int  GetConstructorId();
     bool IsAxisOk();
 
index 5e57914bd08f8f1dfe782290188e0648ca62bef0..50fc56bcebdd5364063de41e86e9ad3149cb6454 100644 (file)
@@ -87,7 +87,7 @@ SMESHGUI_RotationDlg::SMESHGUI_RotationDlg( SMESHGUI* theModule, const char* nam
      mySMESHGUI( theModule ),
      mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )
 {
-  QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_DLG_ROTATION")));
+  QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_DLG_MESH_ROTATION")));
   QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT")));
 
   if (!name)
@@ -279,14 +279,14 @@ SMESHGUI_RotationDlg::SMESHGUI_RotationDlg( SMESHGUI* theModule, const char* nam
   SMESHGUI_RotationDlgLayout->addWidget(GroupArguments, 1, 0);
 
   /* Initialisations */
-  SpinBox_X->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_Y->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_Z->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_DX->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_DY->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_DZ->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
+  SpinBox_X->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_Y->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_Z->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
 
-  SpinBox_Angle->RangeStepAndValidator(-999999.999, +999999.999, 5.0, 3);
+  SpinBox_Angle->RangeStepAndValidator(-360.0, +360.0, 5.0, 3);
 
   GroupArguments->show();
   myConstructorId = 0;
@@ -846,3 +846,20 @@ void SMESHGUI_RotationDlg::onVectorChanged()
     buttonApply->setEnabled(false);
   }
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_RotationDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index 95cd97688c1a27b75b7d317ddf7f5bbbd17bde16..86075d763d352415bca06a1f230a8428d565fd64 100644 (file)
@@ -79,6 +79,7 @@ private:
     void closeEvent (QCloseEvent*);
     void enterEvent (QEvent*);                          /* mouse enter the QWidget */
     void hideEvent (QHideEvent*);                       /* ESC key */
+    void keyPressEvent(QKeyEvent*);
     bool IsAxisOk();
 
     SMESHGUI*                     mySMESHGUI;              /* Current SMESHGUI object */
index c68ab240dc8c4f8963eff862f94ef28d953b5d77..db218de9a1c8ba528986fb756f2f25293ca58901 100644 (file)
@@ -956,3 +956,20 @@ bool SMESHGUI_SewingDlg::IsValid()
 {
   return (myOk1 && myOk2 && myOk3 && myOk4 && myOk5 && myOk6);
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_SewingDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index 9e92a38f6a823ad9d3ea5b4bb712b522c123d32b..4e96dd40d1dce495ed58ca24c3ee256550a9dbad 100644 (file)
@@ -74,6 +74,7 @@ private:
     void closeEvent( QCloseEvent* e ) ;
     void enterEvent ( QEvent * );                          /* mouse enter the QWidget */
     void hideEvent ( QHideEvent * );                       /* ESC key */
+    void keyPressEvent(QKeyEvent*);
     int  GetConstructorId();
     bool IsValid();
     
index f724c3e1b7e940cfd7a8f8f6c094c54f1644dd38..ce21c9c17fed51c2db959478a5e29bf7b6fc206a 100755 (executable)
@@ -541,6 +541,23 @@ bool SMESHGUI_SingleEditDlg::onApply()
   return aResult;
 }
 
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_SingleEditDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      onHelp();
+    }
+}
+
 /*!
  *  Class       : SMESHGUI_TrianglesInversionDlg
  *  Description : Inversion of the diagonal of a pseudo-quadrangle formed by
index e52fbed43cb741742a3cd1e7f9ea78112a99326c..6fa5058ad44daa1fbf9329c77ef740f39289b25f 100755 (executable)
@@ -77,6 +77,7 @@ protected:
   void                    closeEvent (QCloseEvent*);
   void                    enterEvent (QEvent*);
   void                    hideEvent (QHideEvent*);                        /* ESC key */
+  void                    keyPressEvent(QKeyEvent*);
   QFrame*                 createButtonFrame (QWidget*);
   QFrame*                 createMainFrame (QWidget*);
   bool                    isValid (const bool) const;
index 84271602f4ee7dccd5437f9d842d13e7e7814088..6f5dc5fdc8695501f9f6054c9e1d56fe35048b7d 100644 (file)
@@ -779,3 +779,20 @@ void SMESHGUI_SmoothingDlg::onSelectMesh (bool toSelectMesh)
 
   SelectionIntoArgument();
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_SmoothingDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index 970cd89e6e4ad146acdf82bb34ac5d41d92ae421..c201dfffe434f397106e3e0120ca8bfdf150c3a9 100644 (file)
@@ -81,6 +81,7 @@ private:
     void closeEvent(QCloseEvent*);
     void enterEvent (QEvent*);                             /* mouse enter the QWidget */
     void hideEvent (QHideEvent*);                          /* ESC key */
+    void keyPressEvent(QKeyEvent*);
 
     SMESHGUI*                     mySMESHGUI;              /* Current SMESHGUI object */
     LightApp_SelectionMgr*        mySelectionMgr;          /* User shape selection */
index 772a6d1663132048b3a016d05bcfe4d339a7c121..a79c6ad64c761e30d81fdb752ebd94e55f116933 100644 (file)
@@ -95,6 +95,8 @@ QString SMESHGUI_SpinBox::GetString()
 void SMESHGUI_SpinBox::RangeStepAndValidator
   (double min, double max, double step, unsigned short decimals)
 {
+  setPrecision(-decimals); // PAL8769. Minus is for using 'g' double->string conversion specifier,
+  //                          see QtxDblSpinBox::mapValueToText( double v )
   setRange(min, max);
   setLineStep(step);
   ((QDoubleValidator*)validator())->setRange(min, max, decimals);
index 9d46be239012e48e8bac35aeb4c8f133cb42be4d..cc5c996893f5038f8c248f43cd78a4be5efc8124 100644 (file)
 
 #include <QtxDblSpinBox.h>
 
+// like in GEOM_SRC/src/DlgRef/DlgRef_SpinBox.h
+#define COORD_MIN -1e+15
+#define COORD_MAX +1e+15
+
 //=================================================================================
 // class    : SMESHGUI_SpinBox
 // purpose  : Derivated from QtxDblSpinBox class 
index b7277f0b3307890b128cbc310798161df01de406..5fffc787e1e9bae67bc2608a6316d8b0825765aa 100644 (file)
@@ -473,3 +473,20 @@ void SMESHGUI_StandardMeshInfosDlg::onHelp()
                           QObject::tr("BUT_OK"));
   }
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_StandardMeshInfosDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      onHelp();
+    }
+}
index 8bb0b37bad0d95651dc46f1427bfb2f0137384ce..586593d4df49143f12ba2a62175e1e1c7d55f022 100644 (file)
@@ -56,6 +56,7 @@ public:
 
 protected:
     void closeEvent( QCloseEvent* e );
+    void keyPressEvent( QKeyEvent* e );
     void windowActivationChange( bool oldActive );
     void DumpMeshInfos();
 
index 219b409a747d92af9ce272cd3b03b72149733981..ed71b6d4302eacac695a6fd65e4f43e4a2f1066a 100644 (file)
@@ -49,6 +49,9 @@
 // Open CASCADE Includes
 #include <TopoDS.hxx>
 
+// QT Includes
+#include <qapplication.h>
+
 // IDL Headers
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SMESH_Gen)
@@ -376,6 +379,8 @@ SMESH_Swig::Init(int theStudyID)
       }
 
       mySComponentMesh = SALOMEDS::SComponent::_narrow(aSComponent);
+
+      qApp->processEvents(); // Workaround for bug 12662
     }
   };
 
index eadd476e4a00f9e541f0bb1948d7f19e8494512c..8172991a8ee96bccf6eebb985b5f7b37ecbed1b8 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with this library; if not, write to the Free Software 
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
 // 
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 #include "SMESHGUI_Swig.hxx"
 %}
 
+/* Exception handler for all functions */
+%exception {
+  class PyAllowThreadsGuard {
+   public:
+    // Py_BEGIN_ALLOW_THREADS
+    PyAllowThreadsGuard() { _save = PyEval_SaveThread(); }
+    // Py_END_ALLOW_THREADS
+    ~PyAllowThreadsGuard() { PyEval_RestoreThread(_save); }
+   private:
+    PyThreadState *_save;
+  };
+
+  PyAllowThreadsGuard guard;
+
+  $action
+}
+
 %include "typemaps.i"
 
 class SMESH_Swig
index f6e0e94ce7d67f198499061ab204801fc09fae94..920fb06a9e3abd4d0ed93535d67a9f651089694e 100644 (file)
@@ -277,12 +277,12 @@ SMESHGUI_SymmetryDlg::SMESHGUI_SymmetryDlg( SMESHGUI* theModule, const char* nam
   SMESHGUI_SymmetryDlgLayout->addWidget(GroupArguments, 1, 0);
 
   /* Initialisations */
-  SpinBox_X->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_Y->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_Z->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_DX->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_DY->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox_DZ->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
+  SpinBox_X->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_Y->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_Z->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_DX->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_DY->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox_DZ->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
 
   GroupArguments->show();
   RadioButton1->setChecked(TRUE);
@@ -922,3 +922,20 @@ void SMESHGUI_SymmetryDlg::onVectorChanged()
     buttonApply->setEnabled(false);
   }
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_SymmetryDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index 4714ac0b50b74a809b949cfdd7c23552843f8c5e..a4c00e3b644aee4fecac1d7319bec6364d6bf086 100644 (file)
@@ -78,6 +78,7 @@ private:
     void closeEvent (QCloseEvent*);
     void enterEvent (QEvent*);                             /* mouse enter the QWidget */
     void hideEvent (QHideEvent*);                          /* ESC key */
+    void keyPressEvent(QKeyEvent*);
     int GetConstructorId();
     bool IsMirrorOk();
 
index 33f2ae886a5fd197686d121999b07333fcad01f8..efaaa78fbff5ce17f982c540f2ddcda6230c1646 100644 (file)
@@ -257,12 +257,12 @@ SMESHGUI_TranslationDlg::SMESHGUI_TranslationDlg( SMESHGUI* theModule, const cha
   SMESHGUI_TranslationDlgLayout->addWidget(GroupArguments, 1, 0);
 
   /* Initialisations */
-  SpinBox1_1->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox1_2->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox1_3->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox2_1->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox2_2->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
-  SpinBox2_3->RangeStepAndValidator(-999999.999, +999999.999, 10.0, 3);
+  SpinBox1_1->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox1_2->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox1_3->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox2_1->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox2_2->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
+  SpinBox2_3->RangeStepAndValidator(COORD_MIN, COORD_MAX, 10.0, 3);
 
   GroupArguments->show();
   RadioButton1->setChecked(TRUE);
@@ -855,3 +855,20 @@ int SMESHGUI_TranslationDlg::GetConstructorId()
     return GroupConstructors->id(GroupConstructors->selected());
   return -1;
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_TranslationDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index 6459dce48a18909c16928d96779fd09fe2074529..a70f780aeec18443a5f96b8bf2e2a17ea7ed7c77 100644 (file)
@@ -77,6 +77,7 @@ private:
     void closeEvent (QCloseEvent*);
     void enterEvent (QEvent*);                             /* mouse enter the QWidget */
     void hideEvent (QHideEvent*);                          /* ESC key */
+    void keyPressEvent(QKeyEvent*);
     int GetConstructorId();
 
     SMESHGUI*                     mySMESHGUI;              /* Current SMESHGUI object */
index 3057b3f46a72e30c3676e70676f1ffeeb31883f3..d5c684d390c305b92cacd89fff6f5fd32e02cf45 100644 (file)
@@ -282,3 +282,20 @@ void SMESHGUI_TransparencyDlg::onSelectionChanged()
   }
   ValueHasChanged();
 }
+
+//=================================================================================
+// function : keyPressEvent()
+// purpose  :
+//=================================================================================
+void SMESHGUI_TransparencyDlg::keyPressEvent( QKeyEvent* e )
+{
+  QDialog::keyPressEvent( e );
+  if ( e->isAccepted() )
+    return;
+
+  if ( e->key() == Key_F1 )
+    {
+      e->accept();
+      ClickOnHelp();
+    }
+}
index 7909ae9ea194f2adc295287c9302d5e314bd47bb..0968e062b8b6a6fd76312555f54bb60c8fcfb074 100644 (file)
@@ -58,6 +58,9 @@ public:
 
     ~SMESHGUI_TransparencyDlg();
 
+private:
+    void keyPressEvent(QKeyEvent*);
+
 private :
 
   SMESHGUI*               mySMESHGUI;
index 889e4031bf93ff7418a6f7bcae584f9c1a440efb..42316eac379e31c6aa897461aa4a921d06edafd3 100644 (file)
@@ -86,7 +86,7 @@ msgid "ICON_DLG_RENUMBERING_ELEMENTS"
 msgstr "mesh_renumbering_elements.png"
 
 #Rotation
-msgid "ICON_DLG_ROTATION"
+msgid "ICON_DLG_MESH_ROTATION"
 msgstr "mesh_rotation.png"
 
 #Translation by vector
index 37378d9d4743495f47343644b1f7895f1505815f..19f58fbecd273a2e6f734617e1892528a96cf43f 100644 (file)
@@ -86,7 +86,7 @@ msgid "ICON_DLG_RENUMBERING_ELEMENTS"
 msgstr "mesh_renumbering_elements.png"
 
 #Rotation
-msgid "ICON_DLG_ROTATION"
+msgid "ICON_DLG_MESH_ROTATION"
 msgstr "mesh_rotation.png"
 
 #Translation by vector
index 846b785cbc690d45a29935443feb5296c3e68011..ac9a2f024f72ce170bf00be317243349387ca4d7 100644 (file)
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# This is a Qt message file in .po format.  Each msgid starts with
+# a scope.  This scope should *NOT* be translated - eg. "Foo::Bar"
+# would be translated to "Pub", not "Foo::Pub".
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2006-01-13 13:50+0300\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
 # This is a Qt message file in .po format.  Each msgid starts with
 # a scope.  This scope should *NOT* be translated - eg. "Foo::Bar"
 # would be translated to "Pub", not "Foo::Pub".
@@ -152,6 +165,10 @@ msgstr "Activate Link Selection Mode"
 msgid "SMESH_WRN_EMPTY_NAME" 
 msgstr "Empty name is not valid"
 
+#Not available data
+msgid "SMESH_WRN_NO_AVAILABLE_DATA" 
+msgstr "No available data in selection"
+
 #Smesh polyedre cretion error
 msgid "SMESH_POLYEDRE_CREATE_ERROR"
 msgstr "Polyedron creation error"
@@ -1661,10 +1678,10 @@ msgid "SMESHGUI_ExtrusionAlongPathDlg::SMESH_PATH_MESH"
 msgstr "Mesh"
 
 msgid "SMESHGUI_ExtrusionAlongPathDlg::SMESH_PATH_SHAPE"
-msgstr "Shape (edge or wire)"
+msgstr "Shape (edge)"
 
 msgid "SMESHGUI_ExtrusionAlongPathDlg::SMESH_PATH_START"
-msgstr "Start point"
+msgstr "Start node"
 
 msgid "SMESHGUI_ExtrusionAlongPathDlg::SMESH_USE_ANGLES"
 msgstr "Use Angles"
@@ -3022,6 +3039,12 @@ msgstr "Elements"
 msgid "SMESHGUI::PREF_COLOR"
 msgstr "Color"
 
+msgid "SMESHGUI::PREF_TITLE_COLOR"
+msgstr "Title color"
+
+msgid "SMESHGUI::PREF_LABELS_COLOR"
+msgstr "Labels color"
+
 msgid "SMESHGUI::PREF_SIZE"
 msgstr "Size"
 
index 461eceb0ec8c9263f468011fd50c625d5f7507ab..e1222308b4fc17794b641084983cf3b31b1eb5ac 100644 (file)
@@ -91,6 +91,8 @@
 
 #include "SMDS_EdgePosition.hxx"
 #include "SMDS_FacePosition.hxx"
+#include "SMDS_VertexPosition.hxx"
+#include "SMDS_SpacePosition.hxx"
 
 #include CORBA_SERVER_HEADER(SMESH_Group)
 #include CORBA_SERVER_HEADER(SMESH_Filter)
@@ -315,18 +317,38 @@ SMESH::SMESH_Hypothesis_ptr SMESH_Gen_i::createHypothesis(const char* theHypName
   char* aPlatformLibName = 0;
   if ( theLibName && theLibName[0] != '\0'  )
   {
+    int libNameLen = strlen(theLibName);
+    //check for old format "libXXXXXXX.so"
+    if( !strncmp( theLibName, "lib", 3 ) && !strcmp( theLibName+libNameLen-4, ".so" ) && libNameLen > 7 )
+      {
+       //the old format
+#ifdef WNT
+       aPlatformLibName = new char[libNameLen - 2];
+       aPlatformLibName[0] = '\0';
+       aPlatformLibName = strncat( aPlatformLibName, theLibName+3, libNameLen-6  );
+       aPlatformLibName = strcat( aPlatformLibName, ".dll" );
+#else
+       aPlatformLibName = new char[ libNameLen ];
+       aPlatformLibName[0] = '\0';
+       aPlatformLibName = strcat( aPlatformLibName, theLibName );
+#endif
+      }
+    else
+      {
+       //try to use new format 
 #ifdef WNT
-    aPlatformLibName = new char[ strlen(theLibName) + 5 ];
-    aPlatformLibName[0] = '\0';
-    aPlatformLibName = strcat( aPlatformLibName, theLibName );
-    aPlatformLibName = strcat( aPlatformLibName, ".dll" );
+       aPlatformLibName = new char[ libNameLen + 5 ];
+       aPlatformLibName[0] = '\0';
+       aPlatformLibName = strcat( aPlatformLibName, theLibName );
+       aPlatformLibName = strcat( aPlatformLibName, ".dll" );
 #else
-    aPlatformLibName = new char[ strlen(theLibName) + 7 ];
-    aPlatformLibName[0] = '\0';
-    aPlatformLibName = strcat( aPlatformLibName, "lib" );
-    aPlatformLibName = strcat( aPlatformLibName, theLibName );
-    aPlatformLibName = strcat( aPlatformLibName, ".so" );
+       aPlatformLibName = new char[ libNameLen + 7 ];
+       aPlatformLibName[0] = '\0';
+       aPlatformLibName = strcat( aPlatformLibName, "lib" );
+       aPlatformLibName = strcat( aPlatformLibName, theLibName );
+       aPlatformLibName = strcat( aPlatformLibName, ".so" );
 #endif
+      }
   }
   
 
@@ -466,18 +488,23 @@ void SMESH_Gen_i::SetEmbeddedMode( CORBA::Boolean theMode )
   myIsEmbeddedMode = theMode;
 
   if ( !myIsEmbeddedMode ) {
-    bool raiseFPE;
+    //PAL10867: disable signals catching with "noexcepthandler" option
+    char* envNoCatchSignals = getenv("NOT_INTERCEPT_SIGNALS");
+    if (!envNoCatchSignals || !atoi(envNoCatchSignals))
+    {
+      bool raiseFPE;
 #ifdef _DEBUG_
-    raiseFPE = true;
-    char* envDisableFPE = getenv("DISABLE_FPE");
-    if (envDisableFPE && atoi(envDisableFPE))
-      raiseFPE = false;
+      raiseFPE = true;
+      char* envDisableFPE = getenv("DISABLE_FPE");
+      if (envDisableFPE && atoi(envDisableFPE))
+        raiseFPE = false;
 #else
-    raiseFPE = false;
+      raiseFPE = false;
 #endif
-    OSD::SetSignal( raiseFPE );
+      OSD::SetSignal( raiseFPE );
+    }
+    // else OSD::SetSignal() is called in GUI
   }
-  // else OSD::SetSignal() is called in GUI
 }
 
 //=============================================================================
@@ -1135,6 +1162,10 @@ CORBA::Boolean SMESH_Gen_i::Compute( SMESH::SMESH_Mesh_ptr theMesh,
       return myGen.Compute( myLocMesh, myLocShape);
     }
   }
+  catch ( std::bad_alloc& exc ) {
+    THROW_SALOME_CORBA_EXCEPTION( "Memory allocation problem",
+                                  SALOME::INTERNAL_ERROR );
+  }
   catch ( SALOME_Exception& S_ex ) {
     INFOS( "Compute(): catch exception "<< S_ex.what() );
   }
@@ -1729,8 +1760,9 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent,
               }
             }
             // All sub-meshes will be stored in MED file
-            if ( shapeRefFound )
-              myWriter.AddAllSubMeshes();
+            // .. will NOT (PAL 12992)
+            //if ( shapeRefFound )
+            //myWriter.AddAllSubMeshes();
 
             // groups root sub-branch
             SALOMEDS::SObject_var myGroupsBranch;
@@ -1833,10 +1865,79 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent,
                 myLocMesh.ShapeToMesh( nullShape ); // remove shape referring data
               }
 
-              // Store node positions on sub-shapes (SMDS_Position):
-
               if ( !mySMESHDSMesh->SubMeshes().empty() )
               {
+                // Store submeshes
+                // ----------------
+                aGroup = new HDFgroup( "Submeshes", aTopGroup );
+                aGroup->CreateOnDisk();
+
+                // each element belongs to one or none submesh,
+                // so for each node/element, we store a submesh ID
+
+                // Make maps of submesh IDs of elements sorted by element IDs
+                typedef int TElemID;
+                typedef int TSubMID;
+                map< TElemID, TSubMID > eId2smId, nId2smId;
+                map< TElemID, TSubMID >::iterator hint; // insertion to map is done before hint
+                const map<int,SMESHDS_SubMesh*>& aSubMeshes = mySMESHDSMesh->SubMeshes();
+                map<int,SMESHDS_SubMesh*>::const_iterator itSubM ( aSubMeshes.begin() );
+                SMDS_NodeIteratorPtr itNode;
+                SMDS_ElemIteratorPtr itElem;
+                for ( itSubM = aSubMeshes.begin(); itSubM != aSubMeshes.end() ; itSubM++ )
+                {
+                  TSubMID          aSubMeID = itSubM->first;
+                  SMESHDS_SubMesh* aSubMesh = itSubM->second;
+                  if ( aSubMesh->IsComplexSubmesh() )
+                    continue; // submesh containing other submeshs
+                  // nodes
+                  hint = nId2smId.begin(); // optimize insertion basing on increasing order of elem Ids in submesh
+                  for ( itNode = aSubMesh->GetNodes(); itNode->more(); ++hint)
+                    hint = nId2smId.insert( hint, make_pair( itNode->next()->GetID(), aSubMeID ));
+                  // elements
+                  hint = eId2smId.begin();
+                  for ( itElem = aSubMesh->GetElements(); itElem->more(); ++hint)
+                    hint = eId2smId.insert( hint, make_pair( itElem->next()->GetID(), aSubMeID ));
+                }
+
+                // Care of elements that are not on submeshes
+                if ( mySMESHDSMesh->NbNodes() != nId2smId.size() ) {
+                  for ( itNode = mySMESHDSMesh->nodesIterator(); itNode->more(); )
+                    /*  --- stl_map.h says : */
+                    /*  A %map relies on unique keys and thus a %pair is only inserted if its */
+                    /*  first element (the key) is not already present in the %map.           */
+                    nId2smId.insert( make_pair( itNode->next()->GetID(), 0 ));
+                }
+                int nbElems = mySMESHDSMesh->NbEdges() + mySMESHDSMesh->NbFaces() + mySMESHDSMesh->NbVolumes();
+                if ( nbElems != eId2smId.size() ) {
+                  for ( itElem = mySMESHDSMesh->elementsIterator(); itElem->more(); )
+                    eId2smId.insert( make_pair( itElem->next()->GetID(), 0 ));
+                }
+
+                // Store submesh IDs
+                for ( int isNode = 0; isNode < 2; ++isNode )
+                {
+                  map< TElemID, TSubMID >& id2smId = isNode ? nId2smId : eId2smId;
+                  if ( id2smId.empty() ) continue;
+                  map< TElemID, TSubMID >::const_iterator id_smId = id2smId.begin();
+                  // make and fill array of submesh IDs
+                  int* smIDs = new int [ id2smId.size() ];
+                  for ( int i = 0; id_smId != id2smId.end(); ++id_smId, ++i )
+                    smIDs[ i ] = id_smId->second;
+                  // write HDF group
+                  aSize[ 0 ] = id2smId.size();
+                  string aDSName( isNode ? "Node Submeshes" : "Element Submeshes");
+                  aDataset = new HDFdataset( (char*)aDSName.c_str(), aGroup, HDF_INT32, aSize, 1 );
+                  aDataset->CreateOnDisk();
+                  aDataset->WriteOnDisk( smIDs );
+                  aDataset->CloseOnDisk();
+                  //
+                  delete smIDs;
+                }
+                
+                // Store node positions on sub-shapes (SMDS_Position):
+                // ----------------------------------------------------
+
                 aGroup = new HDFgroup( "Node Positions", aTopGroup );
                 aGroup->CreateOnDisk();
 
@@ -1852,9 +1953,7 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent,
                 int nbEdgeNodes = 0, nbFaceNodes = 0;
                 list<SMESHDS_SubMesh*> aEdgeSM, aFaceSM;
                 // loop on SMESHDS_SubMesh'es
-                const map<int,SMESHDS_SubMesh*>& aSubMeshes = mySMESHDSMesh->SubMeshes();
-                map<int,SMESHDS_SubMesh*>::const_iterator itSubM ( aSubMeshes.begin() );
-                for ( ; itSubM != aSubMeshes.end() ; itSubM++ )
+                for ( itSubM = aSubMeshes.begin(); itSubM != aSubMeshes.end() ; itSubM++ )
                 {
                   SMESHDS_SubMesh* aSubMesh = (*itSubM).second;
                   if ( aSubMesh->IsComplexSubmesh() )
@@ -1895,8 +1994,6 @@ SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent,
                   for ( ; itSM != pListSM->end(); itSM++ )
                   {
                     SMESHDS_SubMesh* aSubMesh = (*itSM);
-                    if ( aSubMesh->IsComplexSubmesh() )
-                      continue; // submesh containing other submeshs
 
                     SMDS_NodeIteratorPtr itNode = aSubMesh->GetNodes();
                     // loop on nodes in aSubMesh
@@ -2040,6 +2137,31 @@ void SMESH_Gen_i::loadGeomData( SALOMEDS::SComponent_ptr theCompRoot )
   SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder(); 
   aStudyBuilder->LoadWith( theCompRoot, GetGeomEngine() );
 }
+//=============================================================================
+/*!
+ * \brief Creates SMDS_Position according to shape type
+ */
+//=============================================================================
+
+class PositionCreator {
+public:
+  SMDS_PositionPtr MakePosition(const TopAbs_ShapeEnum type) {
+    return (this->*myFuncTable[ type ])();
+  }
+  PositionCreator() {
+    myFuncTable.resize( (size_t) TopAbs_SHAPE, & PositionCreator::defaultPosition );
+    myFuncTable[ TopAbs_FACE ] = & PositionCreator::facePosition;
+    myFuncTable[ TopAbs_EDGE ] = & PositionCreator::edgePosition;
+    myFuncTable[ TopAbs_VERTEX ] = & PositionCreator::vertexPosition;
+  }
+private:
+  SMDS_PositionPtr edgePosition()    const { return SMDS_PositionPtr( new SMDS_EdgePosition  ); }
+  SMDS_PositionPtr facePosition()    const { return SMDS_PositionPtr( new SMDS_FacePosition  ); }
+  SMDS_PositionPtr vertexPosition()  const { return SMDS_PositionPtr( new SMDS_VertexPosition); }
+  SMDS_PositionPtr defaultPosition() const { return SMDS_SpacePosition::originSpacePosition();  }
+  typedef SMDS_PositionPtr (PositionCreator:: * FmakePos)() const;
+  vector<FmakePos> myFuncTable;
+};
 
 //=============================================================================
 /*!
@@ -2627,10 +2749,80 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent,
          }
 
          if(hasData) {
+            
            // Read sub-meshes from MED
+            // -------------------------
            if(MYDEBUG) MESSAGE("Create all sub-meshes");
-           myReader.CreateAllSubMeshes();
+            bool submeshesInFamilies = ( ! aTopGroup->ExistInternalObject( "Submeshes" ));
+            if ( submeshesInFamilies )
+            {
+              // old way working before fix of PAL 12992
+              myReader.CreateAllSubMeshes();
+            }
+            else
+            {
+              // open a group
+              aGroup = new HDFgroup( "Submeshes", aTopGroup ); 
+              aGroup->OpenOnDisk();
 
+              int maxID = mySMESHDSMesh->MaxShapeIndex();
+              vector< SMESHDS_SubMesh * > subMeshes( maxID + 1, (SMESHDS_SubMesh*) 0 );
+              vector< TopAbs_ShapeEnum  > smType   ( maxID + 1, TopAbs_SHAPE ); 
+              
+              PositionCreator aPositionCreator;
+
+              SMDS_NodeIteratorPtr nIt = mySMESHDSMesh->nodesIterator();
+              SMDS_ElemIteratorPtr eIt = mySMESHDSMesh->elementsIterator();
+              for ( int isNode = 0; isNode < 2; ++isNode )
+              {
+                string aDSName( isNode ? "Node Submeshes" : "Element Submeshes");
+                if ( aGroup->ExistInternalObject( (char*) aDSName.c_str() ))
+                {
+                  aDataset = new HDFdataset( (char*) aDSName.c_str(), aGroup );
+                  aDataset->OpenOnDisk();
+                  // read submesh IDs for all elements sorted by ID
+                  int nbElems = aDataset->GetSize();
+                  int* smIDs = new int [ nbElems ];
+                  aDataset->ReadFromDisk( smIDs );
+                 aDataset->CloseOnDisk();
+
+                  // get elements sorted by ID
+                  ::SMESH_MeshEditor::TIDSortedElemSet elemSet;
+                  if ( isNode )
+                    while ( nIt->more() ) elemSet.insert( nIt->next() );
+                  else
+                    while ( eIt->more() ) elemSet.insert( eIt->next() );
+                  ASSERT( elemSet.size() == nbElems );
+
+                  // add elements to submeshes
+                  ::SMESH_MeshEditor::TIDSortedElemSet::iterator iE = elemSet.begin();
+                  for ( int i = 0; i < nbElems; ++i, ++iE )
+                  {
+                    int smID = smIDs[ i ];
+                    if ( smID == 0 ) continue;
+                    ASSERT( smID <= maxID );
+                    const SMDS_MeshElement* elem = *iE;
+                    // get or create submesh
+                    SMESHDS_SubMesh* & sm = subMeshes[ smID ];
+                    if ( ! sm ) {
+                      sm = mySMESHDSMesh->NewSubMesh( smID );
+                      smType[ smID ] = mySMESHDSMesh->IndexToShape( smID ).ShapeType();
+                    }
+                    // add
+                    if ( isNode ) {
+                      SMDS_PositionPtr pos = aPositionCreator.MakePosition( smType[ smID ]);
+                      pos->SetShapeId( smID );
+                      SMDS_MeshNode* node = const_cast<SMDS_MeshNode*>( static_cast<const SMDS_MeshNode*>( elem ));
+                      node->SetPosition( pos );
+                      sm->AddNode( node );
+                    } else {
+                      sm->AddElement( elem );
+                    }
+                  }
+                  delete smIDs;
+                }
+              }
+            } // end reading submeshes
 
             // Read node positions on sub-shapes (SMDS_Position)
 
@@ -2699,6 +2891,7 @@ bool SMESH_Gen_i::Load( SALOMEDS::SComponent_ptr theComponent,
                     nbFids = aSize;
                   }
                 }
+                aDataset->CloseOnDisk();
               } // loop on 5 datasets
 
               // Set node positions on edges or faces
index 6b4b358b74bbce597d59d8e8150586912849d8b0..05fe0727d0ca8b20160a17cf2ffc538d9bd420c3 100644 (file)
@@ -47,7 +47,8 @@
 class SMESH_Mesh_i;
 
 class SMESH_I_EXPORT SMESH_MEDMesh_i:
-       public virtual POA_SALOME_MED::MESH, public virtual SALOME::GenericObj_i
+  public virtual POA_SALOME_MED::MESH, 
+  public virtual SALOME::GenericObj_i
 {
 protected:
   // C++ object containing values
index 79617b615b38489a8a21d391b75e0b022ee306dd..1a87b258f72822f2040d7ae62886c749e4a17dad 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with this library; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 #include <gp_Ax2.hxx>
 #include <gp_Vec.hxx>
 
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+#define NO_CAS_CATCH
+#endif
+
+#include <Standard_Failure.hxx>
+
+#ifdef NO_CAS_CATCH
+#include <Standard_ErrorHandler.hxx>
+#else
+#include "CASCatch.hxx"
+#endif
+
 #include <sstream>
 
 typedef map<const SMDS_MeshElement*,
@@ -1052,15 +1064,20 @@ void SMESH_MeshEditor_i::ExtrusionSweep(const SMESH::long_array & theIDsOfElemen
   myLastCreatedElems = new SMESH::long_array();
   myLastCreatedNodes = new SMESH::long_array();
 
-  CASCatch_TRY {   
+#ifdef NO_CAS_CATCH
+  try {   
+    OCC_CATCH_SIGNALS;
+#else
+  CASCatch_TRY {
+#endif
     SMESHDS_Mesh* aMesh = GetMeshDS();
-    
+
     map<int,const SMDS_MeshElement*> elements;
     ToMap(theIDsOfElements, aMesh, elements);
 
     const SMESH::PointStruct * P = &theStepVector.PS;
     gp_Vec stepVec( P->x, P->y, P->z );
-    
+
     TElemOfElemListMap aHystory;
     ::SMESH_MeshEditor anEditor( _myMesh );
     anEditor.ExtrusionSweep (elements, stepVec, theNbOfSteps, aHystory);
@@ -1070,10 +1087,13 @@ void SMESH_MeshEditor_i::ExtrusionSweep(const SMESH::long_array & theIDsOfElemen
     // Update Python script
     TPythonDump() << "stepVector = " << theStepVector;
     TPythonDump() << this << ".ExtrusionSweep( "
-                 << theIDsOfElements << ", stepVector, " << theNbOfSteps << " )";
+                  << theIDsOfElements << ", stepVector, " << theNbOfSteps << " )";
 
-  }
-  CASCatch_CATCH(Standard_Failure) {
+#ifdef NO_CAS_CATCH
+  } catch(Standard_Failure) {
+#else
+  } CASCatch_CATCH(Standard_Failure) {
+#endif
     Handle(Standard_Failure) aFail = Standard_Failure::Caught();          
     INFOS( "SMESH_MeshEditor_i::ExtrusionSweep fails - "<< aFail->GetMessageString() );
   }
index d3647ca09fd242fb0ee9d6bb38c26e641246a4c6..13ed3ac891d890c147c9a0742bb93a2253c0faa5 100644 (file)
@@ -109,8 +109,7 @@ CORBA::Boolean SMESH_Pattern_i::LoadFromFile(const char* theFileContents)
   // remove some gabage from the end
   TCollection_AsciiString patternDescription = (char*) theFileContents;
   int pos = patternDescription.Length();
-  char test = patternDescription.Value( pos );
-  while (! isdigit( (unsigned char)patternDescription.Value( pos )))
+  while (! isdigit( patternDescription.Value( pos )))
     pos--;
   if ( pos != patternDescription.Length() ) {
     patternDescription.Trunc( pos );
index ce5a54fd30c2693041ade5d9bcf17b8b7ff8d9a7..f55e19c54f391f35178c665b09c4d05d50d34a5b 100644 (file)
@@ -62,6 +62,7 @@ EXPORT_PYSCRIPTS = libSMESH_Swig.py \
                   ex17_dome1.py \
                   ex18_dome2.py \
                   ex19_sphereINcube.py \
+                  ex21_lamp.py \
                    SMESH_test.py\
                    SMESH_test0.py\
                   SMESH_test1.py \
index 34d0df8531f938fb2de2d1471fb5d335829b43cd..6cfb7559784da6f7d36561980c09c3a634ecea29 100644 (file)
 //  $Header$
 
 #include "StdMeshers_Distribution.hxx"
-#include "CASCatch.hxx"
 
 #include <math_GaussSingleIntegration.hxx>
 #include <utilities.h>
 
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+#define NO_CAS_CATCH
+#endif
+
+#include <Standard_Failure.hxx>
+
+#ifdef NO_CAS_CATCH
+#include <Standard_ErrorHandler.hxx>
+#else
+#include "CASCatch.hxx"
+#endif
+
 Function::Function( const int conv )
 : myConv( conv )
 {
@@ -44,14 +55,19 @@ Function::~Function()
 bool Function::value( const double, double& f ) const
 {
   bool ok = true;
-  if( myConv==0 )
-  {
-    CASCatch_TRY
-    {
+  if (myConv == 0) {
+#ifdef NO_CAS_CATCH
+    try {
+      OCC_CATCH_SIGNALS;
+#else
+    CASCatch_TRY {
+#endif
       f = pow( 10., f );
-    }
-    CASCatch_CATCH(Standard_Failure)
-    {
+#ifdef NO_CAS_CATCH
+    } catch(Standard_Failure) {
+#else
+    } CASCatch_CATCH(Standard_Failure) {
+#endif
       Handle(Standard_Failure) aFail = Standard_Failure::Caught();
       f = 0.0;
       ok = false;
@@ -145,7 +161,7 @@ double FunctionTable::integral( const double a, const double b ) const
 
 bool FunctionTable::findBounds( const double x, int& x_ind_1, int& x_ind_2 ) const
 {
-  int n = myData.size();
+  int n = myData.size() / 2;
   if( n==0 || x<myData[0] )
   {
     x_ind_1 = x_ind_2 = 0;
@@ -170,13 +186,19 @@ FunctionExpr::FunctionExpr( const char* str, const int conv )
   myValues( 1, 1 )
 {
   bool ok = true;
-  CASCatch_TRY
-  {
+#ifdef NO_CAS_CATCH
+  try {
+    OCC_CATCH_SIGNALS;
+#else
+  CASCatch_TRY {
+#endif
     myExpr = ExprIntrp_GenExp::Create();
     myExpr->Process( ( Standard_CString )str );
-  }
-  CASCatch_CATCH(Standard_Failure)
-  {
+#ifdef NO_CAS_CATCH
+  } catch(Standard_Failure) {
+#else
+  } CASCatch_CATCH(Standard_Failure) {
+#endif
     Handle(Standard_Failure) aFail = Standard_Failure::Caught();
     ok = false;
   }
@@ -206,10 +228,18 @@ bool FunctionExpr::value( const double t, double& f ) const
 
   ( ( TColStd_Array1OfReal& )myValues ).ChangeValue( 1 ) = t;
   bool ok = true;
+#ifdef NO_CAS_CATCH
+  try {
+    OCC_CATCH_SIGNALS;
+#else
   CASCatch_TRY {
+#endif
     f = myExpr->Expression()->Evaluate( myVars, myValues );
-  }
-  CASCatch_CATCH(Standard_Failure) {
+#ifdef NO_CAS_CATCH
+  } catch(Standard_Failure) {
+#else
+  } CASCatch_CATCH(Standard_Failure) {
+#endif
     Handle(Standard_Failure) aFail = Standard_Failure::Caught();
     f = 0.0;
     ok = false;
@@ -222,14 +252,21 @@ bool FunctionExpr::value( const double t, double& f ) const
 double FunctionExpr::integral( const double a, const double b ) const
 {
   double res = 0.0;
-  CASCatch_TRY
-  {
-    math_GaussSingleIntegration _int( ( math_Function& )*this, a, b, 20 );
+#ifdef NO_CAS_CATCH
+  try {
+    OCC_CATCH_SIGNALS;
+#else
+  CASCatch_TRY {
+#endif
+    math_GaussSingleIntegration _int
+      ( *static_cast<math_Function*>( const_cast<FunctionExpr*> (this) ), a, b, 20 );
     if( _int.IsDone() )
       res = _int.Value();
-  }
-  CASCatch_CATCH(Standard_Failure)
-  {
+#ifdef NO_CAS_CATCH
+  } catch(Standard_Failure) {
+#else
+  } CASCatch_CATCH(Standard_Failure) {
+#endif
     res = 0.0;
     MESSAGE( "Exception in integral calculating" );
   }
index 76cd67965ccfda360d1dfd8f9ab4c64f322a2e8a..f4819f92c0fd0ec66996ad502700954cdc1c6ba9 100644 (file)
@@ -33,8 +33,6 @@
 #include "SMESHDS_SubMesh.hxx"
 #include "SMESH_Mesh.hxx"
 
-#include "CASCatch.hxx"
-
 #include <ExprIntrp_GenExp.hxx>
 #include <Expr_Array1OfNamedUnknown.hxx>
 #include <Expr_NamedUnknown.hxx>
 #include <TopExp.hxx>
 #include <TopTools_IndexedMapOfShape.hxx>
 
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+#define NO_CAS_CATCH
+#endif
+
+#include <Standard_Failure.hxx>
+
+#ifdef NO_CAS_CATCH
+#include <Standard_ErrorHandler.hxx>
+#else
+#include "CASCatch.hxx"
+#endif
+
 using namespace std;
 
 const double PRECISION = 1e-7;
@@ -218,12 +228,18 @@ void StdMeshers_NumberOfSegments::SetTableFunction(const std::vector<double>& ta
     double val = table[i*2+1];
     if( _convMode==0 )
     {
-      CASCatch_TRY
-      {
+#ifdef NO_CAS_CATCH
+      try {
+        OCC_CATCH_SIGNALS;
+#else
+      CASCatch_TRY {
+#endif
        val = pow( 10.0, val );
-      }
-      CASCatch_CATCH(Standard_Failure)
-      {
+#ifdef NO_CAS_CATCH
+      } catch(Standard_Failure) {
+#else
+      } CASCatch_CATCH(Standard_Failure) {
+#endif
        Handle(Standard_Failure) aFail = Standard_Failure::Caught();
        throw SALOME_Exception( LOCALIZED( "invalid value"));
        return;
@@ -312,13 +328,19 @@ bool process( const TCollection_AsciiString& str, int convMode,
 {
   bool parsed_ok = true;
   Handle( ExprIntrp_GenExp ) myExpr;
-  CASCatch_TRY
-  {
+#ifdef NO_CAS_CATCH
+  try {
+    OCC_CATCH_SIGNALS;
+#else
+  CASCatch_TRY {
+#endif
     myExpr = ExprIntrp_GenExp::Create();
     myExpr->Process( str.ToCString() );
-  }
-  CASCatch_CATCH(Standard_Failure)
-  {
+#ifdef NO_CAS_CATCH
+  } catch(Standard_Failure) {
+#else
+  } CASCatch_CATCH(Standard_Failure) {
+#endif
     Handle(Standard_Failure) aFail = Standard_Failure::Caught();
     parsed_ok = false;
   }
index 9e76b7ba9d3cfe2611e4aeb2c73bf5ca9e8e413e..e7f45cd66da0320742cbcc35e7ccf273d7d32eda 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with this library; if not, write to the Free Software 
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
 // 
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 
 #include "StdMeshers_Regular_1D.hxx"
 #include "StdMeshers_Distribution.hxx"
-#include "SMESH_Gen.hxx"
-#include "SMESH_Mesh.hxx"
-#include "SMESH_HypoFilter.hxx"
-#include "SMESH_subMesh.hxx"
 
 #include "StdMeshers_LocalLength.hxx"
 #include "StdMeshers_NumberOfSegments.hxx"
 #include "StdMeshers_Deflection1D.hxx"
 #include "StdMeshers_AutomaticLength.hxx"
 
+#include "SMESH_Gen.hxx"
+#include "SMESH_Mesh.hxx"
+#include "SMESH_HypoFilter.hxx"
+#include "SMESH_subMesh.hxx"
+
 #include "SMDS_MeshElement.hxx"
 #include "SMDS_MeshNode.hxx"
 #include "SMDS_EdgePosition.hxx"
 #include <GCPnts_AbscissaPoint.hxx>
 #include <GCPnts_UniformAbscissa.hxx>
 #include <GCPnts_UniformDeflection.hxx>
-#include <Standard_ErrorHandler.hxx>
 #include <Precision.hxx>
 #include <Expr_GeneralExpression.hxx>
 #include <Expr_NamedUnknown.hxx>
 #include <Expr_Array1OfNamedUnknown.hxx>
-#include <TColStd_Array1OfReal.hxx>
 #include <ExprIntrp_GenExp.hxx>
+#include <TColStd_Array1OfReal.hxx>
 #include <OSD.hxx>
 
+#include <Standard_ErrorHandler.hxx>
+#include <Standard_Failure.hxx>
+
 #include <string>
 #include <math.h>
 
@@ -570,6 +573,9 @@ bool StdMeshers_Regular_1D::Compute(SMESH_Mesh & aMesh, const TopoDS_Shape & aSh
     if ( !_mainEdge.IsNull() )
       reversed = aMesh.IsReversedInChain( EE, _mainEdge );
     try {
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+      OCC_CATCH_SIGNALS;
+#endif
       if ( ! computeInternalParameters( E, params, reversed )) {
         //cout << "computeInternalParameters() failed" <<endl;
         return false;
index e1a410cbaaa36e60cb73d82112ab522f4e641c4e..482aeb6be4bd01a31736297b15d0e8833383bb25 100644 (file)
 //
 
 #include "StdMeshersGUI_DistrPreview.h"
-#include "CASCatch.hxx"
 
 #include <Expr_NamedUnknown.hxx>
 #include <Expr_GeneralExpression.hxx>
 
+#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
+#define NO_CAS_CATCH
+#endif
+
+#include <Standard_Failure.hxx>
+
+#ifdef NO_CAS_CATCH
+#include <Standard_ErrorHandler.hxx>
+#else
+#include "CASCatch.hxx"
+#endif
+
 StdMeshersGUI_DistrPreview::StdMeshersGUI_DistrPreview( QWidget* p, StdMeshers::StdMeshers_NumberOfSegments_ptr h )
 : QwtPlot( p ),
   myPoints( 50 ),
@@ -240,12 +251,18 @@ void StdMeshersGUI_DistrPreview::update()
   delete[] y;
   x = y = 0;
 
-  CASCatch_TRY
-  {   
+#ifdef NO_CAS_CATCH
+  try {   
+    OCC_CATCH_SIGNALS;
+#else
+  CASCatch_TRY {
+#endif
     replot();
-  }
-  CASCatch_CATCH(Standard_Failure)
-  {
+#ifdef NO_CAS_CATCH
+  } catch(Standard_Failure) {
+#else
+  } CASCatch_CATCH(Standard_Failure) {
+#endif
     Handle(Standard_Failure) aFail = Standard_Failure::Caught();
   }
 }
@@ -285,13 +302,19 @@ bool isCorrectArg( const Handle( Expr_GeneralExpression )& expr )
 bool StdMeshersGUI_DistrPreview::init( const QString& str )
 {
   bool parsed_ok = true;
-  CASCatch_TRY
-  {
+#ifdef NO_CAS_CATCH
+  try {
+    OCC_CATCH_SIGNALS;
+#else
+  CASCatch_TRY {
+#endif
     myExpr = ExprIntrp_GenExp::Create();
     myExpr->Process( ( Standard_CString ) str.latin1() );
-  }
-  CASCatch_CATCH(Standard_Failure)
-  {
+#ifdef NO_CAS_CATCH
+  } catch(Standard_Failure) {
+#else
+  } CASCatch_CATCH(Standard_Failure) {
+#endif
     Handle(Standard_Failure) aFail = Standard_Failure::Caught();
     parsed_ok = false;
   }
@@ -327,10 +350,18 @@ double StdMeshersGUI_DistrPreview::calc( bool& ok )
   double res = 0.0;
 
   ok = true;
-  CASCatch_TRY {   
+#ifdef NO_CAS_CATCH
+  try {   
+    OCC_CATCH_SIGNALS;
+#else
+  CASCatch_TRY {
+#endif
     res = myExpr->Expression()->Evaluate( myVars, myValues );
-  }
-  CASCatch_CATCH(Standard_Failure) {
+#ifdef NO_CAS_CATCH
+  } catch(Standard_Failure) {
+#else
+  } CASCatch_CATCH(Standard_Failure) {
+#endif
     Handle(Standard_Failure) aFail = Standard_Failure::Caught();
     ok = false;
     res = 0.0;
@@ -351,16 +382,22 @@ bool StdMeshersGUI_DistrPreview::convert( double& v ) const
   {
   case EXPONENT:
     {
-      CASCatch_TRY
-      { 
+#ifdef NO_CAS_CATCH
+      try { 
+        OCC_CATCH_SIGNALS;
+#else
+      CASCatch_TRY {
+#endif
        // in StdMeshers_NumberOfSegments.cc
        // const double PRECISION = 1e-7;
        //
        if(v < -7) v = -7.0;
        v = pow( 10.0, v );
-      }
-      CASCatch_CATCH(Standard_Failure)
-      {
+#ifdef NO_CAS_CATCH
+      } catch(Standard_Failure) {
+#else
+      } CASCatch_CATCH(Standard_Failure) {
+#endif
        Handle(Standard_Failure) aFail = Standard_Failure::Caught();
        v = 0.0;
        ok = false;
index ab8e80f0312d577158ece039e85620c15cc303ee..2a72a84d587b46ef72aef39f8cbcb548cb453140 100644 (file)
@@ -86,7 +86,7 @@ LIB_CLIENT_IDL = \
        SALOMEDS.idl SALOME_Exception.idl \
        GEOM_Gen.idl MED.idl SALOMEDS_Attributes.idl \
        SMESH_Gen.idl SMESH_Hypothesis.idl SMESH_Group.idl \
-       SALOME_Comm.idl
+       SALOME_Comm.idl SALOME_Component.idl SALOME_GenericObj.idl SMESH_Mesh.idl
 
 # Executables targets
 BIN =